O nftables é a ferramenta de firewall e filtragem de pacotes do kernel Linux, que sucedeu o tradicional iptables. Projetado para ser mais flexível e eficiente, o nftables oferece uma sintaxe simplificada, desempenho otimizado e funcionalidades avançadas. Neste artigo, vamos explorar a evolução do iptables para o nftables e apresentar exemplos práticos de uso, destacando as melhorias trazidas por essa nova ferramenta.
O Que é o Nftables?
O nftables é um framework para manipulação de pacotes de rede que foi introduzido no kernel do Linux na versão 3.13, em 2014. Ele é a evolução do sistema anterior, o iptables, e traz uma série de melhorias e novos recursos, incluindo:
- Sintaxe Simplificada: O nftables apresenta uma sintaxe mais amigável e concisa em comparação ao iptables, facilitando a configuração e manutenção das regras de firewall.
- Performance: Melhorias no desempenho, já que o nftables utiliza uma única tabela para manipulação de pacotes, em vez de várias tabelas distintas como o iptables.
- Flexibilidade: Suporte a regras e estruturas mais complexas, como sets e maps, tornando-o mais flexível e adaptável a diferentes cenários.
- Consistência: O nftables unifica a manipulação de regras IPv4, IPv6, ARP e bridges em uma única ferramenta.
Principais Diferenças entre Nftables e Iptables
1. Sintaxe Unificada e Simplificada
Uma das mudanças mais notáveis é a simplificação da sintaxe. Enquanto o iptables requer comandos separados para IPv4 e IPv6, o nftables usa uma sintaxe unificada que funciona para ambas as versões do IP, além de fornecer um conjunto de comandos mais limpo e menos redundante.
2. Uso de Tabelas, Chains e Sets
O nftables utiliza uma estrutura baseada em tabelas, chains e sets para definir as regras de firewall. Isso permite a reutilização de configurações e facilita a administração das regras:
- Tabelas: Armazenam as regras e objetos relacionados (chains e sets).
- Chains: Define um ponto específico do fluxo de pacotes (ex: entrada, saída) onde as regras serão aplicadas.
- Sets: Permitem agrupar endereços IP, portas e outras informações, tornando as regras mais eficientes e fáceis de gerenciar.
3. Flexibilidade e Desempenho
O uso de sets e maps no nftables permite agrupar e aplicar regras a diversos endereços IP, portas ou interfaces com uma única instrução. Essa abordagem resulta em um processamento de regras mais eficiente e otimizado.
Exemplo de Uso do Nftables
Vamos explorar exemplos práticos para ilustrar a sintaxe e as funcionalidades do nftables. Primeiro, é importante saber que você pode interagir com o nftables por meio do comando nft
.
1. Instalação do Nftables
Para começar a utilizar o nftables, ele deve estar instalado no seu sistema Linux. Em distribuições baseadas no Debian (como Ubuntu), você pode instalá-lo com:
sudo apt-get install nftables
Em distribuições como Fedora ou CentOS:
sudo dnf install nftables
2. Criando uma Tabela e Chains
Primeiro, vamos criar uma tabela e adicionar chains (fluxos de pacotes) para definir regras de filtragem:
sudo nft add table inet my_table
sudo nft add chain inet my_table input { type filter hook input priority 0\; }
sudo nft add chain inet my_table output { type filter hook output priority 0\; }
sudo nft add chain inet my_table forward { type filter hook forward priority 0\; }
Neste exemplo, criamos uma tabela chamada my_table
no contexto inet
, que abrange tanto IPv4 quanto IPv6. Em seguida, adicionamos três chains: input
, output
e forward
, que são os principais pontos onde as regras de firewall podem ser aplicadas.
3. Adicionando Regras de Firewall
Com as chains criadas, podemos agora adicionar regras. Por exemplo, para permitir apenas o tráfego SSH (porta 22) e bloquear todas as outras conexões de entrada:
sudo nft add rule inet my_table input tcp dport 22 accept
sudo nft add rule inet my_table input drop
- A primeira regra permite conexões TCP na porta 22.
- A segunda regra (
drop
) bloqueia todo o restante do tráfego de entrada.
4. Utilizando Sets para IPs ou Portas
Os sets do nftables permitem definir listas de endereços IP, sub-redes, portas e outros elementos, tornando as regras mais eficientes. Por exemplo, para criar um set de IPs e permitir apenas conexões a partir deles:
sudo nft add set inet my_table allowed_ips { type ipv4_addr\; }
sudo nft add element inet my_table allowed_ips { 192.168.1.10, 192.168.1.20 }
sudo nft add rule inet my_table input ip saddr @allowed_ips accept
sudo nft add rule inet my_table input drop
- O comando
add set
cria um set chamadoallowed_ips
que armazenará endereços IPv4. - O comando
add element
adiciona os endereços IP permitidos ao set. - A regra seguinte (
add rule
) permite apenas tráfego de entrada dos endereços IP definidos no set. - Finalmente, a regra
drop
bloqueia todo o restante do tráfego de entrada.
5. Bloqueando IPs com Nftables
Para bloquear um endereço IP específico, podemos simplesmente adicionar uma regra de drop:
sudo nft add rule inet my_table input ip saddr 203.0.113.45 drop
Esse comando bloqueará todas as conexões de entrada provenientes do IP 203.0.113.45
.
6. Salvando as Configurações
Para garantir que as regras do nftables sejam mantidas após uma reinicialização do sistema, salve a configuração atual com o comando:
sudo nft list ruleset > /etc/nftables.conf
E então, edite o arquivo de configuração /etc/nftables.conf
se precisar realizar ajustes futuros.
7. Limpar as Regras Existentes
Se você deseja limpar todas as regras, chains e tabelas existentes no nftables:
sudo nft flush ruleset
Esse comando removerá todas as configurações atuais, permitindo que você recomece com uma nova configuração.
Conclusão
O nftables traz uma evolução significativa em relação ao iptables, oferecendo uma sintaxe mais limpa, maior flexibilidade e um melhor desempenho. Com recursos avançados, como sets e maps, o nftables permite criar regras de firewall eficientes e gerenciáveis, tornando a configuração de segurança de redes Linux mais poderosa e acessível.
Além disso, a unificação de comandos para IPv4 e IPv6, juntamente com o suporte a scripts e configuração de regras complexas, faz do nftables a ferramenta de escolha para administradores de sistemas que desejam otimizar a segurança de seus servidores e redes.
Amante por tecnologia Especialista em Cibersegurança e Big Data, Formado em Administração de Infraestrutura de Redes, Pós-Graduado em Ciências de Dados e Big Data Analytics e Machine Learning, Com MBA em Segurança da Informação, Escritor do livro ” Cibersegurança: Protegendo a sua Reputação Digital”.