Hace algunos dĆas fue liberada la nueva versión del filtro de paquetes nftables 0.9.3, que se desarrolla como reemplazo de iptables, ip6table, arptables y ebtables debido a la unificación de las interfaces de filtrado de paquetes para IPv4, IPv6, ARP y puentes de red.
El paquete nftables usa partes estructurales de la infraestructura Netfilter, como el connection tracking system (sistema de seguimiento de conexiones) o el subsistema de registro. También hay prevista una capa de compatibilidad para la traducción de las ya existentes reglas del cortafuegos iptables a sus equivalentes en nftables.
Sobre Nftables
Nftables incluye componentes de filtro de paquetes que funcionan en el espacio del usuario, mientras que a nivel del kernel, el subsistema nf_tables proporciona una parte del kernel de Linux desde la versión 3.13.
A nivel del nĆŗcleo, solo se proporciona una interfaz comĆŗn que es independiente de un protocolo especĆfico y proporciona funciones bĆ”sicas para extraer datos de paquetes, realizar operaciones de datos y controlar el flujo.
La lógica de filtrado en sĆ y los procesadores especĆficos del protocolo se compilan en un bytecode en el espacio del usuario, despuĆ©s de lo cual este bytecode se carga en el kernel usando la interfaz Netlink y se ejecuta en una mĆ”quina virtual especial que se parece a BPF (Berkeley Packet Filters).
Este enfoque le permite reducir significativamente el tamaño del código de filtrado que se ejecuta a nivel del núcleo y eliminar todas las funciones de las reglas de anÔlisis y la lógica de trabajar con protocolos en el espacio del usuario.
Las principales ventajas de nftables son:
- Arquitectura que estĆ” integrada en el nĆŗcleo
- Una sintaxis que consolida las herramientas de IPtables en una Ćŗnica herramienta de lĆnea de comandos
- Una capa de compatibilidad que permite el uso de la sintaxis de reglas de IPtables.
- Una nueva sintaxis fƔcil de aprender.
- Proceso simplificado de agregar reglas de firewall.
- Informe de errores mejorado.
- Reducción en la replicación de código.
- Mejor rendimiento general, retención y cambios graduales en el filtrado de reglas.
¿Qué hay de nuevo en nftables 0.9.3?
En esta nueva versión de nftables 0.9.3 se aƱadió el soporte para paquetes coincidentes a lo largo del tiempo. Con ello se puede definir los intervalos de tiempo y fecha en los que se activarĆ” la regla y configurar la activación en dĆas individuales de la semana. TambiĆ©n se agregó una nueva opción Ā«-TĀ» para mostrar el tiempo de la Ć©poca en segundos.
Otro de los cambios que se destacan es el soporte para restaurar y guardar etiquetas SELinux (secmark), sà como también el soporte para listas de mapas synproxy, lo que le permite definir mÔs de una regla por backend.
De los demÔs cambios que se destacan de esta nueva versión:
- Posibilidad de eliminar dinƔmicamente elementos set-set de las reglas de procesamiento de paquetes.
- Soporte para mapeo de VLAN por identificador y protocolo definido en los metadatos de la interfaz del puente de red
- Opción Ā«-tĀ» (Ā«āterseĀ») para excluir elementos set-set al mostrar reglas. Al ejecutar Ā«nft -t list rulesetĀ», se mostrarĆ”:
- Conjunto de reglas nft list.
- La capacidad de especificar mƔs de un dispositivo en cadenas netdev (funciona solo con el kernel 5.5) para combinar reglas de filtrado comunes.
- Posibilidad de agregar descripciones de tipos de datos.
- Capacidad para construir una interfaz CLI con la biblioteca linenoise en lugar de libreadline.
¿Cómo instalar la nueva versión de nftables 0.9.3?
Para obtener la nueva versión de momento solo se puede compilar el código fuente en su sistema. Aunque en cuestión de dĆas estarĆ”n disponibles los paquetes binarios ya compilados dentro de las diferentes distribuciones de Linux.
AdemÔs de que los cambios necesarios para que funcione la versión nftables 0.9.3 estÔn incluidos en la futura rama del kernel de Linux 5.5. Por lo que para realizar la compilación debes contar con las siguientes dependencias instaladas:
Estas las puedes compilar con:
./autogen.sh
./configure
make
make install
Y para nftables 0.9.3 este lo descargamos desde el siguiente enlace. Y la compilación se realiza con los siguientes comandos:
cd nftables
./autogen.sh
./configure
make
make install