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 ...

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

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.


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/.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.