nftables - nftables
| Autor (es) original (is) | O Projeto Netfilter |
|---|---|
| Desenvolvedor (s) | O Projeto Netfilter |
| Versão estável | 1.0.0 / 25 de maio de 2021
|
| Versão de visualização | |
| Repositório | |
| Escrito em | C |
| Sistema operacional | Linux |
| Plataforma | Netfilter |
| Modelo | filtragem de pacotes |
| Licença | GPLv2 |
| Local na rede Internet |
nftables é um subsistema do kernel Linux que fornece filtragem e classificação de pacotes / datagramas / quadros de rede . Ele está disponível desde o kernel Linux 3.13 lançado em 19 de janeiro de 2014.
nftables substitui as partes legadas de 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 frameworks ebtables .
nftables utiliza os blocos de construção da infraestrutura Netfilter , como os ganchos existentes na pilha de rede, sistema de rastreamento de conexão, componente de enfileiramento do espaço do usuário e subsistema de registro.
nft
Sintaxe de linha de comando
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 de 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. nftables incorpora estruturas de dados avançadas como dicionários, mapas e concatenações que não existem com iptables. Fazê-los pode reduzir significativamente o número de cadeias e regras necessárias para expressar um determinado projeto de filtragem de pacotes.
A iptables-translateferramenta pode ser usada para traduzir muitas regras de iptables existentes em regras de nftables equivalentes. O Debian 10 (Buster) , entre outras distribuições Linux , usa nftables junto com iptables-translateo backend de filtragem de pacotes padrão.
História
O projeto foi apresentado publicamente pela primeira vez no Netfilter Workshop 2008 por Patrick McHardy da Netfilter Core Team. 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. 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. O notável hacker Fyodor Vaskovich (Gordon Lyon) disse que está "ansioso por seu lançamento geral no kernel Linux mainstream ".
O projeto permaneceu em estágio 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 um lançamento beta, mas o último nunca foi enviado oficialmente. Em outubro de 2012, Pablo Neira Ayuso propôs uma camada de compatibilidade para iptables e anunciou uma possível inclusão do projeto no kernel mainstream.
Em 16 de outubro de 2013, Pablo Neira Ayuso submeteu uma solicitação de pull de núcleo nftables à árvore principal do kernel do Linux . Ele foi incorporado à linha principal do kernel em 19 de janeiro de 2014, com o lançamento da versão 3.13 do kernel Linux.
Visão geral
O mecanismo do kernel nftables adiciona uma máquina virtual simples ao kernel 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 consulta de conjunto.
A organização descrita acima é contrária ao código de firewall de 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 ponte Ethernet - como o firewall os motores são muito específicos de protocolo para serem usados de uma maneira genérica.
As principais vantagens de nftables sobre iptables são a simplificação da ABI do kernel Linux , redução da duplicação de código , relatório de erro aprimorado e execução mais eficiente, armazenamento e mudanças incrementais de regras de filtragem. Tradicionalmente utilizado , , e (para IPv4, IPv6, ARP e Ethernet em ponte, respectivamente) destinam-se a ser substituído com como uma única aplicação uniforme, fornecendo a configuração de firewall no topo da máquina virtual no kernel.
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 mudanças na 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 e versões compatíveis com a sintaxe de comandos iptables que usam o backend nftables.
Referências
links externos
- Website oficial
- Repositório de código-fonte nftables Git
- Documentação do COMO FAZER nftables
- Primeira versão do nftables (18/03/2009)
- Pablo Neira Ayuso: [RFC] de volta em nf_tables (mais camada de compatibilidade)
- nftables quick HOWTO
- Seções nftables no ArchWiki e Gentoo Wiki
- Corbet, Jonathan (24/03/2009). "nftables: um novo mecanismo de filtragem de pacotes" . LWN.net .
- McHardy, Patrick (30/09/2008). nftables - um sucessor de iptables, ip6tables, ebtables e arptables ( ODP ) . Workshop Netfilter 2008 .
- nft_compat estendido para suportar extensões ebtables (fundido no kernel Linux 4.0)