Dove sono memorizzati i set di regole di iptables su Ubuntu 12.04?


8

Ubuntu 12.04 LTS - iptables v1.4.12

TLDR:

Dove vengono salvati i set di regole di iptables quando si invoca iptables-save <ruleset-name>?

Spiegazione :

Secondo questa risposta , viene invocato il modo di base per salvare le regole di iptables

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

e successivamente caricando / ripristinando queste regole /etc/network/interfacescome:

iface eth0 inet static
        ....
        pre-up iptables-restore < /etc/iptables/rules.v4
        pre-up ip6tables-restore < /etc/iptables/rules.v6

... o inserendoli in uno script shell /etc/network/if-pre-up.d.


Questo può essere semplificato installando il iptables-persistentpacchetto.

sudo apt-get install iptables-persistent
inovoke-rc.d iptables-persistent save
update-rc.d iptables-persistent defaults

Seguendo alcuni tutorial ho provato a invocare service iptables status(un comando inesistente / sconosciuto per la iptablesversione / pacchetto che viene preinstallato con 12.04) e ho trovato questo interessante output:

Aborting iptables initd: unknown command(s): "status".                                                               
  ...                                                                                  
  save <ruleset>                                                                                                    
     save the current ruleset                                                                                       
  load <ruleset>                                                                                                    
     load a ruleset                                                                                                 
   ...                                                                                                   
Saved rulesets:                                                                                                     
  active, inactive                                                                                 
...     

Sembra che ci siano due set di regole che posso caricare ( activee inactive) ...

.. ma dove sono memorizzati ?

Non riesco a trovare la loro posizione come attivo / inattivo sono termini di ricerca piuttosto cattivi e dpkg-query -L iptablesnon aiuta neanche.

Dato che eseguo il provisioning dei miei server con puppet/ chefsarebbe bello sapere se c'è un posto in cui posso mettere i miei set di regole e aggiungere un semplice script di shell /etc/networking/if-pre-upper caricarli.

Quindi potrei omettere il iptables-persistentpacchetto che non è così flessibile in quanto non consente il caricamento di diversi set di regole.

Grazie per l'aiuto.

Risposte:


4

iptables memorizza le regole in memoria ma il set di regole creato da iptables-save ruleset-namepuò essere trovato nel file

/ Var / lib / iptables / ruleset-nome

Questi possono essere ripristinati invocando iptables-restore <ruleset-name>.

Posso solo confermare questo per Ubuntu 12.04.03 LTS - forse questa posizione è cambiata nelle versioni successive del pacchetto iptables.

Penso che qualcosa del genere /etc/iptables/rulesets.dsarebbe stato un posto più logico per archiviarli.

Il percorso di salvataggio è configurato nella /etc/init.d/iptablesriga 27 e successivamente utilizzato dal initd_save()quale invoca 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, Pangolin preciso" ID = ubuntu ID_LIKE = debian PRETTY_NAME = "Ubuntu precise (12.04.4 LTS)" VERSION_ID = "12.04" # iptables- save ruleset.1 Argomenti sconosciuti trovati sulla riga di comando Questo non sembra funzionare
Rondo

stesso problema qui
unc0nnected
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.