Comment rendre permanent un ensemble spécifique de règles iptables?

42

Existe-t-il une "meilleure pratique" ou une norme pour rendre quelques règles iptables permanentes? Je veux dire: appliqué automatiquement au redémarrage du système?

J'utilise un SMV avec Ubuntu Server 10.04 LTS (Lucid Lynx).

Merci.

BIG EDIT: Je ne veux pas qu'aucune règle soit persistante (comme le iptables-persistentpaquet le fait). Je veux seulement que mon propre jeu spécifique soit rechargé ... si d'autres règles sont finalement ajoutées en exécutant iptables, celles-ci doivent être supprimées ...

J. Bruni
la source

Réponses:

52

La méthode la plus simple consiste à utiliser iptables-save et iptables-restore pour enregistrer les règles iptables actuellement définies dans un fichier et les (re) charger (par exemple, au redémarrage).

Ainsi, par exemple, vous courriez

sudo iptables-save | sudo tee /etc/iptables.conf

pour sauvegarder vos règles iptables actuelles dans /etc/iptables.confet ensuite insérer ces lignes dans /etc/rc.local:

# Load iptables rules from this file
iptables-restore < /etc/iptables.conf
Riccardo Murri
la source
3
+1 Votre réponse est parfaite à ma question initiale. Cela m'a aussi fait comprendre ce que je voulais vraiment, alors j'ai dû changer la question de "Comment puis-je rendre les règles d'iptables permanentes?" to "Comment rendre permanent un ensemble spécifique de règles iptables?"
J. Bruni
Si vous le pouvez, modifiez légèrement votre réponse pour refléter le changement de la question ... Je serai ravi de l'accepter! J'ai besoin d'utiliseriptables-save une fois, et recharger toujours (iptables-restore à /etc/rc.local sonne bien).
J. Bruni
1
Si vous obtenez permission deniedquand vous essayez d'utiliser >alors cette réponse de débordement de pile sera utile.
David Tuite
2
Utiliser sudo sh -c "iptables-save > /etc/iptables.conf"au lieu desudo iptables-save > /etc/iptables.conf
Rajat Gupta
32

Une mise à jour rapide à ce que vous utilisez peut-être maintenant 12.04 et les choses vont mieux.

Le iptables-persistentpaquet résout maintenant ce problème. À installer,

sudo apt-get install iptables-persistent

Les règles définies lors de l'installation du package sont enregistrées et utilisées à chaque démarrage ultérieur. Les nouvelles règles chargées sont supprimées au redémarrage.

Le fichier de configuration si vous avez besoin de les changer (une fois iptables-persistent est installé) est /etc/iptables/rules.v4ou /etc/iptables/rules.v6pour iptables ipv6 et ipv4 respectivement.

utilisateur172020
la source
Si vous apportez une modification à /etc/iptables/rules.v4, comment l'obtenez-vous appliqué [officiellement]? Je suis actuellement en train de fairesudo iptables-restore < /etc/iptables/rules.v4
Bruno Bronosky le
24

Mieux /etc/rc.localvaut ajouter une ligne /etc/network/interfacesaprès avoir sauvegardé les règles de iptable, comme ceci

post-up iptables-restore < /etc/iptables.up.rules

ou c'est la même chose pour mettre le fichier à l'intérieur /etc/network/if-down.d/ou /etc/network/if-post-down.d/ou /etc/network/if-pre-up.d/ou /etc/network/if-up.d/.

Kreker
la source
1
@Kreker: précisez en quoi votre approche est meilleure que l'exécution d'un script de restauration rc.local? l'autre approche ne fonctionne-t-elle pas dans certains cas?
Rajat Gupta
2
L'ajouter à la configuration du réseau entraîne son rechargement après l'exécution de la commande "service network restart". Ce n'est pas limité aux démarrages du système.
K. Darien Freeheart Le
4
Pourquoi post-up iptables-Restaurerait-il lorsqu'une interface est en panne?
alphadogg