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 odmesg/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
Gerador de comando tar
Monte comandos tar (criar, extrair, listar) com compressão (gz/bz2/xz/zst), preservar permissões e exclusões.
Gerador de comando tmux
Monte comandos tmux comuns: nova sessão, anexar, dividir janela, renomear, kill-session, new-window com nome.
Gerador de Comando nmap (Completo)
Monta uma varredura nmap com alvo, intervalo de portas, tipo de scan (SYN/Connect/UDP) e detecção de serviço.