Iptables est le pare-feu principal fourni par défaut avec la plupart des distributions Linux. Il est responsable de la gestion de la sécurité réseau. Il fonctionne en comparant les paquets de données à un ensemble de règles, en indiquant au système d'accepter, de refuser ou de transférer une connexion selon ces règles. Dans ce tutoriel, nous allons vous montrer comment lister et supprimer des règles, vérifier et effacer les compteurs de paquets et d'octets, et vider les chaînes. Prêt ? C'est parti !
Prérequis
Avant de commencer ce tutoriel, clarifions un point. Tous les trucs et astuces présentés dans ce guide sont réalisés sur une machine virtuelle distincte. C'est une excellente idée de faire de même, car cela élimine tout risque de transformer votre système en un véritable chaos. Ce n'est qu'après avoir maîtrisé ces processus que vous devriez essayer de les appliquer dans des situations réelles.
Pour ce tutoriel, nous utiliserons Ubuntu pour faire la démonstration de toutes les étapes. Cependant, elles devraient fonctionner de manière similaire quelle que soit la distribution.
Lister les règles
Lister les règles par spécification
Tout d'abord, vérifions toutes les règles actives par spécification. Exécutez la commande suivante :
|
1 |
sudo iptables -S |

Si vous avez déjà travaillé sur la création de règles iptables, vous avez peut-être remarqué la similitude. Les sorties ressemblent aux commandes utilisées pour les créer, à l'exception de la partie « iptables ». Elles partagent également une structure similaire à celle des fichiers de configuration des règles iptables.
Lister une chaîne spécifique
Essayons quelque chose de plus précis. Au lieu d'afficher toutes les règles iptables, demandez à iptables d'afficher les règles d'une chaîne spécifique. Par exemple, TCP, INPUT, OUTPUT, etc. Pour ce faire, spécifiez le nom de la chaîne après l'option « -S » :
|
1 |
sudo iptables -S <chaîne> |

Lister les règles sous forme de tableaux
La vue en tableau est utile pour comparer différentes règles. Utilisez l'option « -L » pour demander à iptables d'afficher toutes les règles actives sous forme de tableau :
|
1 |
sudo iptables -L |

La sortie contient toutes les règles actuelles triées par chaîne. Comme dans la section précédente, il est également possible de filtrer la sortie de la liste par une chaîne spécifique comme INPUT, TCP, OUTPUT, etc. Pour ce faire, spécifiez la chaîne après l'option « -L » :
|
1 |
sudo iptables -L <chaîne> |

Analysons un peu la sortie. Dans notre cas, en raison des règles, la sortie semblera un peu désordonnée. La première ligne de la sortie déclare le nom de la chaîne (INPUT) avec sa politique par défaut (DROP). La ligne suivante spécifie les en-têtes des colonnes du tableau. Le reste correspond aux règles de la chaîne. Voyons ce que les en-têtes indiquent :
- target : Si un paquet correspond à la règle, cette section définit l'action à effectuer. Il peut s'agir d'accepter le paquet, de le rejeter (drop), de l'enregistrer dans les journaux (log) ou de l'envoyer vers une autre chaîne.
- prot : Définit le protocole, par exemple, udp, tcp, icmp ou all.
- opt : Cette colonne indique les options IP. Elle est rarement utilisée.
- source : Origine du paquet (adresse IP ou sous-réseau). La valeur peut être spécifique ou anywhere.
- destination : Destination du paquet (adresse IP ou sous-réseau). La valeur peut être spécifique ou anywhere.
Si vous l'avez remarqué, la dernière colonne n'a pas d'étiquette. C'est parce qu'elle sert à indiquer les options d'une règle. Elle contiendra toutes les parties de la règle qui ne correspondaient pas aux champs précédents. Elle peut contenir n'importe quoi, des ports source/destination à l'état de connexion du paquet, etc.
Nombre de paquets et taille cumulée
Effacer les compteurs de paquets et d'octets
Lorsque nous listons les règles iptables, nous pouvons également vérifier le nombre de paquets et la taille cumulée des paquets en octets qui ont correspondu à chaque règle particulière. C'est une métrique utile lorsque vous avez besoin d'avoir une idée approximative des règles auxquelles les paquets correspondent.
Dans cet exemple, nous utiliserons la chaîne INPUT. Cette fois, ajoutez l'option « -v » qui correspond au mode verbeux :
|
1 |
sudo iptables -L INPUT -v |

Vous remarquerez que la sortie du tableau comprend désormais deux champs supplémentaires : pkts et bytes.
Réinitialiser le nombre de paquets et la taille cumulée
Dans certaines situations, vous souhaiterez peut-être réinitialiser les compteurs présentés précédemment. Si le système est redémarré, les compteurs se réinitialiseront automatiquement. Vous pouvez également forcer manuellement une réinitialisation. Nous utiliserons l'option « -Z » pour réinitialiser le nombre de paquets et la taille cumulée :
|
1 |
sudo iptables -v -Z |

Notez que cette commande réinitialisera les compteurs de toutes les chaînes. Comme pour les autres commandes, il est possible de réinitialiser le compteur pour des chaînes spécifiques. Par exemple, la commande suivante réinitialisera les compteurs pour la chaîne INPUT :
|
1 |
sudo iptables -v -Z <chaîne> |

Il est possible de rendre l'action de réinitialisation du compteur plus précise. Vous pouvez réinitialiser le compteur pour une règle spécifique sous une chaîne spécifique. Pour ce faire, ajoutez le numéro de la règle après le nom de la chaîne :
|
1 |
sudo iptables -v -Z <chaîne> <numéro_règle> |
Supprimer des règles
Supprimer des règles par spécification
Il existe plusieurs façons de supprimer des règles iptables. La première méthode consiste à supprimer les règles par leur spécification. Pour la suppression, nous utiliserons l'option « -D » suivie de la spécification de la règle :
|
1 |
sudo iptables -v -D INPUT -s 172.217.194.113 -j DROP |

Si vous avez déjà ajouté une règle iptables auparavant, vous remarquerez la similitude. La seule chose qui change ici est l'option « -D » au lieu de l'option « -A ».
Supprimer des règles par chaîne et numéro
Supprimer des règles par leur spécification demande un peu plus d'efforts, n'est-ce pas ? Et si nous pouvions les supprimer sans avoir à nous souvenir de leur spécification ? Supprimons les règles par leur chaîne et leur numéro ! Par rapport à la première méthode (suppression par spécification), celle-ci est relativement plus simple car vous n'avez pas besoin d'avoir toute la spécification sous la main.
Cette méthode nécessite la chaîne et le numéro de ligne de la règle cible. Où obtient-on le numéro de ligne ? Exécutez la commande suivante pour le déterminer :
|
1 |
sudo iptables -L --line-numbers |

Vous obtiendrez une sortie importante contenant toutes les règles et leurs numéros de ligne. Pour restreindre la sortie, utilisez le nom de la chaîne après l'option « -L » :
|
1 |
sudo iptables -L <chaîne> --line-numbers |

Dans la sortie, vous remarquerez la colonne supplémentaire « num ». Elle indique le numéro de ligne de chaque règle. Une fois le numéro cible déterminé, procédez à la suppression :
|
1 |
sudo iptables -v -D <chaîne> <numéro_ligne> |
Vider les chaînes
Dans le cas d'iptables, qu'est-ce que vider (flush) une chaîne ? C'est le processus de suppression de toutes les règles d'une chaîne donnée. Si vous devez supprimer des règles en masse, vous pouvez utiliser cette méthode. Avant de procéder au vidage d'une chaîne, nous vous recommandons vivement de sauvegarder les règles existantes à l'aide d'iptables-save. Il s'agit d'un outil iptables intégré qui affichera toutes les chaînes et règles actuelles. La sortie peut être exportée vers un fichier texte :
|
1 |
sudo iptables-save > ~/Desktop/iptables-backup.txt |
![]()
Vider une seule chaîne
Voyons comment vider une chaîne. Utilisez l'option « -F » suivie de la chaîne cible :
|
1 |
sudo iptables -v -F <chaîne> |

Vider toutes les chaînes
Avant de vider toutes les chaînes, assurez-vous de bien comprendre ce que vous faites. Cela supprimera toutes les règles du pare-feu iptables. Vous devez vous assurer de créer une sauvegarde des règles iptables au préalable.
Prêt ? Videz toutes les chaînes iptables en exécutant la commande suivante :
|
1 |
sudo iptables -v -F |

Vider les règles, supprimer les chaînes et tout accepter
L'exécution des étapes décrites dans cette section désactivera efficacement le pare-feu, permettant un trafic réseau sans restriction. Comme pour la section précédente, nous vous recommandons de disposer d'une sauvegarde d'iptables avant de continuer. Tout d'abord, nous allons changer la politique par défaut de chacune des chaînes intégrées en ACCEPT. Cela permet de s'assurer qu'iptables ne vous bloque pas l'accès à votre serveur via SSH :
|
1 |
sudo iptables -v -P INPUT ACCEPT && sudo iptables -v -P FORWARD ACCEPT && sudo iptables -v -P OUTPUT ACCEPT |

Maintenant, videz les tables nat et mangle :
|
1 2 |
sudo iptables -v -t nat -F sudo iptables -v -t mangle -F |


Videz toutes les chaînes et supprimez toutes les chaînes non définies par défaut :
|
1 2 |
sudo iptables -v -F sudo iptables -v -X |


Ensuite, vérifions le résultat :
|
1 |
sudo iptables -L --line-numbers |
Dernières réflexions
Iptables est un pare-feu puissant. Nous espérons que ce guide vous aura été utile pour apprendre à lister et supprimer les règles de pare-feu iptables. Et n'oubliez pas de vous exercer avant de les appliquer en conditions réelles.
Bonne informatique !



Commentaires
Aucun commentaire pour l'instant. Soyez le premier.