LINUX

Cómo configurar nftables sucesor de iptables

¡Hola a todos! Esta vez mostraré cómo instalar nftables en una caja de Linux para que sirva como firewall y puerta de enlace a Internet. Cómo construir el kernel de Linux con nftables habilita, cómo instalar nftables use-space y sus dependencias y cómo la utilidad nft para realizar el filtrado de red y la traducción de direcciones IP.

El proyecto nftables está destinado a reemplazar las herramientas de netfilter actuales como iptables, ebtables, arptables y la infraestructura de espacio del kernel por una renovada y una herramienta de espacio de usuario, nft, que tiene una sintaxis simplificada y más limpia, pero mantiene la esencia de las herramientas que usamos hoy en día.

Revisa tu kernel

Nftables está en el árbol del kernel de Linux desde el kernel 3.13 y solo necesita habilitar los símbolos relativos a nftables usando las herramientas habituales de configuración del kernel y compilarlo. Sin embargo, los destinos de traducción de direcciones de red de enmascaramiento y redireccionamiento se introdujeron en el kernel 3.18 y 3.19 respectivamente y son deseados para NAT.

Obtenga el número de versión de su kernel con el siguiente comando

uname -r

Para comprobar si el módulo nf_tables ya está compilado, intente esto

modinfo nf_tables

Debería ver información relevante para el módulo, pero si obtiene un error, necesitará otro kernel.

Construyendo un kernel compatible con nftables

Compilemos el kernel 4.2, es el último kernel estable mientras escribo esto y tiene todo lo que necesitamos para Nftables.

Ingrese / usr / src

cd /usr/src

Descargue el paquete xz del kernel de Linux desde kernel.org

wget --no-check-certificate https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.2.tar.xz

Extraiga las fuentes en el paquete xz

tar Jxvf linux-4.2.tar.xz

Mueva su antiguo árbol del kernel de Linux

mv linux linux-old

Cree un enlace al nuevo árbol de Linux

ln -s linux-4.2 linux

Copie su antiguo .config al nuevo árbol del kernel

cp linux-old/.config linux/.config

Y luego ingrese al árbol del kernel de Linux

cd linux

Ahora prepare su antiguo .config para el nuevo kernel con el olddefconfig target, que mantiene la configuración actual del kernel y establece nuevos símbolos por defecto.

make olddefconfig

Ahora, usa el menuconfig opción para navegar a través del menú tipo curses y seguir las opciones, que están relacionadas con nftables

make menuconfig

Soporte de redes

menuconfig - soporte de red

Opciones de red

Opciones de red

Marco de filtrado de paquetes de red (Netfilter)

Marco de filtrado de paquetes de red

Configuración principal de Netfilter

Ingrese la configuración básica de Netfilter

Habilite la compatibilidad con Netfilter nf_tables y los módulos relacionados

Habilitar nftables y módulos relacionados
Habilitar nftables y módulos relacionados

Ahora suba un nivel, vuelva a la configuración principal de Netfilter e ingrese IP: Configuración de Netfilter

Ingrese la configuración de IPv4 Netfilter
Ingrese la configuración de IPv4 Netfilter

Allí habilita la cadena NAT para nf_tables y también enmascaramiento y redirección de objetivos.

Habilite la compatibilidad con NAT de Nftables para IPv4
Habilitar la compatibilidad con NAT de Nftables para IPv4

Ahora ha terminado con nftables, recuerde verificar si no falta alguna configuración del kernel relativa a sus necesidades específicas y guarde su .config

Luego haz y haz los módulos

make && make modules

Instale su kernel en / boot manualmente, para que pueda usar su kernel anterior si se pierde algo que sale mal.

cp arch/x86_64/boot/bzImage /boot/vmlinuz-4.2
cp system.map /boot/system.map-4.2
cp .config /boot/config-4.2

Instalar módulos del kernel

make modules_install

Bota

Algunas configuraciones pueden necesitar un ramdisk inicial para arrancar, será el caso si su partición raíz está bajo LVM, RAID o el módulo del sistema de archivos raíz no fue construido en el kernel.

El siguiente ejemplo crea el archivo ramdisk comprimido /boot/initrd-4.2gz, que esperará 8 segundos para arrancar en la partición rootfs del grupo de volúmenes lógicos vgroup, cargará los módulos para los sistemas de archivos XFS y Ext4 desde el kernel 4.2.0

mkinitrd -w 8 -c -u -f ext4 -m ext4: xfs -L -r / dev / vgroup / rootfs -k 4.2.0 -o /boot/initrd-4.2.gz

Agregue una nueva opción a su cargador de arranque que apunte a su kernel y ramdisk, si tiene uno; en LILO debes agregar algo como esto en tu /etc/lilo.conf

image     = /boot/vmlinuz-4.2
root     = /dev/vgroup/rootfs
label     = linux-4.2
initrd     = /boot/initrd-4.2.gz
read-only

Una vez que su sistema se reinicie, verifique su módulo nuevamente.

modinfo nf_tables
modinfo nf_tables
modinfo nf_tables

Debería ver algo similar a la imagen de arriba; de lo contrario, intente revisar menuconfig los pasos anteriores e intente marcar todos los símbolos relacionados con netfilter como módulos.

Después de eso, cree e instale esos módulos

make modules && make modules install

Instalar la herramienta nft

Ahora es el momento de instalar la utilidad de espacio de usuario de Nftables, nft, el reemplazo de las iptables tradicionales y sus amigos, pero antes de que podamos hacer eso, necesitamos instalar las bibliotecas compartidas necesarias para construir nft.

GMP – La biblioteca aritmética de precisión múltiple de GNU

Descarga y extrae el paquete

wget https://gmplib.org/download/gmp/gmp-6.0.0a.tar.xz tar Jxvf gmp-*

Construir e instalar

cd gmp* && ./configure && make && make install

libreadline – La biblioteca Readline de GNU

Necesitará esta biblioteca si planea usar nft en modo interactivo, que es opcional y no se trata aquí.

Descargue, extraiga e ingrese al árbol de fuentes.

wget ftp://ftp.gnu.org/gnu/readline/readline-6.3.tar.gz && tar zxvf readline * && cd readline *

Configúrelo para usar ncurses, luego cree e instale.

./configure –with-curses && make && make install

libmnl – Biblioteca de espacio de usuario minimalista para desarrolladores de Netlink

Descarga, contacta e ingresa al árbol de fuentes

wget http://www.netfilter.org/projects/libmnl/files/libmnl-1.0.3.tar.bz2 && tar jxvf libmnl- * && cd libmnl- *

Configurar, hacer e instalar

./configure && make && make install

libnftnl

Descargar, extraer e ingresar al árbol de fuentes

wget http://www.netfilter.org/projects/libnftnl/files/libnftnl-1.0.3.tar.bz2 && tar jxvf libnftnl* && cd libnftnl*

Configure make e install.

./configure && make && make install

Construya e instale nft

Descargue, extraiga e ingrese al árbol de fuentes.

wget http://www.netfilter.org/projects/nftables/files/nftables-0.4.tar.bz2 && tar jxvf nftables*

Luego configure, cree e instale

./configure && make && make install

Tenga en cuenta que puede utilizar –sin-cli para el script de configuración, deshabilitará la interfaz de línea de comandos interactiva y la necesidad de la biblioteca readline.

Usando nftables

Lo primero que puede hacer es cargar las tablas de plantillas básicas para redes IPv4, que se pueden encontrar en el árbol de fuentes de la herramienta nft, por supuesto que puede hacerlo a mano, pero recuerde que siempre es una buena idea comenzar simple.

Cargar definiciones de tablas de filtros IPv4

nft -f files/nftables/ipv4-filter

Cargar tabla NAT

nft -f files/nftables/ipv4-nat

Es una buena idea cargar también mangle

nft -f files/nftables/ipv4-mangle

Ahora enumera tus tablas

nft list tables

Elimine cualquier paquete nuevo dirigido a esta máquina

nft add rule filter input ct state new drop

Aceptar paquetes que no estén relacionados con las conexiones establecidas.

nft add rule filter input ct state related,established accept

La mayoría de los sistemas Linux ejecutan OpenSSH, es una buena idea aceptar conexiones al puerto TCP 22, para que pueda acceder a su servicio SSH.

nft insert rule filter input tcp port 22 accept

Ahora enumere sus tablas y observe cómo van las cosas

nft list table filter

Realización de traducción de direcciones de red (NAT)

Cree una regla para traducir la dirección IP proveniente de la red 192.168.1.0/24 y cuéntela antes de enviarla.

nft add rule nat postrouting ip saddr 192.168.1.0/24 counter masquerade

Eche un vistazo a sus reglas, esta vez agregue la bandera ‘-a’ para obtener más detalles y verá

nft list table nat -a

Habilitar el reenvío

También necesitará habilitar el reenvío de IP en el kernel

sysctl -w net.ipv4.ip_forward=1

Para habilitar el reenvío al inicio, coloque la siguiente oración en el /etc/sysctl.conf archivo, que puede necesitar ser creado en algunas distribuciones.

net.ipv4.ip_forward=1

También puede habilitar el reenvío a través del sistema de archivos proc, ejecute el siguiente comando para hacerlo y colóquelo al final de un rc script como rc.local para habilitar el reenvío al inicio

echo 1 > /proc/sys/net/ipv4/ip_forward

Salvando tus mesas

Para guardar su configuración, simplemente redirija la salida del comando de listado a un archivo

Guardar tabla de filtros

nft list table filter -a > /etc/firewall.tables

Ahora agregue la tabla nat, tenga en cuenta que usamos el ‘>‘ dos veces.

nft list table nat -a >> /etc/firewall.tables

Luego agregue la tabla de mangle

nft list table mangle -a >> /etc/firewall.tables

Ahora solo necesita cargar este archivo cuando se inicie su sistema

nft -f /etc/firewall.tables

Conclusión

Su máquina Linux ahora puede servir Internet, todo lo que tiene que hacer ahora es apuntar su máquina Linux como puerta de enlace para que sus dispositivos compartan Internet. Por supuesto, hay muchos otros detalles y características en nftables, pero debería ser suficiente para que comprenda los conceptos básicos, proteja sus sistemas, comparta Internet y se prepare para despedirse de iptables y su familia.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar