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.

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

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