iptables vs nftables: ¿Cuál es la diferencia?
Durante mucho tiempo, iptables ha sido la herramienta favorita de los administradores de sistemas. Pero hoy en día se recomiendan las nftables. Lea para descubrir por qué.
Seguramente todo administrador de Linux ha trabajado con iptables, el antiguo firewall de Linux que nos ha funcionado bien durante muchos años. Pero es posible que aún no esté familiarizado con nftables, un recién llegado destinado a ofrecernos algunas actualizaciones muy necesarias y, en última instancia, reemplazar a los antiguos iptables.
¿Por qué nftables en lugar de iptables?
nftables es desarrollado por Netfilter, la misma organización que actualmente mantiene iptables. Fue creado como una solución a los problemas de iptables, es decir, escalabilidad y rendimiento.
Aparte de una nueva sintaxis y algunas actualizaciones, descubrirá que funciona de manera muy similar a su predecesor.
Otra justificación para una nueva utilidad es que el marco de iptables se ha vuelto un poco complicado con iptables, ip6tables, arptables y ebtables, todos proporcionando funciones diferentes pero similares.
Por ejemplo, es simplemente ineficaz crear reglas IPv4 en iptables y reglas IPv6 en ip6tables y mantener ambas sincronizadas. Nftables tiene como objetivo reemplazarlos todos y ser una solución centralizada.
Aunque nftables se ha incluido en el kernel de Linux desde 2014, recientemente está ganando más terreno a medida que su adopción se generaliza. El cambio es lento en el mundo Linux y las utilidades obsoletas a menudo tardan algunos años o más en eliminarse en favor de sus contrapartes actualizadas.
Nftables se está convirtiendo en el firewall recomendado y corresponde a los administradores de Linux actualizar su repertorio. Ahora es un buen momento para aprender nftables y actualizar su configuración de iptables existente.
Si ha estado usando iptables durante años y no está muy entusiasmado con la idea de tener que aprender una nueva utilidad, no se preocupe, lo cubrimos en esta guía. En este artículo, cubriremos las diferencias entre nftables e iptables y mostraremos ejemplos para configurar sus reglas de firewall en la nueva sintaxis de nftables.
Cadenas y reglas en nftables
En iptables, hay tres cadenas predeterminadas: entrada, salida y reenvío. Estas tres "cadenas" (y otras cadenas, si tiene alguna configurada) contienen "reglas" e iptables funciona haciendo coincidir el tráfico de red con la lista de reglas en una cadena. Si el tráfico que se examina no coincide con ninguna regla, se utilizará la política predeterminada de la cadena en el tráfico (es decir, ACEPTAR, BORRAR).
Nftables funciona de manera similar a esto, también con "cadenas" y "reglas". Sin embargo, no comienza con ninguna cadena base, lo que hace que la configuración sea un poco más flexible.
Un área de ineficiencia para iptables es que todos los datos de la red tenían que atravesar una o más de estas cadenas antes mencionadas, incluso si el tráfico no coincidía con ninguna regla. Ya sea que haya configurado las cadenas o no, iptables aún verifica los datos de su red con ellas.
Instalación de nftables en Linux
Nftables está disponible en todas las principales distribuciones de Linux y puede instalarlo fácilmente utilizando el administrador de paquetes de sus distribuciones.
En una distribución basada en Ubuntu o Debian, puedes usar este comando:
sudo apt install nftables
Para asegurarse de que nftables se inicie automáticamente cuando su sistema se reinicie:
sudo systemctl enable nftables.service
Diferencia de sintaxis entre iptables y nftables
Nftables tiene una sintaxis diferente y mucho más simple que iptables. Seamos honestos, la sintaxis de iptables siempre fue confusa y requirió un esfuerzo adicional para aprenderla. Afortunadamente para quienes migran desde iptables, nftables todavía acepta la sintaxis anterior.
También puede utilizar la utilidad iptables-translate, que aceptará comandos de iptables y los convertirá al equivalente de nftables. Esta es una manera sencilla de ver en qué se diferencian las dos sintaxis.
Instale iptables-translate en Ubuntu y distribución basada en Debian con este comando:
sudo apt install iptables-nftables-compat
Una vez instalado, puede pasar la sintaxis de iptables al comando iptables-translate y devolverá el comando equivalente a nftables.
Veamos algunos ejemplos para que veas en qué se diferencian estos comandos entre sí.
Bloquear conexiones entrantes
Este comando bloquearía las conexiones entrantes desde la dirección IP 192.168.2.1:
linux@handbook:~$ iptables-translate -A INPUT -s 192.168.2.1 -j DROP
nft add rule ip filter INPUT ip saddr 192.168.2.1 counter drop
Permitir conexiones SSH entrantes
Veamos algunos ejemplos más: cosas comunes que normalmente te encontrarías escribiendo en iptables al reforzar un servidor Linux.
linux@handbook:~$ iptables-translate -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT tcp dport 22 ct state new,established counter accept
Permitir conexiones SSH entrantes desde un rango de IP específico
Si desea permitir conexiones SSH entrantes desde 192.168.1.0/24:
linux@handbook:~$ iptables-translate -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT ip saddr 192.168.1.0/24 tcp dport 22 ct state new,established counter accept
Permitir conexiones MySQL a la interfaz de red eth0
Aquí está la sintaxis de iptables y nftables:
linux@handbook:~$ iptables-translate -A INPUT -i eth0 -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT iifname eth0 tcp dport 3306 ct state new,established counter accept
Permitir el tráfico HTTP y HTTPS entrante
Para permitir un cierto tipo de tráfico, aquí está la sintaxis de ambos comandos:
linux@handbook:~$ iptables-translate -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT ip protocol tcp tcp dport { 80,443} ct state new,established counter accept
Como puede ver en estos ejemplos, la sintaxis sigue siendo bastante similar a la de iptables, pero los comandos son un poco más intuitivos.
Iniciar sesión con nftables
La opción "contador" presente en los ejemplos de comandos nft anteriores le dice a nftables que cuente el número de veces que se toca una regla, como solía hacer iptables de forma predeterminada.
En nftables, son opcionales y deben especificarse.
nft add rule ip filter INPUT ip saddr 192.168.2.1 counter accept
Nftables tiene opciones integradas para exportar su configuración. Actualmente soporta XML y JSON.
nft export xml
Conclusión
En este artículo, expliqué por qué nftables es la nueva opción recomendada cuando se trata de firewalls de Linux. También he enumerado muchas de las diferencias entre los iptables antiguos y los nftables más nuevos, incluida su funcionalidad y sintaxis.
Esta guía le ha mostrado por qué considerar actualizar a nftables y cómo comenzar con la nueva sintaxis con la que deberá familiarizarse para actualizar con éxito sus antiguas reglas de iptables.
Si tiene preguntas o sugerencias, hágamelo saber en los comentarios.