Retour au blog

Lister et supprimer les règles de pare-feu Iptables

Lister et supprimer les règles de pare-feu Iptables

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 :

iptables list

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 » :

list specific chain

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 :

list rules as table iptables

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 » :

filter by chain

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 :

package and byte counters iptables

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 :

Reset packet counts and aggregate size

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 :

reset particular counter

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 :

reset specific rule

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 :

Delete rules by specification

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 :

Delete rules by chain and number - get line number

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 » :

Delete rules by chain and number - filter

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 :

delete iptables rule

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 :

iptables rules export

Vider une seule chaîne

Voyons comment vider une chaîne. Utilisez l'option « -F » suivie de la chaîne cible :

flush a single chain

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 :

flush all changes

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 :

Flush rules, delete chains and accept all

Maintenant, videz les tables nat et mangle :

 flush nat and mangle tables

 mangle tables

Videz toutes les chaînes et supprimez toutes les chaînes non définies par défaut :

Flush all the chains

 delete all the non-default chains

Ensuite, vérifions le résultat :

iptables result

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 !

author

Akshay Nagpal

Auteur · CloudSigma

Preslav Dobrev est un designer créatif chez CloudSigma, axé sur une identité commerciale cohérente à travers des canaux marketing traditionnels et innovants. Il excelle à fusionner la vision artistique avec le marketing stratégique pour créer des récits de marque percutants.

Commentaires

Aucun commentaire pour l'instant. Soyez le premier.