Guide du débutant sur les commandes IPTables (pare-feu Linux)
Si vous utilisez des ordinateurs pendant un certain temps, vous devez être familier avec le mot « Pare-feu ». Nous savons que les choses semblent complexes à première vue, mais à travers ce tutoriel, nous allons expliquer la base d’IPTable et l’utilisation des commandes de base afin que même si vous êtes un étudiant en réseau ou que vous souhaitiez vous plonger dans les réseaux, vous puissiez bénéficier de ce guide.
Qu’est-ce qu’IPTables ?
Le fonctionnement du pare-feu est assez simple. Il crée une barrière entre les réseaux fiables et non fiables afin que votre système puisse être à l’abri des paquets malveillants.
Mais comment allons-nous décider de ce qui est sûr et de ce qui ne l’est pas ? Par défaut, vous disposez d’un certain privilège pour configurer des règles pour votre pare-feu, mais pour une surveillance plus détaillée des paquets entrants et sortants, les IPTables sont ce dont vous avez le plus besoin.
IPTables peut être utilisé pour l’informatique personnelle ou peut également être appliqué à l’ensemble du réseau. À l’aide d’IPTables, nous définirons un ensemble de règles par lesquelles nous pouvons surveiller, autoriser ou bloquer les paquets réseau entrants ou sortants.
Plutôt que de nous concentrer uniquement sur l’ensemble de la partie théorique, nous allons seulement discuter de ce qui compte dans le monde pratique. Commençons donc par comprendre les concepts de base d’IPTables.
Comprendre le concept d’IPTables
En discutant d’IPTables, nous devons comprendre 3 termes : Tables, Chaînes et Règles. Comme ce sont les parties importantes, nous allons discuter de chacune d’entre elles.
Commençons donc par les tables.
Tables dans IPTables
Il existe 5 types de tables dans IPTables et chacune a des règles différentes appliquées. Commençons donc par la table la plus courante « Fileur ».
- Table de filtrage – Il s’agit de la table par défaut et principale lors de l’utilisation d’IPTables. Cela signifie que chaque fois que vous ne mentionnez pas une table spécifique lors de l’application des règles, elles seront appliquées à la table de filtre. Comme son nom l’indique, le rôle de la table Filter est de décider si les packages doivent être autorisés à atteindre leur destination ou refuser leur demande.
- NAT (Network Address Translation) – Comme son nom l’indique, cette table permet aux utilisateurs de déterminer la traduction des adresses réseau. Le rôle de cette table est de déterminer s’il faut modifier et comment modifier la source et la destination de l’adresse du paquet.
- Mangle Table – Cette table nous permet de modifier les en-têtes IP des paquets. Par exemple, vous pouvez ajuster la durée de vie pour allonger ou raccourcir les sauts de réseau que le paquet peut supporter. De même, d’autres en-têtes IP peuvent également être modifiés selon vos préférences.
- Table RAW – L’utilisation principale de cette table est de suivre les connexions, car elle fournit un mécanisme de marquage des paquets pour afficher les paquets dans le cadre d’une session en cours.
- Table de sécurité : à l’aide de la table de sécurité, les utilisateurs peuvent appliquer des marques de contexte de sécurité SELinux internes sur les paquets réseau.
Pour la plupart des cas d’utilisation, les 2 derniers types (RAW et Security) de la table n’ont pas grand-chose à faire et seules les 3 premières options sont comptées comme tables principales.
Parlons maintenant des chaînes.
Chaînes dans IPTables
Ils se comportent à des points du tracé du réseau où nous pouvons appliquer des règles. Dans IPTables, nous avons 5 types de chaînes et nous allons aborder chacune d’entre elles. Gardez à l’esprit que tous les types de chaîne ne sont pas disponibles pour chaque type de table.
- Pré-routage – Cette chaîne est appliquée à tout paquet entrant une fois qu’il est entré dans la pile réseau et cette chaîne est traitée avant même qu’une décision de routage n’ait été prise concernant la destination finale du paquet.
- Chaîne d’entrée – C’est le point où un paquet entre dans la pile réseau.
- Chaîne avant – C’est le point où le paquet a été transféré via votre système.
- Chaîne de sortie : la chaîne de sortie est appliquée au paquet lorsqu’il provient de votre système et qu’il sort.
- Post-routage : il s’agit de l’opposé complet de la chaîne de pré-routage et est appliqué aux paquets transférés ou sortants une fois que la décision de routage a été prise.
Maintenant, la seule chose qui reste à discuter est les règles, et c’est la plus simple des 3 dont nous avons discuté ici. Complétons donc ce qui reste sur la partie théorique.
Règles dans IPTables
Les règles ne sont rien d’autre que des commandes définies ou individuelles par lesquelles les utilisateurs manipulent le trafic réseau. Une fois que chaque chaîne entrera en action, le paquet sera vérifié par rapport à des règles définies.
Si une règle ne satisfait pas à la condition, elle sera passée à la suivante et si elle satisfait à la condition, la règle suivante sera spécifiée par la valeur de la cible.
Chaque règle comporte deux composants : le composant correspondant et le composant cible.
- Composant de correspondance – Il s’agit de conditions différentes pour définir des règles qui peuvent être mises en correspondance par le protocole, l’adresse IP, l’adresse de port, les interfaces et les en-têtes.
- Composant cible – Il s’agit d’une action qui sera déclenchée une fois que les conditions sont remplies.
C’était la partie explication et maintenant nous allons couvrir les commandes de base liées à IPTables sous Linux.
Installation d’IPTables Firewall sous Linux
Dans les distributions Linux modernes telles que Pop !_OS, IPTables est préinstallé, mais si votre système ne dispose pas du paquet IPTables, vous pouvez facilement l’installer en suivant les instructions données :
Pour installer IPTables sur des distributions Linux basées sur RHEL telles que Rocky Linux, AlmaLinux et CentOS Stream, utilisez la commande dnf suivante.
$ sudo dnf install iptables-services
Important : Si vous utilisez Firewalld, vous devrez le désactiver avant de procéder à l’installation. Pour arrêter complètement le pare-feu, vous devrez utiliser les commandes suivantes :
$ sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl mask firewalld
Pour installer IPTables sur des distributions Linux basées sur Debian, utilisez la commande apt suivante.
$ sudo apt install iptables
Une fois que vous avez installé IPTables, vous pouvez activer le pare-feu à l’aide des commandes suivantes :
$ sudo systemctl enable iptables
sudo systemctl start iptables
Pour surveiller l’état du service IPTable, vous pouvez utiliser la commande donnée :
$ sudo systemctl status iptables
Apprendre les bases de la commande IPTables sous Linux
Une fois l’installation terminée, nous pouvons procéder à la syntaxe d’IPTables qui vous permettra de modifier les paramètres par défaut et de configurer selon vos besoins.
La syntaxe de base d’IPTables est la suivante :
# iptables -t {type of table} -options {chain points} {condition or matching component} {action}
Comprenons l’explication de la commande ci-dessus :
Table
La première partie est -t où nous pouvons choisir parmi 5 options de table disponibles et si vous supprimez la partie -t de la commande, elle utilisera la table de filtrage car c’est le type de table par défaut.
Options de chaîne
La deuxième partie est pour la chaîne. Ici, vous pouvez choisir parmi différentes options de points de chaîne et ces options sont indiquées ci-dessous :
-A– Ajoute une nouvelle règle à la chaîne à la fin de la chaîne.-C– Vérifie si la règle satisfait à l’exigence de la chaîne.-D– Permet aux utilisateurs de supprimer une règle existante de la chaîne.-F– Cela supprimera chaque règle définie par l’utilisateur.-I– Permet aux utilisateurs d’ajouter une nouvelle règle à la position spécifiée.-N– Crée une chaîne entièrement nouvelle.-v– Lorsqu’il est utilisé avec l’option de liste, apporte des informations détaillées.-X– Supprime la chaîne.
Composant correspondant
Les options de correspondance sont la condition pour vérifier les exigences de la chaîne. Vous pouvez choisir parmi différentes options et certaines d’entre elles sont indiquées ci-dessous :
Protocols -p
Source IP -s
Destination IP -d
IN interface -i
OUT interface -o
Pour TCP, ils sont les suivants :
-sport
-dport
--tcp-flags
Volet d’action
Maintenant, si nous considérons la partie action, les options disponibles dépendent du type de table telle que NAT, et la table mangle a plus d’options que les autres. À l’aide de l’action, vous pouvez également cibler une table ou une chaîne spécifique.
L’action la plus utilisée est Jump (-j) qui nous donnera plusieurs options telles que :
- ACCEPT – Il est utilisé pour accepter les paquets et les traversées finales.
- DROP – Il est utilisé pour supprimer des paquets et terminer le voyage.
- REJECT – C’est assez similaire à DROP, mais il envoie les paquets rejetés à la source.
- RETURN – Cela arrêtera le passage du paquet dans la sous-chaîne et enverra le paquet spécifique à la chaîne supérieure sans effet.
Une fois que nous en aurons terminé avec la syntaxe, nous vous montrerons comment vous pouvez utiliser IPTables, y compris la configuration de base.
Liste de l’ensemble actuel des règles d’IPTables
Si vous souhaitez vérifier ce qui passe par défaut par votre pare-feu, la liste d’un ensemble actuel de règles est un moyen parfait. Pour lister les règles appliquées, utilisez la commande donnée :
$ sudo iptables -L
Autoriser/Refuser le trafic réseau sur des ports spécifiques
Dans cette section, nous allons vous montrer comment vous pouvez autoriser ou refuser le trafic réseau pour des ports spécifiques. Nous allons vous montrer quelques ports bien connus car nous voulons être aussi utiles que possible.
Si vous souhaitez autoriser le trafic réseau HTTPS, nous devrons autoriser le port n° 443 en utilisant la commande donnée :
$ sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
De même, vous pouvez également désactiver le trafic Web HTTP à l’aide d’une commande donnée :
$ sudo iptables -A INPUT -p tcp --dport 80 -j REJECT
Explication des options de commande utilisées :
-pest utilisé pour vérifier le protocole spécifié et dans notre cas, c’est TCP.--dportest utilisé pour spécifier le port de destination.-jest utilisé pour effectuer une action (accepter ou abandonner).
Contrôler le trafic avec l’adresse IP
Oui, vous pouvez également contrôler le trafic réseau à partir d’une adresse IP. Pas seulement un ou deux, mais contrôlez également la plage d’adresses IP et nous allons vous montrer comment.
Pour autoriser une adresse IP spécifique, utilisez la structure de commande donnée :
$ sudo iptables -A INPUT -s 69.63.176.13 -j ACCEPT
De même, pour supprimer des paquets à partir d’une adresse IP spécifique, vous devez utiliser la structure de commande donnée :
$ sudo iptables -A INPUT -s 192.168.0.27 -j DROP
Si vous le souhaitez, vous pouvez également contrôler la plage d’adresses IP en utilisant la structure de commande donnée :
$ sudo iptables -A INPUT -m range --src-range 192.168.0.1-192.168.0.255 -j REJECT
Supprimer la règle définie par l’utilisateur
Parfois, nous pouvons finir par faire des erreurs lors de la création de règles et la meilleure façon de surmonter ces erreurs est de les supprimer. La suppression des règles définies est le processus le plus simple tout au long de ce guide et pour les supprimer, nous devrons d’abord les énumérer.
Pour lister des règles définies avec des nombres, utilisez la commande donnée :
$ sudo iptables -L --line-numbers
Pour supprimer des règles, nous devrons suivre la structure de commande donnée :
$ sudo iptables -D <INPUT/FORWARD/OUTPUT> <Number>
Supposons que je veuille supprimer la 10e règle de INPUT afin d’utiliser la commande donnée :
$ sudo iptables -D INPUT 10
Pour vérifier si nous avons réussi à supprimer la règle, nous devons lister les règles par commande donnée :
$ sudo iptables -L –line-numbers
Comme vous pouvez le voir, nous avons réussi à supprimer la règle 10.
Enregistrer les règles IPTables définies
Vous vous demandez peut-être pourquoi nous devons enregistrer les règles là où elles fonctionnent correctement après les avoir appliquées ? Le problème est qu’une fois que votre système redémarre, toutes les règles définies qui ne sont pas enregistrées seront supprimées, il est donc crucial pour nous de les faire.
Pour enregistrer des règles dans des distributions basées sur RHEL :
$ sudo /sbin/service iptables save
Pour enregistrer les règles dans les dérivés de Debian :
$ sudo /sbin/iptables–save
Pour en savoir plus sur les règles IPtable Firewall, consultez notre guide détaillé à l’adresse suivante :
- 25 règles de pare-feu IPtable utiles que tout administrateur Linux devrait connaître
Tout au long de ce guide, nous avons essayé de simplifier les choses pour que tout le monde puisse en bénéficier. Il s’agissait d’un guide d’explication de base sur IPTables et si vous avez des questions, n’hésitez pas à les poser dans les commentaires.



