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.