Como descobrir de onde vêm as regras do iptables?

2

Eu costumava ter meu próprio conjunto de regras iptables na minha instalação do Ubuntu 14.04 LTS. Isso estava residindo em /etc/network/if-pre-up.d/iptables .

Agora, aparentemente depois de outro apt-get dist-upgrade , parece que minhas regras foram sobrescritas: quando eu executo iptables -L , vejo coisas que parecem originar de libvirt ou outra coisa, mas não eu.

Por isso, estou procurando uma maneira de descobrir de onde vêm essas regras para poder editá-las / controlá-las. A maneira que eu sou depois precisa ser mais inteligente do que o que estou tentando agora - simplesmente procurando todos os arquivos de configuração do sistema para strings exclusivas que aparecem na saída iptables -L .

ATUALIZAÇÃO:

Depois de executar virsh net-autostart default --disable e reinicializar todas as regras estranhas do iptables desapareceram. Agora que eu tenho o iptables limpo eu sei - eles foram previamente poluídos pelo libvirt / kvm.

Ainda assim, a questão permanece: existe uma maneira geral de descobrir onde as regras do iptables vêm? Algo mais inteligente do que adivinhar e desativar coisas uma a uma para ver se afeta o iptables?

    
por Greendrake 11.07.2015 / 15:13

2 respostas

2

Geralmente, as regras do iptables são salvas ou carregadas por scripts que residem no /etc/init.d. Supondo que os scripts estejam usando os comandos típicos iptables-save e iptables-restore, você poderia procurá-los com um grep recursivo, por exemplo:

grep -R iptables-restore /etc/init.d/

Se a saída do comando grep revelar algum arquivo, você poderá ver qual pacote foi responsável por colocar esses arquivos no sistema.

dpkg-query -S file-name-result-of-grep

Há uma chance de que o arquivo tenha sido gerado no momento da instalação ou criado por um usuário comum, se esse for o caso, então o dpkg pode não saber sobre o arquivo.

Se a saída concisa do nome do pacote único do dpkg não for descritiva o suficiente, você pode apt-cache show package-name no nome do pacote fornecido pelo dpkg.

    
por Stephen 12.07.2015 / 05:55
0

Acredito que as regras resultantes do iptables vêm de /var/lib/libvirt/network/default.xml , que por sua vez é gerado a partir de /etc/libvirt/qemu/networks/default.xml quando virsh net-edit default é usado para fazer alterações. Eu acho, mas não tenho certeza, as regras não são armazenadas como um conjunto de regras, mas sim compiladas da fonte .xml e inseridas no conjunto de regras iptables quando a libvirtd é iniciada durante a inicialização.

    
por Doug Smythies 12.07.2015 / 17:42