
Para limpar todas as regras no iptables eu uso isso
#!/bin/bash
echo "clearing iptables ... "
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
Isso funciona desde que não haja mais entradas no iptables, o que é verificado com
sudo iptables -L
ou
sudo iptables -S
No entanto, o tráfego que foi encaminhado para um destino diferente ainda está sendo roteado para esse destino.
Parece que os iptables limpos ainda estão ativos depois de limpá-los!
Até agora, minha única maneira de me livrar dessas regras é reinicializar o sistema, o que não é muito elegante.
EmDebianO iptables parece não funcionar como um serviço, portanto, iniciar ou parar esse serviço não funciona.
Como posso limpar ou redefinir totalmente o iptables com o efeito de que as regras definidas anteriormente sejam desativadas?
Responder1
A liberação das regras do iptables não afeta as conexões já estabelecidas com as quais foram redirecionadas
DNAT
. Está relacionado porque a entrada conntrack para pacotes UDP contém as informações de redirecionamento, que são usadas além das regras do iptables.Verifique as entradas conntrack existentes com
conntrack -L
e monitore os eventos conntrack com oconntrack -E
comando.Use o
conntrack -F
comando para limpar as entradas conntrack. Os novos pacotes UDP não serão mais redirecionados.Para gerenciar as regras do iptables como serviço, use os pacotes
netfilter-persistent
eiptables-persistent
.É melhor usar
iptables-save
/iptables-restore
comandos em vez da execução manual do arquivoiptables
. É mais seguro e atômico.Para gerenciar as regras do iptables em um host remoto use o
iptables-apply
comando, que permite reverter o conjunto de regras caso não tenha sido confirmado.
Responder2
sudo ufw status verbose; sudo iptables -L;
Talvez haja ufw em execução? Tente parar.
Você poderia contar um pouco mais sobre seu sistema, rede e qual tráfego ainda está roteado?
1-2 exemplos estão ok, incl. a regra de firewall inicial.
EDITAR:
Verificado por alguns dos meus scripts..... Também limpe as correntes.
sudo iptables -F INPUT
sudo iptables -F FORWARD
sudo iptables -F OUTPUT
Responder3
Seu script para limpar as regras do iptables é suficiente para liberar todas as regras e definir a política padrão como ACEITAR. Isso desativa efetivamente o firewall, pois não há regras e tudo é permitido.
Sabemos, pelos seus comentários, que você está enviando pacotes UDP. Você pode sentir que as regras antigas ainda estão ativas por um tempo, especialmente quando há um fluxo contínuo de pacotes UDP passando pela sua máquina de firewall. Isso ocorre principalmente porque o UDP não tem como fechar a conexão e, portanto, o firewall não sabe quando o fluxo ativo atual terminou. A única maneira é usar um tempo limite de inatividade para liberar "conexões" ativas quando não houver mais pacotes vistos.
Você tem duas opções:
- Espere um pouco antes de tentar novamente. Isso requer a interrupção de quaisquer "conexões" ativas no momento. Você pode encontrar o tempo limite do UDP em arquivos
/proc/sys/net/netfilter/nf_conntrack_udp_timeout
. - Use
conntrack
a ferramenta para excluir manualmente as "conexões" existentes.
Por favor, observe que o firewall do Linux monitora os soquetes ativos para TCP/UDP, mesmo que o UDP seja um protocolo sem conexão.