Iptables vérifie la syntaxe du script

11

Existe-t-il un moyen de tester / vérifier la syntaxe d'un script de règles iptables sans modifier la configuration réelle du pare-feu (je pense que l'ajout et la suppression de chaque règle n'est pas la meilleure façon ...).

Je connais l'option -C mais elle ne vérifie pas les options comme les chaînes et c'est un peu délicat avec ses codes de retour, car 1 ne signifie pas toujours que la syntaxe est correcte.

Merci!

Dav rax
la source

Réponses:

9

Comme suggéré par diegows, vous pouvez utiliser iptables-restore, mais vous pouvez l'utiliser avec l'indicateur --test pour simplement tester la configuration, plutôt que de la tester dans le cadre d'une installation réelle.

iptables-restore --test [YOUR RULES AS A FILE]
ChrisW
la source
Cela ne semble pas toujours bien fonctionner. Je travaille actuellement sur un fichier iptables qui échoue lors de son installation (iptables-restore <iptables-new) mais avec l'option --test, aucune erreur n'est générée. Je le posterais mais c'est long. m15440 @ NDC01P04CU2PNGA sysconfig # iptables-restore --test <iptables-new m15440 @ # NDC01P04CU2PNGA sysconfig iptables-restore <iptables-nouveau iptables-restore: ligne 217 n'a pas m15440 @ NDC01P04CU2PNGA sysconfig #
PatrickTaylor
1

Utilisez iptables-save / iptables-restore. À mon avis, utiliser un script est une mauvaise idée. Écrivez vos premières règles à partir de la ligne de commande, puis enregistrez-les avec "iptables-save> file" et continuez à éditer ce fichier. "iptables-restore <fichier" est utilisé pour appliquer les règles. Cette commande vérifiera la syntaxe et n'appliquera pas les règles en cas d'erreur.

Diego Woitasen
la source
1
De plus, lorsque je joue avec iptables sur une machine distante, j'ai également configuré un travail cron pour qu'il s'exécute toutes les 5 ou 10 minutes qui restaure iptables à un état par défaut "autoriser tout", donc si je me verrouille, je reviens dans les 5 à 10 minutes. N'oubliez pas de le verrouiller à nouveau et de désactiver le travail cron;)
jwbensley