Veja como listar e apagar regras do iptables pelo número ou pela regra, salvar as mudanças e fazer o mesmo no nftables, firewalld e ufw.
Uma regra de firewall esquecida pode bloquear o acesso a um serviço ou deixar o servidor exposto. Antes de apagar qualquer coisa, descubra quem gerencia o firewall do seu servidor: se for uma ferramenta como CSF, firewalld, ufw, fail2ban ou Docker, a regra apagada à mão volta na próxima reinicialização dela.
Quem cuida do firewall do seu servidor
| Ferramenta | Como identificar | Gerencie com |
|---|---|---|
| CSF (servidores cPanel) | Existe o comando csf; chains como LOCALINPUT e DENYIN | csf |
| firewalld (padrão no AlmaLinux e Rocky) | systemctl is-active firewalld mostra active | firewall-cmd |
| ufw (comum no Ubuntu) | ufw status mostra Status: active | ufw |
| fail2ban | Chains ou tabelas com f2b no nome | fail2ban-client |
| Nenhuma das anteriores | Regras criadas à mão ou por script | iptables ou nft |
Vale saber também que, nas distribuições atuais, o comando iptables é uma camada de compatibilidade sobre o nftables. Confira com iptables -V: aparece (nf_tables) na maioria dos sistemas novos, ou (legacy) nos antigos.
Como listar as regras do iptables
Todas as regras, como comandos (ótimo para copiar e adaptar):
iptables -S
Em formato de tabela, com contadores e o número de cada linha:
iptables -L -n -v --line-numbers
Só uma chain, por exemplo a de entrada:
iptables -L INPUT -n -v --line-numbers
O -n mostra IPs e portas como números, sem tentar traduzir para nomes. Sem ele, a listagem fica lenta e mostra nomes como ddi-tcp-1 no lugar da porta 8888. O -v mostra a interface e os contadores de pacotes e bytes de cada regra, úteis para saber se a regra está sendo usada.
Outras tabelas e IPv6:
iptables -t nat -L -n -v --line-numbers
ip6tables -L -n -v --line-numbers
Como apagar uma regra do iptables pelo número
- Liste a chain com os números das linhas:
iptables -L INPUT -n --line-numbers. - Apague pela posição. Para remover a regra 3 da chain INPUT:
iptables -D INPUT 3 - Liste de novo antes de apagar a próxima. Ao remover uma regra, as de baixo sobem uma posição. Se for apagar várias, comece pela de número maior.
Como apagar uma regra pela especificação
Pegue a linha exata no iptables -S e troque o -A por -D. Por exemplo, se a listagem mostra:
-A INPUT -s 203.0.113.50/32 -j DROP
o comando para apagar é:
iptables -D INPUT -s 203.0.113.50/32 -j DROP
Zerar contadores e limpar chains
Para zerar os contadores de pacotes e bytes, sem apagar nada: iptables -Z.
Para apagar todas as regras e voltar a aceitar todo o tráfego, mude a política padrão para ACCEPT antes de limpar:
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -X
iptables -t nat -F
iptables -t mangle -F
iptables -F antes de mudá-la, todo o tráfego é bloqueado, inclusive o seu SSH, e só o console do servidor salva. Em servidor com Docker, limpar as tabelas também derruba a rede dos contêineres até o Docker ser reiniciado.Como salvar as regras para sobreviverem ao reboot
Regras criadas ou apagadas com iptables valem só até a próxima reinicialização. Primeiro, guarde sempre uma cópia do estado atual:
iptables-save > /root/iptables-backup.rules
Para voltar a ela: iptables-restore < /root/iptables-backup.rules.
Ubuntu e Debian:
apt install iptables-persistent
netfilter-persistent save
As regras ficam em /etc/iptables/rules.v4 e /etc/iptables/rules.v6 e são carregadas no boot.
AlmaLinux e Rocky: o padrão é o firewalld (veja abaixo). Se você realmente quer gerenciar com iptables puro no AlmaLinux 9, o pacote é o iptables-nft-services, que salva em /etc/sysconfig/iptables com service iptables save. A Red Hat marca esse pacote como obsoleto no RHEL 9; para configurações novas, prefira firewalld ou nftables.
iptables-apply (vem no pacote iptables do Debian e Ubuntu). Ele aplica um arquivo de regras e, se você não confirmar em alguns segundos, desfaz sozinho, evitando que você fique trancado fora.Como fazer o mesmo no nftables
# listar tudo, com o identificador (handle) de cada regra
nft -a list ruleset
# apagar uma regra pelo handle (tabela, chain e número do handle)
nft delete rule inet filter input handle 12
Para salvar, grave o conjunto atual no arquivo carregado no boot (/etc/nftables.conf no Debian e Ubuntu, /etc/sysconfig/nftables.conf no AlmaLinux) e ative o serviço com systemctl enable nftables. Regras criadas pelo comando iptables também aparecem no nft list ruleset, mas continue gerenciando essas pelo próprio iptables.
Equivalentes no firewalld, ufw e CSF
firewalld:
firewall-cmd --list-all
firewall-cmd --list-rich-rules
firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="203.0.113.50" reject'
firewall-cmd --reload
ufw:
ufw status numbered
ufw delete 3
CSF (servidores com cPanel):
csf -g 203.0.113.50
csf -dr 203.0.113.50
csf -tr 203.0.113.50
csf -r
O -g procura o IP nas regras, o -dr remove um bloqueio permanente, o -tr remove um bloqueio temporário e o -r recarrega o firewall.
fail2ban: fail2ban-client set sshd unbanip 203.0.113.50.
Problemas comuns
iptables: Bad rule (does a matching rule exist in that chain?)
Ao apagar pela especificação, a regra precisa ser idêntica à existente. Copie a linha do iptables -S em vez de digitar de memória.
iptables: Index of deletion too big
Não existe regra com esse número na chain. Liste de novo: os números mudam a cada regra apagada.
Warning: iptables-legacy tables present
Existem regras nos dois sistemas, o antigo (legacy) e o nftables. Veja as antigas com iptables-legacy -S. Misturar os dois causa comportamento difícil de entender; o ideal é migrar tudo para um só.
Apaguei a regra e ela voltou
Alguma ferramenta recria a regra: CSF, firewalld, ufw, fail2ban ou Docker. Use a ferramenta correspondente, como mostrado acima.
As regras sumiram depois de reiniciar
Elas não foram salvas. Recrie e salve com netfilter-persistent save (Ubuntu e Debian) ou use o firewalld no AlmaLinux.