Affichage de toutes les règles iptables

Je voulais juste requestr s'il y a moyen de voir les règles d'iptables plus en détail

J'ai récemment ajouté mascarade à une gamme d'ips

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE service iptables save service iptables restart 

Qui a fait ce que je veux, mais quand j'utilise

 iptables -L 

J'ai le même résultat que d'habitude

 Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 

Comment puis-je voir les règles, y compris celles que j'ajoute? (le système est CentOS 6)

Vous avez juste besoin de spécifier la table Netfilter appropriée (une de filter , nat , mangle , raw ou security ). Si vous avez ajouté une règle pour la table nat , vous devez explicitement spécifier cette table en utilisant l'option -t, --table :

 iptables --table nat --list 

Ou en utilisant les options sous forme courte:

 iptables -t nat -L 

Si vous ne spécifiez pas de table spécifique, la table de filter est utilisée par défaut. Vous pouvez get encore plus d'informations en incluant l'option -v ou --verbose .

iptables contrôle cinq tables différentes: filter , nat , mangle , raw et security . Lors d'un appel donné, iptables affiche ou modifie uniquement l'une de ces tables, spécifiée par l'argument de l'option -t (par défaut, filter ). Pour voir l'état complet du pare-feu, vous devez appeler iptables sur chacune des tables successivement.

En outre, pour get une représentation exacte des règles, vous devez passer l'option -v . Sinon, certains critères importants sont omis dans la sortie, comme l'interface dans les règles de filtrage (par exemple, une règle qui dit «tout accepter» et une règle qui dit «tout accepter sur l'interface de bouclage» ne peut être distinguée que par -v ).

Ainsi, pour avoir une présentation complète des règles de netfilter, vous avez besoin

 iptables -vL -t filter iptables -vL -t nat iptables -vL -t mangle iptables -vL -t raw iptables -vL -t security 

Vous pouvez également appeler le programme iptables-save , qui affiche toutes les règles de toutes les tables dans un format pouvant être analysé par iptables-restore . Ce format est également raisonnablement lisible par les humains (c'est un peu comme une série d'appels à la command iptables pour build la table).

iptables -S fait l'affaire pour moi. Il semble répertorier toutes les règles actives, même lorsque le service est désactivé.

De la page de manuel:

-S, –list-rules [string] Imprime toutes les règles de la string sélectionnée. Si aucune string n'est sélectionnée, toutes les strings sont imprimées comme iptables-save. Comme toute autre command iptables, elle s'applique à la table spécifiée (le filter est la valeur par défaut).

Ce que je fais est d'exécuter iptables-save > iptables_bckp , cela sauvegardera tous les calques, puis éditera le file et restaurera les iptables-restore < iptables_bckp

 # iptables-save > iptables_bckp # vim iptables_bckp # iptables-restore < iptables_bckp 

Vous pouvez effectuer une double sauvegarde afin de modifier l'un d'entre eux sans perdre vos iptables passés.

Ceci est une pratique personnelle, je ne dis pas que c'est la meilleure façon, mais pour moi fonctionne très bien.

Essayer

La command iptables requirejs également que vous spécifiiez la table, sinon elle par défaut filter la table. Alors essayez:

 iptables -t nat -L 

Si cela peut vraiment vous aider, vous pouvez écrire un script bash et le placer dans un dossier référencé par votre path ou le referencer via un alias dans le file ~ / .bashrc.

AllRules.sh

 #!/bin/bash echo "Filter table:" iptables -t filter -L echo "Nat table:" iptables -t nat -L echo "Mangle table:" iptables -t mangle -S echo "Raw table:" iptables -t raw -S echo "Security table:" iptables -t security echo echo "All rules in all tables printed" 

N'oubliez pas de donner à votre nouveau script bash les permissions d'exécution avec chmod

Si l'autorisation est un problème, vous devrez peut-être append sudo devant toutes les commands iptables .