Comment fonctionne le pare-feu Iptables

Introduction

La configuration d’un pare-feu est une étape essentielle pour sécuriser tout système d’exploitation moderne. La plupart des distributions Linux sont livrées avec quelques outils de pare-feu différents que vous pouvez utiliser pour configurer un pare-feu. Dans ce guide, nous allons couvrir le pare-feu iptables.

Iptables est un pare-feu standard inclus dans la plupart des distributions Linux par défaut. C’est une interface en ligne de commande pour les crochets netfilter au niveau du noyau qui peuvent manipuler la pile réseau Linux. Il fonctionne en faisant correspondre chaque paquet traversant l’interface réseau à un ensemble de règles pour décider de son sort.

Dans ce guide, vous examinerez comment fonctionne Iptables. Pour une approche plus approfondie, vous pouvez lire Une plongée approfondie dans l’architecture d’Iptables et Netfilter.

Comment fonctionne Iptables

Tout d’abord, examinons quelques termes et discutons du fonctionnement d’iptables.

Le pare-feu iptables fonctionne en comparant le trafic réseau par rapport à un ensemble de règles. Les règles définissent les caractéristiques qu’un paquet réseau doit avoir pour correspondre, et l’action qui doit être entreprise pour les paquets correspondants.

Il existe de nombreuses options pour déterminer quelles paquets correspondent à une règle spécifique. Vous pouvez faire correspondre le type de protocole du paquet, l’adresse ou le port source ou de destination, l’interface utilisée, sa relation avec les paquets précédents, et ainsi de suite.

Lorsque le motif défini correspond, l’action qui se produit est appelée une cible. Une cible peut être une décision de politique finale pour le paquet, telle que ACCEPT ou DROP. Elle peut également déplacer le paquet vers une autre chaîne pour traitement, ou enregistrer la rencontre. Il existe de nombreuses options.

Ces règles sont organisées en groupes appelés chaînes. Une chaîne est un ensemble de règles contre lequel un paquet est vérifié séquentiellement. Lorsque le paquet correspond à l’une des règles, il exécute l’action associée et ignore les règles restantes dans la chaîne.

A user can create chains as needed. There are three chains defined by default. They are:

  • INPUT: Cette chaîne gère tous les paquets adressés à votre serveur.
  • OUTPUT: Cette chaîne contient des règles pour le trafic créé par votre serveur.
  • FORWARD: Cette chaîne est utilisée pour traiter le trafic destiné à d’autres serveurs qui ne sont pas créés sur votre serveur. Cette chaîne est une manière de configurer votre serveur pour router les demandes vers d’autres machines.

Chaque chaîne peut contenir zéro ou plusieurs règles, et a une politique par défaut. La politique détermine ce qui se passe lorsqu’un paquet traverse toutes les règles de la chaîne et ne correspond à aucune règle. Vous pouvez soit laisser tomber le paquet, soit accepter le paquet s’il n’y a pas de correspondance avec les règles.

Iptables peut également suivre les connexions. Cela signifie que vous pouvez créer des règles qui définissent ce qui se passe à un paquet en fonction de sa relation avec les paquets précédents. La capacité est appelée « suivi d’état », « suivi de connexion » ou configuration de la « machine d’état ».

IPv4 versus IPv6

Le pare-feu netfilter inclus dans le noyau Linux maintient le trafic IPv4 et IPv6 complètement séparé. Les outils Iptables utilisés pour manipuler les tables contenant les ensembles de règles pare-feu sont également distincts. Si IPv6 est activé sur votre serveur, vous devrez configurer les deux tables pour gérer le trafic sur votre serveur.

Note : Nftables, successeur d’Iptables, intègre une gestion plus étroite d’IPv4 et IPv6. La commande iptables-translate peut être utilisée pour migrer les règles Iptables vers Nftables.

La commande régulière iptables est utilisée pour manipuler la table contenant les règles qui régissent le trafic IPv4. Pour le trafic IPv6, une commande compagnon appelée ip6tables est utilisée. Toutes les règles que vous définissez avec iptables n’affecteront que les paquets utilisant l’adressage IPv4, mais la syntaxe entre ces commandes est la même. La commande iptables établira les règles qui s’appliquent au trafic IPv4, et la commande ip6tables établira les règles qui s’appliquent au trafic IPv6. N’oubliez pas d’utiliser les adresses IPv6 de votre serveur pour élaborer les règles ip6tables.

Points à Garder à l’Esprit

Maintenant que vous savez comment iptables dirige les paquets qui passent par son interface – dirigez le paquet vers la chaîne appropriée, vérifiez-le contre chaque règle jusqu’à ce qu’une corresponde, émettez la politique par défaut de la chaîne si aucune correspondance n’est trouvée – vous pouvez commencer à créer des règles.

Tout d’abord, vous devez vous assurer d’avoir des règles pour maintenir les connexions actives si vous mettez en œuvre une politique de refus par défaut. C’est particulièrement important si vous êtes connecté à votre serveur via SSH. Si vous mettez accidentellement en œuvre une règle ou une politique qui interrompt votre connexion actuelle, vous devrez peut-être vous connecter à votre serveur en utilisant une console de récupération basée sur un navigateur.

Une autre chose à garder à l’esprit est que l’ordre des règles dans chaque chaîne est important. Un paquet ne doit pas rencontrer une règle plus générale qu’il correspond s’il est censé correspondre à une règle plus spécifique.

En raison de cela, les règles près du haut d’une chaîne devraient avoir un niveau de spécificité plus élevé que les règles en bas. Vous devez d’abord correspondre à des cas spécifiques, puis fournir des règles plus générales pour correspondre à des modèles plus larges. Si un paquet traverse l’ensemble de la chaîne (s’il ne correspond à aucune règle), il suivra la règle la plus générale, c’est-à-dire la politique par défaut.

Pour cette raison, la politique par défaut d’une chaîne dicte fortement les types de règles qui seront incluses dans la chaîne. Une chaîne avec la politique par défaut de ACCEPT contiendra des règles qui rejettent explicitement les paquets. Une chaîne qui a pour défaut DROP contiendra des exceptions pour les paquets qui devraient être spécifiquement acceptés.

Conclusion

À ce stade, vous êtes prêt à mettre en œuvre votre propre pare-feu. Pour cela, vous devriez lire Comment configurer un pare-feu en utilisant Nftables sur Ubuntu 22.04. Ou, pour une approche plus générale, Comment configurer un pare-feu avec UFW sur Ubuntu 22.04. Si vous préférez exécuter votre pare-feu en tant que couche de service gérée, vous pouvez également essayer les pare-feu cloud de DigitalOcean.

Source:
https://www.digitalocean.com/community/tutorials/how-the-iptables-firewall-works