Ubuntu 12.04 LTS - iptables v1.4.12
TLDR:
Où les jeux de règles d'iptables sont-ils enregistrés lors de l'appel de iptables-save <ruleset-name>
?
Explication :
Selon cette réponse le moyen basique de sauvegarder les règles d'iptables fait appel à
iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6
et ensuite chargement/restauration de ces règles dans /etc/network/interfaces
comme:
iface eth0 inet static
....
pre-up iptables-restore < /etc/iptables/rules.v4
pre-up ip6tables-restore < /etc/iptables/rules.v6
... ou en les mettant dans un script Shell dans /etc/network/if-pre-up.d
.
Cela peut être simplifié en installant le package iptables-persistent
.
Sudo apt-get install iptables-persistent
inovoke-rc.d iptables-persistent save
update-rc.d iptables-persistent defaults
Après quelques tutoriels, j’ai essayé d’appeler service iptables status
(une commande non existante/inconnue pour la version/package iptables
qui est pré-installé avec 12.04) et a trouvé cette sortie intéressante:
Aborting iptables initd: unknown command(s): "status".
...
save <ruleset>
save the current ruleset
load <ruleset>
load a ruleset
...
Saved rulesets:
active, inactive
...
Il semble y avoir deux jeux de règles que je peux charger (active
et inactive
name__) ...
.. mais où sont-ils stockés ?
Je ne trouve pas que leur emplacement comme actif/inactif sont des termes de recherche plutôt mauvais et dpkg-query -L iptables
n’aide pas non plus.
Comme je provisionne mes serveurs avec puppet
name __/chef
name__, il serait bon de savoir s’il existe un endroit où je peux placer mes règles et ajouter un simple script Shell à /etc/networking/if-pre-up
pour les charger.
Ensuite, je pourrais omettre le paquetage iptables-persistent
qui n’est pas aussi flexible car il ne permet pas de charger différents jeux de règles.
Merci de votre aide.
iptables stocke les règles en mémoire mais le jeu de règles créé par iptables-save ruleset-name
peut être trouvé dans le fichier
/ var/lib/iptables/nom du jeu de règles
Ceux-ci peuvent être restaurés en appelant iptables-restore <ruleset-name>
.
Je ne peux que le confirmer pour Ubuntu 12.04.03 LTS - cet emplacement a peut-être changé dans les versions ultérieures du paquet iptables.
Je pense que quelque chose comme /etc/iptables/rulesets.d
aurait été un endroit plus logique pour stocker ces derniers.
Le chemin de sauvegarde est configuré dans /etc/init.d/iptables
à la ligne 27 et est ensuite utilisé par initd_save()
qui appelle initd_counters()
.
libdir=/var/lib/iptables
# ...
initd_counters () {
if test "${enable_save_counters:-false}" = true; then
echo -n " with counters"
$iptables_save -c > "$ruleset"
else
$iptables_save | sed '/^:/s@\[[0-9]\{1,\}:[0-9]\{1,\}\]@[0:0]@g' > "$ruleset"
fi
}
initd_save () {
rm -f $autosave
ruleset="${libdir}/$@"
echo -n "Saving iptables ruleset: save \"$@\""
initd_counters
echo "."
}