REDE ONLINE · 7 fabricantes · 84 artigos · 1.2k comandos
v2.1.0 PT_BR
CircuitoCarioca
Home
↳ Visão geral Datacom Nokia Huawei Mikrotik Cisco Intelbras Parks
↳ Visão geral VLAN QinQ MPLS BGP OSPF
Ferramentas
↳ Visão geral Linux Windows Zabbix Grafana LibreNMS Firewall VPN Hardening
Wiki Comunidade Sobre
entrar cadastrar
firewall · netfilter · legado ainda dominante

iptables

A interface de firewall Linux mais usada historicamente — arquitetura, tabelas, chains, NAT e por que hoje roda como camada de compatibilidade sobre o nftables.

Nesta página

1. Contexto histórico e normativo 2. Arquitetura netfilter 3. Tabelas e chains 4. Sintaxe básica de regra 5. Exemplo real — servidor RADIUS/NOC 6. NAT — MASQUERADE, DNAT, SNAT 7. Persistência de regras 8. Verificação e teste 9. Monitoramento e métricas 10. Boas práticas de segurança 11. Comparação com nftables 12. Troubleshooting 13. Glossário 14. Referências

1. Contexto histórico e normativo

O iptables é a ferramenta de linha de comando para configurar o netfilter, o subsistema de filtragem de pacotes do kernel Linux introduzido no Linux 2.4 (2001), sucedendo o ipchains (Linux 2.2) e o ipfwadm (Linux 2.0). Embora tenha sido a interface dominante por duas décadas, o nftables (Linux 3.13, 2014) foi projetado como seu sucessor, e as distribuições modernas adotaram o iptables-nft — uma camada de compatibilidade que traduz a sintaxe clássica do iptables para o backend nftables.

A relevância do iptables hoje está na enorme base instalada de scripts, documentação e conhecimento operacional, além de sua presença em sistemas legados e embarcados. Para novos projetos, recomenda-se nftables, mas compreender iptables continua essencial para administrar sistemas em produção.

2. Arquitetura netfilter

O netfilter insere hooks no stack de rede do kernel em cinco pontos de decisão:

  • NF_IP_PRE_ROUTING — pacote entra na máquina.
  • NF_IP_LOCAL_IN — pacote destinado ao próprio host.
  • NF_IP_FORWARD — pacote atravessando a máquina (roteador).
  • NF_IP_LOCAL_OUT — pacote gerado pelo próprio host.
  • NF_IP_POST_ROUTING — pacote prestes a sair.

Cada hook está associado a uma ou mais tabelas e chains. O conntrack (connection tracking) é o mecanismo que permite ao kernel reconhecer pacotes de conexões já estabelecidas, permitindo regras baseadas em estado (ESTABLISHED, RELATED, NEW, INVALID).

3. Tabelas e chains

TabelaFunçãoChains principais
filterPermitir/bloquear pacoteINPUT, OUTPUT, FORWARD
natTradução de endereçoPREROUTING, POSTROUTING, OUTPUT
mangleAlteração de cabeçalho (QoS, TTL)PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
rawExceções ao conntrackPREROUTING, OUTPUT

4. Sintaxe básica de regra

iptables -A INPUT -p tcp --dport 22 -s 203.0.113.0/24 -j ACCEPT
#         │       │  │        │            │              │
#         │       │  │        │            │              └─ ação (target)
#         │       │  │        │            └─ origem restrita
#         │       │  │        └─ porta de destino
#         │       │  └─ protocolo
#         │       └─ chain
#         └─ -A (append) / -I (insert) / -D (delete)

Ordem importa: as regras são avaliadas sequencialmente; a primeira que casar decide.

5. Exemplo real — proteção de servidor RADIUS/NOC

#!/bin/bash
# firewall-radius.sh — protege servidor FreeRADIUS + gerência

iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Loopback
iptables -A INPUT -i lo -j ACCEPT

# Conexões já estabelecidas
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# RADIUS: auth (1812), accounting (1813), CoA/PoD (3799) — só NAS conhecidos
iptables -A INPUT -p udp --dport 1812 -s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -p udp --dport 1813 -s 10.0.0.0/24 -j ACCEPT
iptables -A INPUT -p udp --dport 3799 -s 10.0.0.0/24 -j ACCEPT

# SSH de gerência — só rede interna do NOC
iptables -A INPUT -p tcp --dport 2200 -s 10.10.0.0/24 -j ACCEPT

# Log antes de descartar
iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROP: " --log-level 4

6. NAT — MASQUERADE, DNAT, SNAT

# MASQUERADE — NAT dinâmico (IP de saída pode mudar)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# SNAT — NAT com IP de saída fixo (mais eficiente quando aplicável)
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.5

# DNAT — redireciona porta pública para serviço interno
iptables -t nat -A PREROUTING -p tcp --dport 8443 -j DNAT --to-destination 10.0.0.10:80

7. Persistência de regras

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

iptables-restore < /etc/iptables/rules.v4

8. Verificação e teste

iptables -L -n -v --line-numbers
iptables -L INPUT -n -v   # ver contadores
iptables -D INPUT 3       # remover regra específica

Sempre teste com plano de reversão agendado (ex.: at now + 5 minutes para resetar regras).

9. Monitoramento e métricas

Os contadores de cada regra podem ser coletados e expostos a sistemas de monitoramento como Zabbix ou PRTG. Exemplo de script que verifica se o firewall está ativo:

#!/bin/bash
# check_iptables.sh
if iptables -L INPUT -n | grep -q "DROP"; then
  echo "OK: firewall ativo"
  exit 0
else
  echo "CRITICAL: firewall sem regras"
  exit 2
fi

10. Boas práticas de segurança

  • Política padrão DROP em INPUT e FORWARD.
  • Sempre permitir ESTABLISHED,RELATED antes de regras restritivas.
  • Restringir SSH de gerência a redes específicas.
  • Logar pacotes descartados para auditoria.
  • Usar conntrack para regras baseadas em estado.

11. Comparação com nftables

Característicaiptablesnftables
SintaxeVerbosa, específica por protocoloDeclarativa, unificada
IPv4 + IPv6Ferramentas separadas (iptables/ip6tables)Unificado (uma regra serve para ambos)
Substituição atômicaRegra por regraBloco inteiro de uma vez
StatusLegado, camada de compatibilidadeSucessor oficial

12. Troubleshooting

Conexão remota travada após aplicar regra

Provável falta da regra ESTABLISHED,RELATED ou porta de gerência bloqueada. Use plano de reversão agendado.

Regra parece correta mas não funciona

Checar contadores (-v). Se não incrementam, o pacote não está casando — geralmente ordem errada.

Regras somem após reboot

Faltou iptables-persistent + iptables-save (seção 7).

13. Glossário

Netfilter Subsistema de filtragem de pacotes do kernel Linux.
iptables Ferramenta de linha de comando para configurar o netfilter.
nftables Sucessor oficial do iptables, com sintaxe unificada.
conntrack Mecanismo de rastreamento de conexões do kernel.
Masquerade Tipo de NAT dinâmico que usa o IP da interface de saída.
DNAT Tradução de endereço de destino (port forwarding).
SNAT Tradução de endereço de origem (IP fixo de saída).
Chain Sequência de regras avaliadas em ordem.

14. Referências

  • Projeto netfilter/iptables — documentação oficial (netfilter.org).
  • RFC 768 — User Datagram Protocol (UDP), relacionado a portas de RADIUS.
  • RFC 2865/2866 — RADIUS (portas 1812/1813, contexto do exemplo).
  • Páginas relacionadas: nftables, pfSense.

Conteúdo técnico independente, baseado em conhecimento consolidado e estável da ferramenta. Nenhum trecho é cópia literal de fonte de terceiro.