Por que o serviço persistente Iptables não está salvando minhas alterações?

12

Eu segui este tutorial para configurar regras de IP no Ubuntu 12.04. Tudo funcionou bem na configuração - mas agora eu fiz alterações no firewall que não persistem na reinicialização. Eu não entendo porque isso é. Aqui está uma demonstração de como estou usando o iptables-persistent. O que estou fazendo errado?

$ sudo service iptables-persistent start
 * Loading iptables rules...                                                                                             *  IPv4...                                                                                                              *  IPv6...   

$ sudo iptables -L   //shows a certain rule
$ iptables -D INPUT ... //command successfully drops the rule
$ sudo iptables -L   //shows rule has been deleted

 $ sudo service iptables-persistent restart
 * Loading iptables rules...                                                                                             *  IPv4...                                                                                                              *  IPv6...                                                                                                      [ OK ] 
 $ sudo iptables -L  //rule is back
    
por bernie2436 21.04.2014 / 17:59

3 respostas

35

iptables-persistent não funciona dessa maneira. Reiniciar o iptables-persistent "service" não captura o estado atual do iptables e o salva; tudo o que ele faz é restabelecer as regras do iptables que foram salvas quando o pacote foi configurado pela última vez.

Para configurar o iptables-persistent , você precisa informá-lo sobre o seu conjunto de regras atual do iptables.

Uma maneira de conseguir isso é a seguinte:

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

Ou, de forma equivalente, o pacote iptables-persistent também fornece o seguinte:

dpkg-reconfigure iptables-persistent

(Você precisará responder sim às perguntas sobre salvar as regras.)

Depois disso, da próxima vez que iptables-persistent for iniciado / reiniciado, os conjuntos de regras do iptables que você espera serão carregados.

    
por 21.04.2014 / 18:32
5

Uma maneira muito simples de salvar as regras atuais do iptables é usar o comando:

sudo service netfilter-persistent save

Usando o acima, que funciona pelo menos no Ubuntu depois de instalar o pacote netfilter-persistent (e iptables-persistent ), não há necessidade de executar manualmente os comandos iptables ou de reconfigurar o pacote (como sugerido pelo mesmo. acima).

    
por 03.11.2016 / 17:53
3
$ iptables ... DROP //command successfully drops the rule
$ sudo iptables -L   //shows rule has been deleted

Não é isso que DROP significa ou faz. De man iptables :

...the special values ACCEPT, DROP, QUEUE or RETURN. ACCEPT means to let the packet through. DROP means to drop the packet on the floor. QUEUE means...

Então, o que você fez foi adicionar uma nova regra. Ele pode efetivamente substituir qualquer número de outras regras, mas essas regras ainda existem.

Ao verificar coisas como essa (sua iptables -L output), eu a alimentaria com grep "string unique to this rule" em vez de usar seus olhos. É mais fácil e rápido de fazer e menos propenso a erros.

iptables -L | grep "some unique string"

Se você quiser excluir uma regra, use a opção -D ; a página man descreve duas formas disso:

-D, --delete chain rule-specification

-D, --delete chain rulenum

Delete one or more rules from the selected chain. There are two versions of this command: the rule can be specified as a number in the chain (starting at 1 for the first rule) or a rule to match.

    
por 21.04.2014 / 18:06