Existe-t-il un moyen de trouver quelle règle iptables était responsable de la suppression d'un paquet?

31

J'ai un système fourni avec un pare-feu déjà en place. Le pare-feu comprend plus de 1000 règles iptables. L'une de ces règles consiste à supprimer des paquets que je ne souhaite pas supprimer. (Je le sais parce que j'ai iptables-savesuivi iptables -Fet que l'application a commencé à fonctionner.) Il y a beaucoup trop de règles à trier manuellement. Puis-je faire quelque chose pour me montrer quelle règle supprime les paquets?

Shawn J. Goff
la source
1
fedorahosted.org/dropwatch pourrait également être utile à l'avenir.
Shawn J. Goff
Pour voir la mise à jour des compteurs en temps réel, utilisez <br/> <code> watch iptables -L -v -n </code>
Chris Gibb

Réponses:

19

Vous pouvez ajouter une règle TRACE au début de la chaîne pour enregistrer chaque règle traversée par le paquet.

J'envisagerais d'utiliser iptables -L -v -n | lesspour vous permettre de rechercher les règles. Je regarderais le port; adresse; et les règles d'interface qui s'appliquent. Étant donné que vous avez tellement de règles, vous exécutez probablement un pare-feu principalement fermé et il manque une règle d'autorisation pour le trafic.

Comment est construit le pare-feu? Il peut être plus facile de regarder les règles du générateur que les règles construites.

BillThor
la source
J'ai compris après avoir posé cette question que les règles sont de l'APF, et j'ai pu y remédier. J'adore la cible TRACE. Cela aurait été très efficace.
Shawn J.Goff
2
Un exemple d'utilisation de la cible TRACE est ici: serverfault.com/questions/122157/debugger-for-iptables/… .
slm
14

Exécutez iptables -L -v -npour voir les compteurs de paquets et d'octets pour chaque table et pour chaque règle.

Ninjalj
la source
C'est bien, j'espère quelque chose de mieux car il y a 1000 règles et 1000s de paquets perdus.
Shawn J. Goff
Utilisez sortpour trier les règles par compteur de paquets.
ninjalj
13

Depuis iptables -L -v -na des compteurs, vous pouvez faire ce qui suit.

iptables -L -v -n > Sample1
#Cause the packet that you suspect is being dropped by iptables
iptables -L -v -n > Sample2
diff Sample1 Sample2

De cette façon, vous ne verrez que les règles incrémentées.

Kyle Brandt
la source
9

Dans mon entreprise que nous utilisons watch -n 2 -d iptables -nvL, il montre les changements entre les demandes

Marcelo Salazar
la source
5
watch -n1 -d "iptables -vnxL | grep -v -e pkts -e Chain | sort -nk1 | tac | column -t"

Gardez à l'esprit que cela ne montrera que des éléments pour le filtre de table .

Ajoutez -t nat(ou la table que vous utilisez en plus du filtre) à votre appel iptables, pour vérifier les règles.

sjas
la source