Dolutech

Nftables: A Evolução do Iptables e Exemplos de Utilização

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.

image 12
NFTables

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:

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:

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

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

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.

Sair da versão mobile