GNU/Linux >> Tutoriales Linux >  >> Linux

iptables vs nftables:¿Cuál es la diferencia?

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.


Linux
  1. ¿Cuál es la diferencia entre strtok_r y strtok_s en C?

  2. ¿Cuál es la diferencia entre adduser y useradd?

  3. ¿Cuál es la diferencia entre el estado de iptables y ctstate?

  4. ¿Cuál es la diferencia entre ls y l?

  5. ¿Cuál es la diferencia entre `su -` y `su --login`?

SIGTERM vs SIGKILL:¿Cuál es la diferencia?

DevOps vs Ingeniero de software:¿Cuál es la diferencia?

¿Qué es un Hipervisor? ¿Cuál es la diferencia entre el tipo 1 y 2?

¿Cuál es la diferencia entre curl y Wget?

HTTP vs HTTPS:¿Cuál es la diferencia?

¿Cuál es la diferencia entre las cadenas OUTPUT y FORWARD en iptables?