Como bloquear tráfego suspeito e ataques com o nftables
Aprenda a configurar o nftables no Linux para bloquear tráfego malicioso, mitigar ataques de força bruta e proteger servidores expostos à internet.
Resumo
- O nftables substitui o antigo iptables trazendo uma arquitetura unificada e muito mais eficiente para o kernel do Linux.
- Definir tabelas e correntes personalizadas organiza o fluxo de pacotes e melhora a manutenibilidade das regras de segurança.
- Regras baseadas em contadores de estado evitam o processamento repetitivo de conexões já estabelecidas e legítimas.
- A inspeção avançada de pacotes permite identificar padrões de varredura de portas e bloquear IPs maliciosos automaticamente.
- Manter o backup e a validação prévia dos arquivos de configuração evita o isolamento remoto acidental do servidor.
Por que substituir o iptables pelo nftables na segurança
Quando gerenciamos servidores expostos à internet, a filtragem de pacotes é a primeira linha de defesa contra varreduras maliciosas, robôs de força bruta e tráfego indesejado. Durante muitos anos, o iptables foi o padrão absoluto no ecossistema Linux para essa tarefa. No entanto, sua arquitetura antiga sofria com duplicação de código no kernel e perda de desempenho sob cargas massivas de rede. O nftables surge como a evolução moderna, unificando os subsistemas de rede em uma infraestrutura flexível e de alta performance.
Na prática, o nftables otimiza a forma como o kernel avalia as regras de rede, utilizando tabelas genéricas e conjuntos de dados indexados por hash. Antes de aplicar essas regras de filtragem na infraestrutura de borda, profissionais costumam validar a integridade da rede e a visibilidade de rotas locais, utilizando ferramentas de diagnóstico como como inspecionar rotas e tabelas ARP no Linux com ip route para garantir que o tráfego legítimo continue fluindo sem gargalos ou perda de pacotes inesperados.
Estrutura básica e sintaxe moderna das tabelas
A arquitetura do nftables abandona a rigidez das tabelas fixas do iptables e adota um modelo baseado em tabelas, correntes e regras definidas pelo usuário. Uma tabela no nftables pertence a uma família de protocolos específica, como inet, que abrange simultaneamente tráfego IPv4 e IPv6, simplificando drasticamente a manutenção das regras de segurança.
Para criar uma nova tabela e uma corrente de filtragem básica voltada para o tráfego de entrada, utilizamos a ferramenta de linha de comando nft. O exemplo abaixo demonstra como inicializar esse ambiente de forma limpa, garantindo que o servidor aceite conexões já estabelecidas e bloqueie o restante:
nft add table inet firewall
nft add chain inet firewall input { type filter hook input priority 0 \\; policy drop \\;
bt add rule inet firewall input ct state established,related accept
bt add rule inet firewall input iif lo accept
Filtragem avançada e bloqueio de conexões suspeitas
Proteger um servidor moderno exige ir além do básico 'aceitar ou recusar'. Com o nftables, podemos implementar limites de taxa (rate limiting) para conter tentativas de adivinhação de senha em serviços expostos, como SSH, ou mitigar ataques de negação de serviço distribuído em camada de rede antes que alcancem as aplicações.
Podemos criar conjuntos dinâmicos que armazenam endereços IP detectados em atividades suspeitas por meio de varreduras de portas. Essa abordagem automatizada reduz o esforço operacional e protege os recursos computacionais da máquina contra abusos constantes vindos da internet aberta, complementando outras análises de tráfego, como o monitoramento em tempo real discutido em como monitorar tráfego de rede no Linux em tempo real com iftop.
Regras dinâmicas para mitigação de força bruta
Ataques de força bruta tentam adivinhar credenciais testando centenas de combinações por minuto. No nftables, podemos interceptar essas tentativas criando uma regra que monitora a taxa de pacotes por IP de origem e adiciona automaticamente os infratores a uma lista de bloqueio temporária.
O comando abaixo ilustra como criar um conjunto tipado para armazenar endereços bloqueados e uma regra que limita novas conexões na porta de administração remota:
nft add set inet firewall blocked_ips { type ipv4_addr\\; flags interval\\; timeout 1h\\; }
nft add rule inet firewall input tcp dport 22 ct state new ip saddr @blocked_ips drop
nft add rule inet firewall input tcp dport 22 ct state new limit rate 5/minute burst 3 packets accept
Persistência e boas práticas de gerenciamento
Um erro comum ao configurar firewalls no Linux é aplicar as regras diretamente via linha de comando sem salvá-las, fazendo com que todo o trabalho seja perdido após uma simples reinicialização do sistema operacional. Para evitar surpresas desagradáveis, o arquivo de configuração padrão costuma ficar localizado em /etc/nftables.conf.
Antes de reiniciar o serviço ou aplicar novas regras em produção, execute sempre o comando de validação de sintaxe para certificar-se de que não há erros de digitação que possam trancar o acesso administrativo ao servidor remoto. Para aprofundar esses conceitos na prática em produção, confira também nossa análise técnica sobre Como medir ripple e ruído em fontes lineares na bancada.
Considerações Finais e Operação Segura
A adoção do nftables representa um salto significativo em termos de desempenho, clareza e flexibilidade para administradores de sistemas e engenheiros de redes. Ao abandonar a complexidade legada e abraçar uma sintaxe mais limpa, torna-se muito mais viável manter políticas de segurança rigorosas em servidores expostos à nuvem pública.
Lembre-se de que a segurança de uma infraestrutura é um processo contínuo de monitoramento, ajustes finos e testes regulares de conectividade. Combine o uso de regras bem estruturadas de filtragem com auditorias frequentes de logs para garantir que sua borda permaneça resiliente diante das ameaças em constante evolução.