Qu’est-ce qu’un pare-feu et comment fonctionne-t-il?

introduction

Un pare-feu est un système qui assure la sécurité du réseau en filtrant le trafic réseau entrant et sortant en fonction d'un ensemble de règles définies par l'utilisateur. En général, un pare-feu a pour objectif de réduire ou d'éliminer l'occurrence de communications réseau indésirables tout en permettant à toutes les communications légitimes de circuler librement. Dans la plupart des infrastructures de serveur, les pare-feu constituent une couche de sécurité essentielle qui, combinée à d’autres mesures, empêche les pirates d’accéder à vos serveurs de manière malveillante.

Ce guide abordera le fonctionnement des pare-feu, en se concentrant sur les pare-feu logiciels destateful, tels que iptables et FirewallD, en ce qui concerne les serveurs cloud. Nous allons commencer par une brève explication des paquets TCP et des différents types de pare-feu. Nous aborderons ensuite divers sujets pertinents aux pare-feu dynamiques. Enfin, nous fournirons des liens vers d'autres didacticiels qui vous aideront à configurer un pare-feu sur votre propre serveur.

Paquets de réseau TCP

Avant d’examiner les différents types de pare-feu, examinons rapidement le trafic réseau TCP (Transport Control Protocol).

Le trafic réseau TCP se déplace sur un réseau enpackets, qui sont des conteneurs constitués d'un en-tête de paquet - il contient des informations de contrôle telles que les adresses source et de destination, et des informations de séquence de paquets - et les données (également appelées charge utile) . Bien que les informations de contrôle de chaque paquet aident à garantir que les données qui lui sont associées soient correctement remises, les éléments qu'il contient fournissent également aux pare-feu de nombreuses façons de faire correspondre les paquets aux règles de pare-feu.

Il est important de noter que pour recevoir correctement les paquets TCP entrants, le destinataire doit renvoyer les paquets d'accusé de réception sortants à l'expéditeur. La combinaison des informations de contrôle dans les paquets entrants et sortants peut être utilisée pour déterminer l’état de la connexion (par ex. nouvelle, établie, liée) entre l'expéditeur et le destinataire.

Types de pare-feu

Voyons rapidement les trois types de pare-feu de base du réseau: filtrage de paquets (sans état), état et couche d’application.

Le filtrage de paquets ou les pare-feu sans état fonctionnent en inspectant des paquets individuels de manière isolée. En tant que tels, ils ne sont pas conscients de l'état de la connexion et ne peuvent qu'autoriser ou refuser les paquets basés sur des en-têtes de paquets individuels.

Les pare-feu avec état permettent de déterminer l'état de connexion des paquets, ce qui les rend beaucoup plus souples que les pare-feu sans état. Ils travaillent en collectant les paquets associés jusqu'à ce que l'état de la connexion puisse être déterminé avant que des règles de pare-feu ne soient appliquées au trafic.

Les pare-feu applicatifs vont encore plus loin en analysant les données en cours de transmission, ce qui permet de faire correspondre le trafic réseau aux règles de pare-feu spécifiques à des services ou applications spécifiques. Ceux-ci sont également appelés pare-feu basés sur proxy.

Outre le logiciel de pare-feu, disponible sur tous les systèmes d'exploitation modernes, la fonctionnalité de pare-feu peut également être fournie par des périphériques matériels, tels que des routeurs ou des dispositifs de pare-feu. Encore une fois, notre discussion se concentrera sur les pare-feu logiciels destateful qui s'exécutent sur les serveurs qu'ils sont censés protéger.

Règles de pare-feu

Comme mentionné ci-dessus, le trafic réseau qui traverse un pare-feu est mis en correspondance avec des règles permettant de déterminer s'il doit être autorisé ou non. Un moyen simple d’expliquer l’apparence des règles de pare-feu est de montrer quelques exemples, c’est ce que nous allons faire maintenant.

Supposons que vous ayez un serveur avec cette liste de règles de pare-feu s'appliquant au trafic entrant:

  1. Accepter le trafic entrant nouveau et établi vers l'interface de réseau public sur les ports 80 et 443 (trafic Web HTTP et HTTPS)

  2. Transférez le trafic entrant des adresses IP des employés non techniques de votre bureau sur le port 22 (SSH)

  3. Acceptez le trafic entrant nouveau et établi de la plage IP de votre bureau à l'interface de réseau privé sur le port 22 (SSH)

Notez que le premier mot de chacun de ces exemples est «accepter», «rejeter» ou «abandonner». Cela spécifie l'action que le pare-feu doit effectuer dans le cas où un morceau de trafic réseau correspond à une règle. Accept signifie autoriser le trafic,reject signifie bloquer le trafic mais répondre par une erreur "inaccessible", etdrop signifie bloquer le trafic et ne pas envoyer de réponse. Le reste de chaque règle consiste en la condition à laquelle chaque paquet est mis en correspondance.

En fin de compte, le trafic réseau est mis en correspondance avec une liste de règles de pare-feu dans une séquence ou une chaîne, du premier au dernier. Plus spécifiquement, une fois la règle mise en correspondance, l'action associée est appliquée au trafic réseau en question. Dans notre exemple, si un employé de la comptabilité tentait d'établir une connexion SSH avec le serveur, il serait rejeté en fonction de la règle 2, avant même que la règle 3 ne soit vérifiée. Un administrateur système serait toutefois accepté car ils ne respecteraient que la règle 3.

Politique par défaut

Il est typique qu'une chaîne de règles de pare-feu ne couvre pas explicitement toutes les conditions possibles. Pour cette raison, une stratégie par défaut doit toujours être spécifiée dans les chaînes de pare-feu, consistant uniquement en une action (accepter, rejeter ou supprimer).

Supposons que la stratégie par défaut pour l'exemple de chaîne ci-dessus soit définie surdrop. Si un ordinateur situé en dehors de votre bureau tentait d'établir une connexion SSH avec le serveur, le trafic serait abandonné car il ne correspond à la condition d'aucune règle.

Si la stratégie par défaut était définie suraccept, n'importe qui, à l'exception de vos propres employés non techniques, serait en mesure d'établir une connexion à n'importe quel service ouvert sur votre serveur. Ce serait un exemple de pare-feu très mal configuré, car il ne garde qu'un sous-ensemble de vos employés.

Trafic entrant et sortant

Étant donné que le trafic réseau, du point de vue d'un serveur, peut être entrant ou sortant, un pare-feu maintient un ensemble de règles distinct pour les deux cas. Le trafic provenant d’autres sources (trafic entrant) est traité différemment du trafic sortant envoyé par le serveur. En règle générale, un serveur autorise la plupart du trafic sortant, car il est généralement digne de confiance. Néanmoins, le jeu de règles sortant peut être utilisé pour empêcher toute communication indésirable dans le cas où un serveur est compromis par un attaquant ou un exécutable malveillant.

Afin de maximiser les avantages en matière de sécurité d'un pare-feu, vous devez identifier toutes les manières dont vous souhaitez que les autres systèmes interagissent avec votre serveur, créer des règles qui les autorisent explicitement, puis supprimer tout autre trafic. N'oubliez pas que les règles sortantes appropriées doivent être en place pour qu'un serveur s'autorise à envoyer des accusés de réception à toutes les connexions entrantes appropriées. De plus, comme un serveur doit généralement initier son propre trafic sortant pour diverses raisons (par exemple, le téléchargement de mises à jour ou la connexion à une base de données), il est important d'inclure également ces cas dans votre ensemble de règles sortantes.

Écrire des règles sortantes

Supposons que notre exemple de pare-feu soit défini sur le trafic sortant dedrop par défaut. Cela signifie que nos règlesacceptentrantes seraient inutiles sans règles sortantes complémentaires.

Pour compléter les exemples de règles de pare-feu entrantes (1 et 3), de la sectionFirewall Rules, et permettre une communication appropriée sur ces adresses et ports, nous pourrions utiliser ces règles de pare-feu sortantes:

  1. Accepter le trafic sortant établi vers l'interface de réseau public sur les ports 80 et 443 (HTTP et HTTPS)

  2. Accepter le trafic sortant établi vers l'interface de réseau privé sur le port 22 (SSH)

Notez que nous n’avons pas besoin d’écrire explicitement une règle pour le trafic entrant abandonné (règle entrante 2) car le serveur n’a pas besoin d’établir ou d’accuser réception de cette connexion.

Logiciel et outils de pare-feu

Maintenant que nous avons examiné le fonctionnement des pare-feu, examinons les progiciels courants qui peuvent nous aider à mettre en place un pare-feu efficace. Bien qu'il existe de nombreux autres packages liés au pare-feu, ceux-ci sont efficaces et sont ceux que vous rencontrerez le plus souvent.

Iptables

Iptables est un pare-feu standard inclus par défaut dans la plupart des distributions Linux (une variante moderne appelée nftables commencera à le remplacer). Il s’agit en fait d’un frontal pour les hooks netfilter au niveau du noyau qui peuvent manipuler la pile réseau Linux. Cela fonctionne en faisant correspondre chaque paquet qui traverse l'interface réseau avec un ensemble de règles pour décider quoi faire.

Pour apprendre à mettre en place un pare-feu avec iptables, consultez ces liens:

UFW

UFW, qui signifie Uncomplicated Firewall (Pare-feu compliqué), est une interface pour iptables qui vise à simplifier le processus de configuration d'un pare-feu.

Pour en savoir plus sur l'utilisation d'UFW, consultez ce didacticiel:How To Setup a Firewall with UFW on an Ubuntu and Debian Cloud Server.

FirewallD

FirewallD est une solution de pare-feu complète disponible par défaut sur les serveurs CentOS 7. Par ailleurs, FirewallD utilise iptables pour configurer netfilter.

Pour en savoir plus sur l'utilisation de FirewallD, consultez ce didacticiel:How To Configure FirewallD to Protect Your CentOS 7 Server.

Si vous exécutez CentOS 7 mais que vous préférez utiliser iptables, suivez ce tutoriel:How To Migrate from FirewallD to Iptables on CentOS 7.

Fail2ban

Fail2ban est un logiciel de prévention des intrusions capable de configurer automatiquement votre pare-feu pour bloquer les tentatives de connexion brutales et les attaques DDOS.

Pour en savoir plus sur Fail2ban, consultez ces liens:

Conclusion

Maintenant que vous avez compris le fonctionnement des pare-feu, vous devriez envisager de mettre en place un pare-feu qui améliorera la sécurité de la configuration de votre serveur en utilisant les didacticiels ci-dessus.

Si vous souhaitez en savoir plus sur le fonctionnement des pare-feu, consultez ces liens: