Todos los administradores de Linux seguramente han trabajado con iptables, el antiguo cortafuegos de Linux que nos ha servido 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 las antiguas iptables.
¿Por qué nftables en lugar de iptables?
nftables es desarrollado por Netfilter, la misma organización que actualmente mantiene iptables. Fue creado como un remedio a los problemas con iptables, a saber, escalabilidad y rendimiento.
Aparte de una nueva sintaxis y algunas actualizaciones, encontrará que funciona de manera muy similar a su predecesor.
Otra justificación para una nueva utilidad es que el marco de trabajo de iptables se ha vuelto un poco complicado con iptables, ip6tables, arptables y ebtables que brindan funciones diferentes pero similares.
Por ejemplo, es simplemente ineficiente crear reglas de IPv4 en iptables y reglas de IPv6 en ip6tables y mantener las dos sincronizadas. Nftables tiene como objetivo reemplazar todo esto 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 la adopción se generaliza. Los cambios son lentos en el mundo de Linux, y las utilidades obsoletas a menudo tardan algunos años o más en eliminarse a favor de sus contrapartes actualizadas.
Nftables se está convirtiendo en el cortafuegos 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 tenemos cubierto 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) tienen "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 está examinando no coincide con ninguna regla, se utilizará la política predeterminada de la cadena en el tráfico (es decir, ACEPTAR, ABANDONAR).
Nftables funciona de manera similar a esto, con "cadenas" y "reglas" también. 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 de iptables es que todas 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 compara los datos de su red con ellas.
Instalando 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, puede 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 poco clara y requirió un esfuerzo adicional para aprender. Afortunadamente para aquellos que migran desde iptables, nftables aún acepta la sintaxis anterior.
También puede usar iptables-translate utilidad, que aceptará comandos de iptables y los convertirá al equivalente de nftables. Esta es una manera fácil de ver cómo difieren las dos sintaxis.
Instale iptables-translate en una distribución basada en Ubuntu y Debian con este comando:
sudo apt install iptables-nftables-compat
Una vez que esté instalado, puede pasar su sintaxis de iptables al comando iptables-translate y devolverá el comando equivalente de nftables.
Veamos algunos ejemplos para que puedas ver en qué se diferencian estos comandos.
Bloquear conexiones entrantes
Este comando bloquearía las conexiones entrantes desde la dirección IP 192.168.2.1:
[email protected]:~$ 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 fortalecer un servidor Linux.
[email protected]:~$ 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:
[email protected]:~$ 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
Esta es la sintaxis de iptables y nftables:
[email protected]:~$ 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 tráfico HTTP y HTTPS entrante
Para permitir cierto tráfico de tipo f, esta es la sintaxis de ambos comandos:
[email protected]:~$ 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 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 la cantidad de veces que se toca una regla, como lo hacía iptables de manera 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 es compatible con 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 las iptables antiguas y las nftables más nuevas, incluidas 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.