Où les jeux de règles d'iptables sont-ils stockés sur Ubuntu 12.04?

8

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 iptables-save <ruleset-name>?

Explication :

Selon cette réponse, le moyen de base pour enregistrer les règles d'iptables est d'invoquer

iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6

et ensuite charger / restaurer ces règles /etc/network/interfacescomme:

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 /etc/network/if-pre-up.d.


Cela peut être simplifié en installant le iptables-persistentpackage.

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 inexistante / inconnue pour la iptablesversion / le package pré-installé avec 12.04) et j'ai 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 ensembles de règles que je peux charger ( activeet inactive) ...

.. mais où sont-ils stockés ?

Je ne trouve pas leur emplacement car actif / inactif sont des termes de recherche assez mauvais et dpkg-query -L iptablesn'aide pas non plus.

Comme je provisionne mes serveurs avec puppet/ chefce serait bien de savoir s'il y a un endroit où je peux mettre mes ensembles de règles et ajouter un simple script shell /etc/networking/if-pre-uppour les charger.

Ensuite, je pourrais ignorer le iptables-persistentpackage qui n'est pas si flexible car il ne permet pas de charger différents ensembles de règles.

Merci de votre aide.

Nicolai Fröhlich
la source

Réponses:

4

iptables stocke les règles en mémoire mais le jeu de règles créé par iptables-save ruleset-namese trouve dans le fichier

/ var / lib / iptables / nom_ensemble de règles

Ceux-ci peuvent être restaurés en invoquant iptables-restore <ruleset-name>.

Je ne peux que le confirmer pour Ubuntu 12.04.03 LTS - peut-être que cet emplacement a changé dans les versions ultérieures du paquet iptables.

Je pense que quelque chose comme /etc/iptables/rulesets.daurait été un endroit plus logique pour les stocker.

Le chemin de sauvegarde est configuré /etc/init.d/iptablesà la ligne 27 et ensuite utilisé par initd_save()lequel invoque 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 "."                                                                                                  
}          
Nicolai Fröhlich
la source
#cat / etc / os-release NAME = "Ubuntu" VERSION = "12.04.4 LTS, Precise Pangolin" ID = ubuntu ID_LIKE = debian PRETTY_NAME = "Ubuntu precise (12.04.4 LTS)" VERSION_ID = "12.04" # iptables- save ruleset.1 Arguments inconnus trouvés sur la ligne de commande Cela ne semble pas fonctionner
Rondo
même problème ici
connecté