Tutorial nftable

Tutorial nftable

Este tutorial explica cómo trabajar con el firewall nftable Linux. Este contenido está optimizado tanto para los usuarios de Linux Experiments como para nuevos.

Nftables es un componente del núcleo de Linux que proporciona funcionalidades de firewall. Es el reemplazo de iptables.

Después de leer este tutorial, comprenderá las reglas de los NFTables y podrá crear su firewall. No necesitas conocimiento previo sobre iptables.

Todos los ejemplos de este tutorial contienen capturas de pantalla, facilitando a todos los usuarios de Linux, independientemente de su nivel de conocimiento, comprenderlas e implementarlas.

Comenzando con NFTables

Antes de comenzar, cree y abra un archivo usando un editor de texto como Nano o VI para comenzar a escribir sus primeras reglas NFTables en función del siguiente ejemplo. No copie la pasta; escribir todo.

firewall nano.NFT

El ejemplo en este tutorial es bastante simple y muestra un firewall restrictivo en el que se elimina todo el tráfico IPv4, excepto en bucle y puertos específicos.

En la captura de pantalla anterior, utilicé la primera línea para definir mi red local (192.168.0.6/16) como Linuxhintnet.

Definir LinuxHintnet = 192.168.0.16/01

En la segunda línea, defino un grupo de puertos (80,443 y 22). Llamo a este grupo de los anotaciones porque planeo permitir el tráfico a través de ellos. Lodingports es un nombre arbitrario.

Definirloodports = 80,443,53,22

Luego, agrego una tabla, que es un contenedor o grupo de cadenas y reglas; Ambos se explican a continuación. Tablas ayudan reglas y cadenas que se organizarán. Llamé a la tabla en el ejemplo "restrictivo" porque contiene una política restrictiva, y su nombre es arbitrario.

La IP antes del nombre de la tabla indica que las reglas de la tabla de Que solo se aplicarán al tráfico IPv4. Puede usar INET en lugar de IP para aplicar reglas a los protocolos IPv4 e IPv6. O puede reemplazar IP con IP6 solo para IPv6.

Recuerde, restrictivo es un nombre que definí arbitrariamente. Puedes nombrar la tabla como quieras.

En mi caso, aplico reglas solo a IPv4, como se muestra a continuación.

Agregar tabla IP restrictiva

Para ambos protocolos, use lo siguiente:

Agregar tabla inet restrictivo

Luego agregamos la primera cadena base, que nombro arbitrariamente entrante porque está relacionada con el tráfico entrante. Sin embargo, puedes nombrarlo como quieras.

La siguiente cadena de base deja caer todo el tráfico entrante de forma predeterminada:

  • Agregar en la cadena IP restrictiva entrante: esta sección agrega la cadena entrante restrictiva que se aplicará a IPv4
  • Tipo de filtro: esto define el tipo de cadena como un filtro, ya que filtrará el tráfico. Otros tipos de cadena posibles son Route o Nat
  • Entrada del gancho: se refiere a paquetes entrantes
  • Prioridad 0: la prioridad de la cadena base define el orden de las cadenas base
  • Política caída: la política de caída, por defecto, descarta todos los paquetes
Agregue la cadena IP restrictiva entrante Prioridad de entrada de gancho de filtro de tipo 0; Política caída;

Como puede ver en la siguiente captura de pantalla, creé otras dos cadenas base similares a la redirección restrictiva y restrictiva anterior y restrictiva. La diferencia es el gancho definido para cada uno (salida de gancho y salida de gancho). Explicarlos es repetitivo.

Después de las tres cadenas base, podemos continuar con las reglas NFTables para permitir el tráfico de bucleza.

Agrego las siguientes líneas para el tráfico entrante y saliente en la interfaz de loopback.

Agregar regla ip restrictiva entrante iifname lo contador aceptable
Agregar regla ip restrictiva entrante oifname lo contador aceptable

Ahora, agrego cuatro reglas que aceptan el tráfico TCP y UDP saliente y entrante a través de todos los puertos incluidos en la variable $ Potteports definidos al comienzo del archivo.

Agregar regla IP IP restrictivo TCP Sport $ Sentodports contador aceptable
Agregar regla IP IP restrictivo TCP DPORT $ PELEDPORTS contador aceptable
Agregar regla IP Restricto Restricto UDP Sport $ Contador de alojamiento
Agregar regla IP IP restrictivo UDP DPORT $ DETENDAJE CONTADOR ACEPTO

Puedes ver el script completo a continuación.

Una vez que termine de escribir sus tablas, cadenas y reglas, cierre el documento y guarde los cambios.

# En las dos primeras líneas, defino mi red local (Linuxhintnet) y un conjunto de puertos (80,
#443,22) para permitir el tráfico a través de ellos en las reglas a continuación.
Definir LinuxHintnet = 192.168.0.16/01
Definirloodports = 80,443,53,22
#Is declaro una nueva tabla que contendrá cadenas y reglas. Llamo a esta tabla "restrictiva".
#El "IP" aplica reglas a IPv4 solamente. Para IPv6, solo use "IP6" y use "INET" para ambos protocolos.
Agregar tabla IP restrictiva
# Después de crear la tabla, creo tres cadenas, entrantes, redireccionamiento y saliente,
#Sus nombres son arbitrarios. Todos ellos dejan el tráfico entrante, saliente y de reenvío de forma predeterminada.
Agregue la cadena IP restrictiva entrante Prioridad de entrada de gancho de filtro de tipo 0; Política caída;
Agregue la cadena IP Redirección restrictiva Tipo de filtro de filtro Prioridad hacia adelante 0; Política caída;
Agregue la cadena IP restrictiva saliente Tipo de salida de salida de gancho de filtro 0; Política caída;
# Implemento dos reglas para permitir el tráfico de loopback.
Agregar regla ip restrictiva entrante iifname lo contador aceptable
Agregar regla ip restrictiva entrante oifname lo contador aceptable
# Implemento reglas para permitir el tráfico a través de los puertos definidos en la variable de Pelimingports.
Agregar regla IP IP restrictivo TCP Sport $ Sentodports contador aceptable
Agregar regla IP IP restrictivo TCP DPORT $ PELEDPORTS contador aceptable
Agregar regla IP Restricto Restricto UDP Sport $ Contador de alojamiento
Agregar regla IP IP restrictivo UDP DPORT $ DETENDAJE CONTADOR ACEPTO

Para activar el firewall, ejecute el siguiente comando:

sudo nft -f firewall.NFT

Puede verificar sus reglas ejecutando el siguiente comando:

Sudo NFT Lista de reglas de Reglas

Ese es un firewall restrictivo básico.

Conclusión:

Como puede ver, los nftables son mucho más amigables que los iptables, y los usuarios pueden aprender nftables más rápido que los iptables. Dado que se suspende iptables, y muchas distribuciones están utilizando NFTables como el firewall predeterminado, incluido Debian. Los usuarios experimentados de iptables pueden querer mirar la herramienta iptables-nftables-compat, que traduce iptables a nftables. Esto puede ayudarlos a comprender las diferencias.

Los usuarios profesionales como administradores de sistemas tienden a seguir trabajando con iptables; Evite ignorar los NFTables para ahorrar tiempo mientras mejora el filtrado. Espero que este artículo haya sido lo suficientemente simple como para convencerte de que pruebe los nftables.