1001Ferramentas
🛡️Geradores

Gerador de Comando iptables

Monta uma regra iptables para INPUT/OUTPUT/FORWARD: protocolo, porta, ação (ACCEPT, DROP, REJECT).


  

iptables em profundidade: tabelas, chains, targets e regras persistentes

O iptables é a interface em userspace para o framework netfilter dentro do kernel Linux. Ele organiza regras em tabelas, cada tabela tem chains (listas de regras conectadas a um ponto específico do caminho do pacote) e cada regra envia o tráfego correspondente para um target (ACCEPT, DROP, REJECT, etc.). Embora o nftables seja o substituto oficial desde o kernel 3.13, o iptables segue sendo o firewall Linux mais usado em produção. Esta ferramenta ajuda a gerar comandos sintaticamente corretos; você continua responsável por testar em laboratório e por não se trancar do lado de fora de uma máquina remota.

Tabelas e chains

  • filter (padrão) — chains INPUT (tráfego endereçado ao host), OUTPUT (tráfego gerado localmente), FORWARD (tráfego roteado por ele).
  • nat — chains PREROUTING (reescreve destino antes do routing), POSTROUTING (reescreve origem depois do routing), OUTPUT. Usada para NAT, port forwarding e masquerading.
  • mangle — modifica campos do pacote (TOS, TTL, MARK).
  • raw — roda antes do conntrack; usada para marcar NOTRACK.
  • security — regras integradas ao SELinux.

Sintaxe e targets comuns

A forma geral é iptables -t <tabela> -A <chain> <match> -j <target>. Comandos importantes: -A append, -I insere no topo, -D apaga, -L lista, -F limpa, -N cria chain de usuário, -P define a política padrão. Targets comuns:

  • ACCEPT — deixa o pacote passar.
  • DROP — descarta em silêncio.
  • REJECT — descarta e responde com erro ICMP (mais visível, menos stealth).
  • LOG — copia o cabeçalho para o dmesg/syslog (junto com --log-prefix).
  • MASQUERADE — SNAT para o IP da interface de saída (típico de gateway doméstico).
  • DNAT / SNAT — reescreve IP/porta de destino ou origem.
  • RETURN — sai de uma chain de usuário e continua na chain pai.

Exemplos comentados

# Permite established/related (mantém tráfego de retorno funcionando)
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Permite SSH de uma /24 confiável
iptables -A INPUT -p tcp -s 10.0.0.0/24 --dport 22 -j ACCEPT

# Servidor web
iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

# Loga e descarta o resto
iptables -A INPUT -j LOG --log-prefix "INPUT_DROP: " --log-level 4
iptables -A INPUT -j DROP

# Define políticas padrão (depois de liberar o que precisa!)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Compartilha conexão (NAT)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Port forward 80 -> interno 10.0.0.5:8080
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 10.0.0.5:8080

Persistir regras após reboot

As regras do iptables ficam na memória do kernel e somem em todo reboot. Para persistir, faça dump e restaure no boot:

# Debian/Ubuntu
apt install iptables-persistent
iptables-save  > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6

# Família RHEL/CentOS (legado)
service iptables save

# systemd genérico
iptables-save > /etc/iptables.rules
# crie um unit que rode `iptables-restore < /etc/iptables.rules`

Alternativas modernas

nftables é o sucessor oficial: binário único (nft), sintaxe unificada para IPv4/IPv6, atualizações atômicas do ruleset, sets nomeados. Prefira em deployments novos. firewalld (RHEL/Fedora) e ufw (Ubuntu) são wrappers de alto nível — geram regras iptables/nftables por baixo e são mais fáceis para desktop ou servidor único. Em hosts com containers, Docker, Podman e Kubernetes injetam suas próprias regras; nunca faça iptables -F em um host com Docker — você quebra a rede de todos os containers.

Uso autorizado e educacional

O iptables é defensivo por natureza, mas um firewall mal configurado pode ser tão danoso quanto a ausência dele. Sempre: (1) teste em VM ou container antes de aplicar em host remoto; (2) deixe um rescue script agendado via at now + 5 minutes que limpa o firewall, para não se trancar via SSH; (3) documente as políticas e revise periodicamente. Em pentests, registre toda alteração feita em regras de filtragem e desfaça ao final.

FAQ

iptables substitui o ufw? Não — o ufw é um wrapper que traduz comandos simples (ufw allow 22) em regras iptables/nftables. Use um ou o outro, não os dois.

Devo migrar para nftables? Em servidores novos, sim — é o substituto moderno. Em frotas existentes, iptables continua funcionando perfeitamente e o kernel traduz internamente via iptables-nft.

A ordem importa? Sim — as regras são avaliadas de cima para baixo e a primeira correspondência vence. Coloque ACCEPTs de alto tráfego no topo e DROPs amplos no final.

Por que perdi o SSH? Provavelmente porque definiu -P INPUT DROP antes de adicionar um ACCEPT para a porta 22. Sempre libere o SSH primeiro ou agende um flush via at.

Quebra cron ou Docker? Não diretamente. Mas iptables -F em host com Docker apaga as chains criadas pelo Docker (DOCKER, DOCKER-USER) e quebra a rede dos containers até o daemon recriá-las.

Ferramentas Relacionadas