¿Dónde se almacenan los conjuntos de reglas de iptables en Ubuntu 12.04?

8

Ubuntu 12.04 LTS - iptables v1.4.12

TLDR:

¿Dónde se guardan los conjuntos de reglas de iptables al invocar iptables-save <ruleset-name>?

Explicacion :

Según esta respuesta, la forma básica de guardar las reglas de iptables es invocar

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

y luego cargar / restaurar estas reglas en /etc/network/interfaces:

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

... o ponerlos en un script de shell /etc/network/if-pre-up.d.


Esto se puede simplificar instalando el iptables-persistentpaquete.

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

Después de algunos tutoriales, intenté invocar service iptables status(un comando inexistente / desconocido para la iptablesversión / paquete que viene preinstalado con 12.04) y encontré este resultado interesante:

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

Parece que hay dos conjuntos de reglas que puedo cargar ( activey inactive) ...

.. pero donde se almacenan estos ?

No puedo encontrar su ubicación como activo / inactivo son términos de búsqueda bastante malos y dpkg-query -L iptablestampoco ayuda.

Como estoy aprovisionando mis servidores con puppet/ chefsería bueno saber si hay algún lugar donde pueda colocar mis conjuntos de reglas y agregar un script de shell simple /etc/networking/if-pre-uppara cargarlos.

Entonces podría omitir el iptables-persistentpaquete que no es tan flexible ya que no permite cargar diferentes conjuntos de reglas.

Gracias por tu ayuda.

Nicolai Fröhlich
fuente

Respuestas:

4

iptables almacena las reglas en la memoria, pero el conjunto de reglas creado por iptables-save ruleset-namese puede encontrar en el archivo

/ var / lib / iptables / ruleset-name

Estos pueden restaurarse invocando iptables-restore <ruleset-name>.

Solo puedo confirmar esto para Ubuntu 12.04.03 LTS; tal vez esta ubicación ha cambiado en versiones posteriores del paquete iptables.

Creo que algo así /etc/iptables/rulesets.dhabría sido un lugar más lógico para almacenar estos.

La ruta de guardado se configura en la /etc/init.d/iptableslínea 27 y luego se utiliza mediante la initd_save()cual se 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 "."                                                                                                  
}          
Nicolai Fröhlich
fuente
#cat / etc / os-release NAME = "Ubuntu" VERSION = "12.04.4 LTS, Precise Pangolin" ID = ubuntu ID_LIKE = debian PRETTY_NAME = "Ubuntu preciso (12.04.4 LTS)" VERSION_ID = "12.04" # iptables- guardar conjunto de reglas.1 Argumentos desconocidos encontrados en la línea de comandos Esto no parece funcionar
Rondo
mismo problema aquí
conectado el