nftables es un subsistema del kernel de Linux que proporciona filtrado y clasificación de paquetes / datagramas / tramas de red . Ha estado disponible desde el lanzamiento del kernel 3.13 de Linux el 19 de enero de 2014. [2]
Autor (es) original (es) | El proyecto Netfilter |
---|---|
Desarrollador (es) | El proyecto Netfilter |
Lanzamiento estable | 0.9.8 [1] / 15 de enero de 2021 |
Versión de vista previa | |
Repositorio | |
Escrito en | C |
Sistema operativo | Linux |
Plataforma | Netfilter |
Tipo | filtrado de paquetes |
Licencia | GPLv2 |
Sitio web |
nftables reemplaza las porciones de iptables heredadas de Netfilter . Entre las ventajas de nftables sobre iptables se encuentra la menor duplicación de código y la extensión más fácil a nuevos protocolos. nftables se configura a través de la utilidad de espacio de usuario nft , mientras que las herramientas heredadas se configuran a través de las utilidades iptables , ip6tables , arptables y ebtables frameworks.
nftables utiliza los componentes básicos de la infraestructura de Netfilter , como los enlaces existentes en la pila de redes, el sistema de seguimiento de conexiones, el componente de cola del espacio de usuario y el subsistema de registro.
nft
Sintaxis de la línea de comandos
Un comando para descartar cualquier paquete con dirección IP de destino 1.2.3.4
:
nft agregar regla ip filtro salida ip daddr 1.2.3.4 gota
Tenga en cuenta que la nueva sintaxis difiere significativamente de la de iptables, en la que se escribiría la misma regla:
iptables -A SALIDA -d 1.2.3.4 -j DROP
La nueva sintaxis puede parecer más detallada, pero también es mucho más flexible. nftables incorpora estructuras de datos avanzadas como diccionarios, mapas y concatenaciones que no existen con iptables. Hacer uso de estos puede reducir significativamente la cantidad de cadenas y reglas necesarias para expresar un diseño de filtrado de paquetes determinado.
La iptables-translate
herramienta se puede utilizar para traducir muchas reglas de iptables existentes a reglas nftables equivalentes. [3] [4] Debian 10 (Buster) , entre otras distribuciones de Linux , usa nftables junto con iptables-translate
como el backend de filtrado de paquetes predeterminado. [5]
Historia
El proyecto fue presentado públicamente por primera vez en Netfilter Workshop 2008 por Patrick McHardy del Netfilter Core Team. [6] La primera versión preliminar de la implementación del kernel y el espacio de usuario se dio en marzo de 2009. [7] Aunque la herramienta ha sido denominada "el mayor cambio en el cortafuegos de Linux desde la introducción de iptables en 2001", ha recibido poca atención de la prensa. [8] El célebre hacker Fyodor Vaskovich (Gordon Lyon) dijo que está "esperando su lanzamiento general en el kernel de Linux convencional ". [8]
El proyecto se mantuvo en la etapa alfa y el sitio web oficial se eliminó en 2009. En marzo de 2010, los correos electrónicos del autor en las listas de correo del proyecto mostraban que el proyecto aún estaba activo y se acercaba a una versión beta, [9] [10] pero este último nunca fue enviado oficialmente. En octubre de 2012, Pablo Neira Ayuso propuso una capa de compatibilidad para iptables [11] y anunció una posible inclusión del proyecto en el núcleo principal.
El 16 de octubre de 2013, Pablo Neira Ayuso envió una solicitud de extracción del núcleo de nftables al árbol de la línea principal del kernel de Linux . [12] Se fusionó con la línea principal del kernel el 19 de enero de 2014, con el lanzamiento de la versión 3.13 del kernel de Linux. [2]
Descripción general
El motor del kernel de nftables agrega una máquina virtual simple al kernel de Linux, que puede ejecutar código de bytes para inspeccionar un paquete de red y tomar decisiones sobre cómo debe manejarse ese paquete. Las operaciones implementadas por esta máquina virtual se hacen básicas intencionalmente. Puede obtener datos del propio paquete, echar un vistazo a los metadatos asociados (interfaz de entrada, por ejemplo) y administrar los datos de seguimiento de la conexión. Se pueden utilizar operadores aritméticos, bit a bit y de comparación para tomar decisiones basadas en esos datos. La máquina virtual también es capaz de manipular conjuntos de datos (normalmente, direcciones IP), lo que permite reemplazar varias operaciones de comparación con una única búsqueda de conjuntos. [13]
La organización descrita anteriormente es contraria al código de firewall de iptables, que tiene un reconocimiento de protocolo tan profundamente integrado en la lógica que el código ha tenido que ser replicado cuatro veces (para IPv4 , IPv6 , ARP y puentes de Ethernet) como firewall. Los motores son demasiado específicos del protocolo para ser utilizados de manera genérica. [13]
Las principales ventajas de nftables sobre iptables son la simplificación de la ABI del kernel de Linux , la reducción de la duplicación de código , la mejora de los informes de errores y una ejecución, almacenamiento y cambios incrementales más eficientes de las reglas de filtrado. Tradicionalmente utilizado , , y (para IPv4, IPv6, ARP y Ethernet de puente, respectivamente) están destinados a ser reemplazados con una sola aplicación unificada, proporcionando la configuración del cortafuegos en la parte superior de la máquina virtual en el núcleo.
nftables también ofrece una API de espacio de usuario mejorada que permite reemplazos atómicos de una o más reglas de firewall dentro de una sola transacción Netlink . Esto acelera los cambios en la configuración del firewall para configuraciones que tienen grandes conjuntos de reglas; también puede ayudar a evitar condiciones de carrera mientras se ejecutan los cambios de reglas. nftables también incluye funciones de compatibilidad para facilitar la transición desde firewalls anteriores, utilidades de línea de comandos para convertir reglas en el formato iptables, [14] y versiones de comandos iptables compatibles con la sintaxis que usan el backend nftables. [15]
Referencias
- ^ "Noticias del proyecto netfilter / iptables" . netfilter.org . 2021-01-15 . Consultado el 4 de febrero de 2020 .
- ^ a b "nftables, el sucesor de iptables" . Linux 3.13 . kernelnewbies.org. 2014-01-19 . Consultado el 4 de marzo de 2016 .
- ^ https://wiki.nftables.org/wiki-nftables/index.php/Moving_from_iptables_to_nftables
- ^ https://wiki.nftables.org/wiki-nftables/index.php/List_of_available_translations_via_iptables-translate_tool
- ^ https://wiki.debian.org/nftables
- ^ "Programa del día del usuario - NFWS2008" . workshop.netfilter.org. 2008-10-03 . Consultado el 22 de febrero de 2014 .
- ^ anuncio de lanzamiento inicial .
- ^ a b Gray, Patrick (26 de marzo de 2009). "NOTICIAS: Linux obtiene un nuevo firewall" . Risky.biz.
- ^ "Linux Netfilter Devel - Re: estado actual de nftables" . Spinics.net . Consultado el 20 de enero de 2014 .
- ^ "Linux Netfilter Devel - Re: estado actual de nftables" . Spinics.net . Consultado el 20 de enero de 2014 .
- ^ "Linux Netfilter Devel - [RFC] de nuevo en nf_tables (más la capa de compatibilidad)" . Spinics.net . Consultado el 20 de enero de 2014 .
- ^ "[PATCH 00/17] actualizaciones de netfilter: nf_tables pull request" . Marc.info . Consultado el 20 de enero de 2014 .
- ^ a b Jonathan Corbet (20 de agosto de 2013). "El regreso de nftables" . LWN.net . Consultado el 22 de octubre de 2013 .
- ^ Neira Ayuso, Pablo. "nftables - herramienta de línea de comandos nft" . git.netfilter.org . Consultado el 24 de enero de 2019 .
- ^ Arturo, Ral. "Resumen de Netfilter Workshop 2018 Berlín" . ral-arturo.org . Consultado el 24 de enero de 2019 .
enlaces externos
- Página web oficial
- Repositorio de código fuente de nftables Git
- Documentación de nftables HOWTO
- Primera versión de nftables (2009-03-18)
- Pablo Neira Ayuso: [RFC] de nuevo en nf_tables (más capa de compatibilidad)
- nftables CÓMO rápido
- Secciones de nftables en ArchWiki y Gentoo Wiki
- Corbet, Jonathan (24 de marzo de 2009). "nftables: un nuevo motor de filtrado de paquetes" . LWN.net .
- McHardy, Patrick (30 de septiembre de 2008). nftables: sucesor de iptables, ip6tables, ebtables y arptables ( ODP ) . Taller de Netfilter 2008 .
- nft_compat extendido para admitir extensiones ebtables (combinado en Linux kernel 4.0)