web-dev-qa-db-fra.com

Affichage de toutes les règles iptables

Existe-t-il un moyen d'afficher les règles de iptables de manière plus détaillée?

J'ai récemment ajouté la mascarade à une gamme d'adresses IP:

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'obtiens la même sortie 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)

154
TheLovelySausage

Lorsque vous utilisez le -L, --list option pour répertorier les règles de pare-feu actuelles, vous devez également spécifier la table Netfilter appropriée (une de filter, nat, mangle, raw ou security). Donc, si vous avez ajouté une règle pour la table nat, vous devez spécifier explicitement cette table à l'aide de la -t, --table option:

iptables --table nat --list

Ou en utilisant le formulaire abrégé des options:

iptables -t nat -L

Si vous ne spécifiez pas de table spécifique, la table filter est utilisée par défaut.


Pour des résultats plus rapides, il peut être utile d'inclure également le -n, --numeric option pour imprimer des adresses IP numériques au lieu de noms d'hôtes, évitant ainsi d'attendre les recherches DNS inversées.

Vous pouvez obtenir encore plus d'informations en incluant le -v, --verbose option.

124

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 successivement iptables sur chacune des tables.

De plus, pour obtenir une représentation précise des règles, vous devez passer l'option -v. Sinon, certains critères importants sont omis dans la sortie, tels que 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 qu'avec -v).

Ainsi, pour obtenir une présentation complète des règles de netfilter, vous devez

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 iptables-save programme, qui affiche toutes les règles de toutes les tables dans un format qui peut être analysé par iptables-restore. Ce format est également raisonnablement lisible par les humains (c'est à peu près comme une série d'appels à la commande iptables pour construire 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é.

Depuis la page de manuel:

-S, --list-rules [chaîne] Imprime toutes les règles de la chaîne sélectionnée. Si aucune chaîne n'est sélectionnée, toutes les chaînes sont imprimées comme iptables-save. Comme toutes les autres commandes iptables, elle s'applique à la table spécifiée (le filtre est la valeur par défaut).

57
Cameron

Ce que je fais, c'est d'exécuter iptables-save > iptables_bckp, cela sauvegardera toutes les couches, puis éditera le fichier et restaurera les iptables iptables-restore < iptables_bckp

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

Vous pouvez faire une double sauvegarde afin de modifier l'un d'entre eux sans perdre vos anciennes iptables.

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

Essayer

18
tachomi

La commande iptables requiert également que vous spécifiiez la table, sinon elle sera par défaut filtrée sur la table. Alors essayez:

iptables -t nat -L
4
user425

Vous pouvez utiliser:

# lsmod | grep ip_tables
ip_tables              13193  4 iptable_raw,iptable_mangle,iptable_nat,iptable_filter

Pour trouver toutes les tables et afficher une règle spécifique dans le tableau.

3
Tur Le
iptables -vnxL
iptables -vnxL -tnat

éventuellement en plus, bien que ceux-ci soient très très rarement utilisés:

iptables -vnxL -traw
iptables -vnxL -tmangle
iptables -vnxL -tsecuriy
1
sjas

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

AllRules.sh

#!/bin/bash

 echo "Filter table:"
 iptables -t filter -vL

 echo "Nat table:"
 iptables -t nat -vL

 echo "Mangle table:"
 iptables -t mangle -vL

 echo "Raw table:"
 iptables -t raw -vL

 echo "Security table:"
 iptables -t security -vL

 echo 
 echo "All rules in all tables printed"

N'oubliez pas d'accorder à votre nouveau script bash les autorisations d'exécution avec chmod

Si l'autorisation est un problème, vous devrez peut-être ajouter Sudo devant toutes les commandes iptables.

1
ob1