nftables

Origem: Wikipédia, a enciclopédia livre.
Nftables
Autor The Netfilter Project
Desenvolvedor The Netfilter Project
Versão estável
1.0.1 / 18 de novembro de 2021; 4 months ago (2021-11-18)
Versões anteriores
Repositório
Escrito em C
Sistema Operacional Linux
Plataforma Netfilter
Tipo Filtragem de pacote
License GPLv2
Website

nftables é um subsistema do kernel Linux que fornece filtragem e classificação de pacotes de rede /datagramas/quadros. Ele está disponível desde o kernel Linux 3.13 lançado em 19 de janeiro de 2014.[1]

nftables substitui as partes legadas do iptables do Netfilter. Entre as vantagens do nftables sobre o iptables está menos duplicação de código e extensão mais fácil para novos protocolos. nftables é configurado por meio do utilitário de espaço do usuário nft, enquanto as ferramentas legadas são configuradas por meio dos utilitários iptables, ip6tables, arptables e ebtables frameworks.

O nftables utiliza os blocos de construção da infraestrutura do Netfilter, como os ganchos existentes na pilha de rede, sistema de rastreamento de conexão, componente de enfileiramento de espaço de usuário e subsistema de registro.

nft[editar | editar código-fonte]

Sintaxe da linha de comando[editar | editar código-fonte]

Um comando para descartar qualquer pacote com endereço IP de destino 1.2.3.4:

nft add rule ip filter output ip daddr 1.2.3.4 drop

Observe que a nova sintaxe difere significativamente daquela do iptables, em que a mesma regra seria escrita:

iptables -A OUTPUT -d 1.2.3.4 -j DROP

A nova sintaxe pode parecer mais detalhada, mas também é muito mais flexível. O nftables incorpora estruturas de dados avançadas como dicionários, mapas e concatenações que não existem no iptables. Fazer uso deles pode reduzir significativamente o número de cadeias e regras necessárias para expressar um determinado projeto de filtragem de pacotes.

A ferramenta iptables-translate pode ser usada para traduzir muitas regras iptables existentes para regras nftables equivalentes.[2][3] Debian 10 (Buster), entre outras distribuições Linux, usa nftables junto com iptables-translate como o backend de filtragem de pacotes padrão.[4]

História[editar | editar código-fonte]

O projeto foi apresentado publicamente pela primeira vez no Netfilter Workshop 2008 por Patrick McHardy da Netfilter Core Team.[5] A primeira versão prévia da implementação do kernel e do espaço do usuário foi dada em março de 2009.[6] Embora a ferramenta tenha sido chamada de "a maior mudança no firewall do Linux desde a introdução do iptables em 2001", ela recebeu pouca atenção da imprensa.[7] O notável hacker Fyodor Vaskovich (Gordon Lyon) disse que está "ansioso por seu lançamento geral no kernel Linux mainstream".[7]

O projeto ficou em fase alfa, e o site oficial foi removido em 2009. Em março de 2010, e-mails do autor nas listas de discussão do projeto mostraram que o projeto ainda estava ativo e se aproximando de uma versão beta,[8][9] mas esta nunca foi enviada oficialmente. Em outubro de 2012, Pablo Neira Ayuso propôs uma camada de compatibilidade para o iptables[10] e anunciou uma possível inclusão do projeto no kernel principal.

Em 16 de outubro de 2013, Pablo Neira Ayuso enviou uma solicitação de pull do núcleo nftables para a árvore principal do kernel Linux.[11] Ele foi incorporado à linha principal do kernel em 19 de janeiro de 2014, com o lançamento do kernel Linux versão 3.13.[1]

Visão geral[editar | editar código-fonte]

O mecanismo do kernel nftables adiciona uma máquina virtual simples ao kernel do Linux, que é capaz de executar bytecode para inspecionar um pacote de rede e tomar decisões sobre como esse pacote deve ser tratado. As operações implementadas por esta máquina virtual são intencionalmente tornadas básicas. Ele pode obter dados do próprio pacote, dar uma olhada nos metadados associados (interface de entrada, por exemplo) e gerenciar dados de rastreamento de conexão. Operadores aritméticos, bit a bit e de comparação podem ser usados para tomar decisões com base nesses dados. A máquina virtual também é capaz de manipular conjuntos de dados (normalmente, endereços IP), permitindo que várias operações de comparação sejam substituídas por uma única pesquisa de conjunto.[12]

A organização descrita acima é contrária ao código de firewall do iptables, que tem reconhecimento de protocolo embutido tão profundamente na lógica que o código teve que ser replicado quatro vezes — para IPv4, IPv6, ARP e Ethernet bridging — como o firewall os mecanismos são muito específicos do protocolo para serem usados de maneira genérica.[12]

As principais vantagens do nftables sobre o iptables são a simplificação da ABI do kernel Linux, redução da duplicação de código, relatório de erros aprimorado e execução mais eficiente, armazenamento e alterações incrementais das regras de filtragem. Tradicionais comandos como iptables, ip6tables, arptables, e ebtables( Para IPV4, IPV6, ARP e Ethernet Bridgining respectivamente), foram substituídos pelo nft através de um comando único, provendo configurações do firewall em alto nível dentro dentro do kernel do Linux.

O nftables também oferece uma API de espaço de usuário aprimorada que permite substituições atômicas de uma ou mais regras de firewall em uma única transação Netlink. Isso acelera as alterações de configuração do firewall para configurações com grandes conjuntos de regras; também pode ajudar a evitar condições de corrida enquanto as mudanças de regra estão sendo executadas. nftables também inclui recursos de compatibilidade para facilitar a transição de firewalls anteriores, utilitários de linha de comando para converter regras no formato iptables,[13] e versões compatíveis com sintaxe de comandos iptables que usam o backend nftables.[14]

Referências

  1. a b «nftables, the successor of iptables». Linux 3.13. kernelnewbies.org. 19 de janeiro de 2014. Consultado em 4 de março de 2016 
  2. «Moving from iptables to nftables - nftables wiki» 
  3. «List of available translations via iptables-translate tool - nftables wiki» 
  4. «Nftables - Debian Wiki» 
  5. «User day program – NFWS2008». workshop.netfilter.org. 3 de outubro de 2008. Consultado em 22 de fevereiro de 2014 
  6. initial release announcement.
  7. a b Gray, Patrick (26 de março de 2009). «NEWS: Linux Gets New Firewall». Risky.biz 
  8. «Linux Netfilter Devel – Re: Current state of nftables». Spinics.net. Consultado em 20 de janeiro de 2014 
  9. «Linux Netfilter Devel – Re: Current state of nftables». Spinics.net. Consultado em 20 de janeiro de 2014 
  10. «Linux Netfilter Devel – [RFC] back on nf_tables (plus compatibility layer)». Spinics.net. Consultado em 20 de janeiro de 2014 
  11. «[PATCH 00/17] netfilter updates: nf_tables pull request». Marc.info. Consultado em 20 de janeiro de 2014 
  12. a b Jonathan Corbet (20 de agosto de 2013). «The return of nftables». LWN.net. Consultado em 22 de outubro de 2013 
  13. Neira Ayuso, Pablo. «nftables – nft command line tool». git.netfilter.org. Consultado em 24 de Janeiro de 2019 
  14. Arturo, Ral. «Netfilter Workshop 2018 Berlin summary». ral-arturo.org. Consultado em 24 de Janeiro de 2019 

Ligações externas[editar | editar código-fonte]