Introduction
A firewall is a system that provides network security by filtering incoming and outgoing network traffic based on a set of user-defined rules. In general, the purpose of a firewall is to reduce or eliminate the occurrence of unwanted network communications while allowing all legitimate communication to flow freely. In most server infrastructures, firewalls provide an essential layer of security that, combined with other measures, prevent attackers from accessing your servers in malicious ways.
Ce guide traitera du fonctionnement des pare-feu, en mettant l’accent sur les pare-feu logiciels stateful, tels que iptables et FirewallD, en relation avec les serveurs cloud. Nous commencerons par une brève explication des paquets TCP et des différents types de pare-feu. Ensuite, nous discuterons de divers sujets pertinents pour les pare-feu stateful. Enfin, nous fournirons des liens vers d’autres tutoriels qui vous aideront à configurer un pare-feu sur votre propre serveur.
Paquets Réseau TCP
Avant de discuter des différents types de pare-feu, jetons un coup d’œil rapide à ce à quoi ressemble le trafic réseau du protocole de contrôle de transmission (TCP).
Le trafic réseau TCP se déplace autour d’un réseau sous forme de paquets, qui sont des conteneurs constitués d’un en-tête de paquet – cela contient des informations de contrôle telles que les adresses source et destination, et les informations de séquence de paquets – et les données (également appelées charge utile). Alors que les informations de contrôle dans chaque paquet aident à garantir que ses données associées sont livrées correctement, les éléments qu’il contient fournissent également aux pare-feu diverses façons de faire correspondre les paquets aux règles du pare-feu.
Il est important de noter que pour recevoir avec succès les paquets TCP entrants, le récepteur doit renvoyer des 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 exemple, nouveau, établi, lié) entre l’expéditeur et le récepteur.
Types de pare-feu
Discutons rapidement des trois types de base de pare-feu réseau : filtrage de paquets (sans état), étatique et de couche d’application.
Les pare-feu de filtrage de paquets, ou sans état, fonctionnent en inspectant les paquets individuellement. En tant que tels, ils ne sont pas conscients de l’état de la connexion et ne peuvent autoriser ou refuser les paquets qu’en fonction des en-têtes de paquet individuels.
Les pare-feu étatiques sont capables de déterminer l’état de la connexion des paquets, ce qui les rend beaucoup plus flexibles que les pare-feu sans état. Ils fonctionnent en collectant les paquets lié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 d’application vont encore plus loin en analysant les données transmises, ce qui permet de faire correspondre le trafic réseau aux règles de pare-feu spécifiques à des services ou applications individuels. Ceux-ci sont également connus sous le nom de pare-feu basés sur proxy.
En plus des logiciels de pare-feu, disponibles sur tous les systèmes d’exploitation modernes, la fonctionnalité de pare-feu peut également être fournie par des dispositifs matériels, tels que des routeurs ou des appareils pare-feu. Encore une fois, notre discussion sera axée sur les pare-feu logiciels étatiques 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 comparé à des règles pour déterminer s’il doit être autorisé ou non. Un moyen facile d’expliquer à quoi ressemblent les règles de pare-feu est de montrer quelques exemples, nous allons donc le faire maintenant.
Supposons que vous ayez un serveur avec cette liste de règles de pare-feu qui s’appliquent au trafic entrant :
- Accepter le trafic entrant nouveau et établi sur l’interface réseau public sur les ports 80 et 443 (trafic web HTTP et HTTPS)
- Rejeter le trafic entrant des adresses IP des employés non techniques dans votre bureau vers le port 22 (SSH)
- Accepter le trafic entrant nouveau et établi de la plage IP de votre bureau sur l’interface réseau privé sur le port 22 (SSH)
Notez que le premier mot dans chacun de ces exemples est soit « accepter », « rejeter » ou « laisser tomber ». Cela spécifie l’action que le pare-feu doit effectuer en cas de correspondance d’un trafic réseau avec une règle. Accepter signifie autoriser le trafic, rejeter signifie bloquer le trafic mais répondre avec une erreur « inaccessible », et laisser tomber 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 confronté.
En fait, le trafic réseau est confronté à une liste de règles de pare-feu dans une séquence, ou chaîne, de la première à la dernière. Plus précisément, une fois qu’une règle est rencontrée, 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, cependant, serait accepté car il correspondrait uniquement à 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, les chaînes de pare-feu doivent toujours avoir une politique par défaut spécifiée, qui ne consiste qu’en une action (accepter, rejeter ou laisser tomber).
Supposez que la politique par défaut pour la chaîne d’exemple ci-dessus soit définie sur drop. Si un ordinateur extérieur à votre bureau tentait d’établir une connexion SSH avec le serveur, le trafic serait bloqué car il ne correspond à aucune des règles.
Si la politique par défaut était définie sur accept, n’importe qui, sauf vos propres employés non techniques, pourrait établir une connexion à n’importe quel service ouvert sur votre serveur. Ce serait un exemple de pare-feu très mal configuré car il n’empêche qu’une partie de vos employés.
Trafic Entrant et Sortant
Comme le trafic réseau, du point de vue d’un serveur, peut être soit entrant soit sortant, un pare-feu maintient un ensemble distinct de règles pour chaque cas. Le trafic qui provient d’ailleurs, le trafic entrant, est traité différemment du trafic sortant que le serveur envoie. Il est courant qu’un serveur autorise la plupart des flux sortants car le serveur se fait généralement confiance à lui-même. Cependant, l’ensemble de règles sortantes peut être utilisé pour empêcher toute communication non désirée dans le cas où un serveur serait compromis par un attaquant ou un exécutable malveillant.
Pour maximiser les avantages en matière de sécurité d’un pare-feu, vous devez identifier toutes les manières dont vous souhaitez que d’autres systèmes interagissent avec votre serveur, créer des règles qui les autorisent explicitement, puis rejeter tout autre trafic. Gardez à l’esprit que les règles sortantes appropriées doivent être en place afin qu’un serveur puisse se permettre d’envoyer des accusés de réception sortants à toutes les connexions entrantes appropriées. De plus, comme un serveur a généralement besoin d’initier son propre trafic sortant pour diverses raisons, par exemple pour télécharger des mises à jour ou se connecter à une base de données, il est important d’inclure ces cas dans votre ensemble de règles sortantes.
Écriture de règles sortantes
Supposons que notre pare-feu exemple soit configuré pour rejeter le trafic sortant par défaut. Cela signifie que nos règles d’acceptation entrantes (1 et 3), provenant de la section Règles de pare-feu, seraient inutiles sans des règles sortantes complémentaires.
Pour compléter les règles de pare-feu entrantes de l’exemple (1 et 3) et permettre une communication appropriée sur ces adresses et ports, nous pourrions utiliser ces règles de pare-feu sortantes :
- Accepter le trafic sortant établi vers l’interface réseau public sur les ports 80 et 443 (HTTP et HTTPS)
- Accepter le trafic sortant établi vers l’interface 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 qui est rejeté (règle entrante 2) car le serveur n’a pas besoin d’établir ou d’acknowledger cette connexion.
Logiciels et outils de pare-feu
Maintenant que nous avons examiné comment fonctionnent les pare-feu, jetons un coup d’œil aux packages logiciels courants qui peuvent nous aider à configurer un pare-feu efficace. Bien qu’il existe de nombreux autres packages liés aux pare-feu, ceux-ci sont efficaces et ce sont ceux que vous rencontrerez le plus souvent.
Iptables
Iptables est un pare-feu standard inclus dans la plupart des distributions Linux par défaut (une variante moderne appelée nftables commencera à le remplacer). C’est en fait une interface frontend pour les hooks netfilter au niveau du noyau qui peuvent manipuler la pile réseau Linux. Il fonctionne en faisant correspondre chaque paquet qui traverse l’interface réseau à un ensemble de règles pour décider quoi faire.
Pour apprendre comment implémenter un pare-feu avec iptables, consultez ces liens :
- Comment configurer un pare-feu avec IPTables sur Ubuntu 14.04
- Comment implémenter un modèle de pare-feu de base avec Iptables sur Ubuntu 14.04
- Comment configurer un pare-feu Iptables pour protéger le trafic entre vos serveurs
UFW
UFW, qui signifie pare-feu simplifié, est une interface vers iptables conçue pour simplifier le processus de configuration d’un pare-feu.
Pour en savoir plus sur l’utilisation de UFW, consultez ce tutoriel : Comment configurer un pare-feu avec UFW sur un serveur Cloud Ubuntu et Debian.
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 tutoriel : Comment configurer FirewallD pour protéger votre serveur CentOS 7.
Si vous utilisez CentOS 7 mais préférez utiliser iptables, suivez ce tutoriel: Comment migrer de FirewallD à Iptables sur CentOS 7.
Fail2ban
Fail2ban est un logiciel de prévention des intrusions qui peut automatiquement configurer votre pare-feu pour bloquer les tentatives de connexion par force brute et les attaques DDOS.
Pour en savoir plus sur Fail2ban, consultez ces liens:
- Comment Fail2ban protège les services sur un serveur Linux
- Comment protéger SSH avec Fail2Ban sur Ubuntu 14.04
- Comment protéger un serveur Nginx avec Fail2Ban sur Ubuntu 14.04
- Comment protéger un serveur Apache avec Fail2Ban sur Ubuntu 14.04
Conclusion
Maintenant que vous comprenez comment fonctionnent les pare-feu, vous devriez envisager de mettre en œuvre un pare-feu qui améliorera la sécurité de votre configuration de serveur en utilisant les tutoriels ci-dessus.
Si vous souhaitez en savoir plus sur le fonctionnement des pare-feu, consultez ces liens :
Source:
https://www.digitalocean.com/community/tutorials/what-is-a-firewall-and-how-does-it-work