Limpar e redefinir iptables no Debian

Limpar e redefinir iptables no Debian

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

  1. 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.

  2. Verifique as entradas conntrack existentes com conntrack -Le monitore os eventos conntrack com o conntrack -Ecomando.

  3. Use o conntrack -Fcomando para limpar as entradas conntrack. Os novos pacotes UDP não serão mais redirecionados.

  4. Para gerenciar as regras do iptables como serviço, use os pacotes netfilter-persistente iptables-persistent.

  5. É melhor usar iptables-save/ iptables-restorecomandos em vez da execução manual do arquivo iptables. É mais seguro e atômico.

  6. Para gerenciar as regras do iptables em um host remoto use o iptables-applycomando, 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:

  1. 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.
  2. Use conntracka 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.

informação relacionada