nftables vs iptables no Ubuntu 22.04: qual usar e exemplos práticos

Por · Publicado em · 8 min de leitura

Cabos de rede conectados a um patch panel em um rack de servidores
Conectores e cabos de rede em rack, adequado para conteúdos sobre firewall e infraestrutura. Foto: Brett Sayles / Pexels

Este comparativo mostra, na prática, quando usar nftables ou iptables para firewall em servidores Ubuntu 22.04. Você verá diferenças de arquitetura, prós e contras, critérios de escolha por cenário e exemplos de comandos equivalentes para configurar regras básicas, além de um passo a passo seguro de migração.

O que muda no Ubuntu 22.04: backend e compatibilidade

No Ubuntu 22.04, os comandos iptables usam por padrão o backend nf_tables (iptables-nft). Já o iptables-legacy permanece disponível via alternatives para compatibilidade. Evite misturar backends diferentes no mesmo servidor.

Você pode verificar qual backend está ativo e alternar, se necessário. Trocas podem impactar ferramentas e scripts existentes. Planeje janela de manutenção e tenha acesso de console para evitar perda de conexão.

# Verificar backend atual
iptables -V  # deve exibir (nf_tables) quando usa iptables-nft

# Listar e alternar implementations (requer sudo)
sudo update-alternatives --list iptables
sudo update-alternatives --config iptables
sudo update-alternatives --list ip6tables
sudo update-alternatives --config ip6tables

Tabela comparativa: critérios que importam na operação

Resumo dos pontos que mais afetam operação, manutenção e evolução do firewall em produção. Use como checklist rápido antes de decidir.

Critério nftables iptables (legacy)
Backend no kernel nf_tables (moderno) xtables (compatibilidade)
Regras IPv4/IPv6 unificadas Sim (tabela inet) Não (iptables e ip6tables separados)
Aplicação de regras Atômica (carrega ruleset de uma vez) Incremental (regra por regra)
Sets e mapas Nativos e escaláveis Limitados; ipset como extra
Escalabilidade com muitas regras Melhor com sets/mapas Pode degradar com milhares de regras
Sintaxe Nova, consistente entre famílias Clássica e conhecida
Compatibilidade de scripts antigos Requer adaptação/translate Alta (scripts existentes)
Ecossistema e futuro Projeto ativo e recomendado Mantido para compatibilidade
Ferramentas de gestão nft, nftables.service iptables, ip6tables, iptables-persistent
Integração UFW/Fail2ban (22.04) Suportado Suportado (via iptables-nft)

Critérios de escolha por cenário (sem paixões)

Não há resposta única. Considere operação, equipe e ferramentas. Abaixo, critérios práticos que costumam decidir a escolha.

  • Nova instalação no Ubuntu 22.04: prefira nftables. Sintaxe unificada, carga atômica e sets facilitam manutenção.
  • Scripts herdados críticos e estáveis: mantenha iptables (ou iptables-nft) enquanto prepara migração controlada.
  • Ambiente com muitas portas/IPs dinâmicos: nftables com sets e mapas tende a simplificar e escalar melhor.
  • Equipe domina iptables e troca é sensível: siga com iptables-nft, mas padronize e evite misturar backends.
  • Uso de UFW: o backend padrão no 22.04 é nftables; alinhe decisões com políticas definidas.
  • Observabilidade e auditoria: nftables oferece ‘nft monitor’; em iptables, padronize ‘iptables-save’ e logs do kernel.

Exemplo prático com nftables (Ubuntu 22.04)

Exemplo de política padrão: bloquear entrada, permitir saída, liberar SSH (22/tcp), HTTP (80/tcp) e HTTPS (443/tcp), aceitar tráfego estabelecido e ICMP/ICMPv6. Atenção: aplicar regras pode encerrar sua sessão SSH; use console ou uma segunda sessão de teste.

O arquivo /etc/nftables.conf será a fonte única e o serviço nftables manterá as regras no boot.

# Limpar e aplicar configuração nftables (Ubuntu 22.04)
sudo nft flush ruleset
sudo tee /etc/nftables.conf >/dev/null <<'EOF'
table inet filter {
  sets {
    allowed_tcp_ports = { type inet_service; elements = { 22, 80, 443 } }
  }
  chains {
    input {
      type filter hook input priority 0; policy drop;
      ct state established,related accept
      iif lo accept
      ct state invalid drop
      ip protocol icmp accept
      ip6 nexthdr icmpv6 accept
      tcp dport @allowed_tcp_ports accept
    }
    forward { type filter hook forward priority 0; policy drop; }
    output  { type filter hook output  priority 0; policy accept; }
  }
}
EOF

# Validar sintaxe e aplicar
sudo nft -c -f /etc/nftables.conf && sudo nft -f /etc/nftables.conf

# Persistir no boot
sudo systemctl enable --now nftables

# Ver ruleset carregado
sudo nft list ruleset

Exemplo prático equivalente com iptables (legacy)

As regras abaixo implementam a mesma política usando iptables e ip6tables. Em servidores 22.04, mesmo com iptables-nft, os comandos funcionam. Para usar legacy puro, troque o alternative para iptables-legacy. Teste fora do horário crítico e mantenha acesso de recuperação.

# Limpar regras atuais
sudo iptables -F && sudo iptables -X
sudo ip6tables -F && sudo ip6tables -X

# Políticas padrão
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

# Regras básicas
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
sudo iptables -A INPUT -p icmp -j ACCEPT
sudo ip6tables -A INPUT -p ipv6-icmp -j ACCEPT
sudo iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT

# Persistir no boot (salva v4 e v6)
sudo apt-get update && sudo apt-get install -y iptables-persistent
sudo netfilter-persistent save

# Conferir
sudo iptables -S
sudo ip6tables -S

Migração segura de iptables para nftables (tradução e testes)

O caminho mais seguro é traduzir regras vigentes, validar, testar em staging ou janela controlada, e só então ativar no boot. Faça snapshot/backup antes de alterar firewall em produção.

Use as ferramentas de translate para obter um ponto de partida e ajuste para a tabela inet. Valide com ‘nft -c’ e tenha um plano de rollback.

# Exportar regras atuais
sudo iptables-save > /tmp/rules.v4
sudo ip6tables-save > /tmp/rules.v6

# Traduzir para sintaxe nftables (gera base inicial)
sudo iptables-restore-translate -f /tmp/rules.v4 > /tmp/translated-v4.nft
sudo ip6tables-restore-translate -f /tmp/rules.v6 > /tmp/translated-v6.nft

# Opcional: mesclar/ajustar para uma única table inet em /etc/nftables.conf
# Validação e aplicação de teste
sudo nft -c -f /etc/nftables.conf && sudo nft -f /etc/nftables.conf

# Habilitar no boot
sudo systemctl enable --now nftables

Integração com UFW, Fail2ban e acesso SSH

Se você usa UFW no 22.04, o backend padrão é nftables. Evite gerenciar manualmente nftables e UFW ao mesmo tempo para não conflitar regras. Centralize em uma camada.

O Fail2ban possui ações tanto para nftables quanto para iptables; escolha a correspondente ao seu backend em uso.

Ao endurecer regras, proteja seu acesso: bastion/port-knocking/2FA reduzem risco de lockout, sobretudo em ambientes multiusuário.

Monitoramento e troubleshooting das regras de firewall

Para diagnosticar, observe o ruleset carregado, eventos do netfilter e contadores por regra. Ative logs de drop quando necessário. Em iptables, use listagens com contadores e verifique sockets em escuta.

Evite aplicar mudanças cegas. Valide com ‘-c’, use sessões paralelas e defina um rollback automático sempre que possível.

# nftables: ruleset, eventos e logs de serviço
sudo nft list ruleset
sudo nft monitor
sudo journalctl -u nftables -b

# iptables: regras com contadores
sudo iptables -L -n -v
sudo ip6tables -L -n -v

# Portas em escuta/ligação
ss -lntupe | head

Quando cada opção é melhor (resumo acionável)

Use nftables em instalações novas, quando deseja regras unificadas IPv4/IPv6, aplicação atômica e sets para grandes listas. Use iptables (ou iptables-nft) quando scripts herdados são críticos e a equipe precisa de continuidade imediata, planejando a migração gradativa.

Em ambos os casos, padronize o backend, documente fluxos e automatize a aplicação para reduzir erros. Veja também o checklist de segurança para VPS Linux.

Perguntas frequentes

O nftables substitui o iptables no Ubuntu 22.04?

nftables é o framework moderno do kernel. No Ubuntu 22.04, os binários iptables usam por padrão o backend nf_tables (iptables‑nft). O iptables‑legacy segue disponível para compatibilidade, mas a recomendação para novas configurações é adotar nftables.

Posso usar iptables e nftables ao mesmo tempo?

Evite misturar backends. Você pode usar iptables‑nft (frente compatível) sobre nf_tables ou adotar nft diretamente, mas não misture com iptables‑legacy no mesmo host. Defina um backend padrão e padronize ferramentas e automações para evitar regras conflitantes.

Como descubro se meu iptables usa o backend nftables?

Execute “iptables -V”: se aparecer “(nf_tables)”, você está usando iptables‑nft. Também é possível checar e alternar com “update‑alternatives --list|--config iptables” e o equivalente para ip6tables. Faça mudanças apenas em janelas controladas.

UFW usa nftables ou iptables no 22.04?

No Ubuntu 22.04, o UFW utiliza o backend nftables. Você pode usá‑lo como camada de alto nível para regras comuns e registrar exceções, mas evite administrar manualmente nftables e UFW ao mesmo tempo no mesmo servidor.

ipset ainda é necessário com nftables?

Geralmente, não. nftables possui sets e mapas nativos com boa performance. Em iptables clássico, ipset continua útil para grandes listas. Se migrar para nftables, reestruture listas como sets e simplifique regras de correspondência.

Quer revisar sua estratégia de firewall no Ubuntu 22.04?

Converse sobre sua situação atual, riscos e próximos passos para padronizar backend, automatizar regras e planejar migração segura quando fizer sentido.

Falar sobre firewall e migração

Veja também