Onde estão os conjuntos de regras do iptables armazenados no Ubuntu 12.04?

8

Ubuntu 12.04 LTS - iptables v1.4.12

TLDR:

Onde os conjuntos de regras do iptables são salvos ao invocar iptables-save <ruleset-name>?

Explicação :

De acordo com esta resposta, o modo básico de salvar as regras do iptables é invocar

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

e depois carregar / restaurar essas regras da seguinte maneira /etc/network/interfaces:

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

... ou colocando-os em um script shell /etc/network/if-pre-up.d.


Isso pode ser simplificado instalando o iptables-persistentpacote.

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

Seguindo alguns tutoriais, tentei invocar service iptables status(um comando inexistente / desconhecido para a iptablesversão / pacote que vem pré-instalado com o 12.04) e encontrei esta saída interessante:

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

Parece haver dois conjuntos de regras que posso carregar ( activee inactive) ...

.. mas onde eles são armazenados ?

Não consigo encontrar a sua localização como ativo / inativo são muito ruins termos de pesquisa e dpkg-query -L iptablestambém não ajuda.

Como estou provisionando meus servidores com puppet/ chefseria bom saber se existe algum lugar para colocar meus conjuntos de regras e adicionar um script de shell simples /etc/networking/if-pre-uppara carregá-los.

Então eu poderia omitir o iptables-persistentpacote que não é tão flexível, pois não permite o carregamento de diferentes conjuntos de regras.

Obrigado pela ajuda.

Nicolai Fröhlich
fonte

Respostas:

4

O iptables armazena as regras na memória, mas o conjunto de regras criado por iptables-save ruleset-namepode ser encontrado no arquivo

/ var / lib / iptables / nome do conjunto de regras

Estes podem ser restaurados invocando iptables-restore <ruleset-name>.

Só posso confirmar isso no Ubuntu 12.04.03 LTS - talvez esse local tenha mudado nas versões posteriores do pacote iptables.

Eu acho que algo como /etc/iptables/rulesets.dteria sido um lugar mais lógico para armazená-los.

O caminho de salvamento é configurado na /etc/init.d/iptableslinha 27 e posteriormente usado pelo initd_save()qual é invocado 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
fonte
#cat / etc / os-release NAME = "Ubuntu" VERSION = "12.04.4 LTS, Pangolin preciso" ID = ubuntu ID_LIKE = debian PRETTY_NAME = "Ubuntu preciso (12.04.4 LTS)" VERSION_ID = "12.04" # iptables- save argumentos não informada ruleset.1 encontrado na linha de comando Este não parece trabalho
Rondo
mesmo problema aqui
unc0nnected