Está en la página 1de 37

Free

Miguel Ángel García López


2º ASIR
nftables Proyecto Integrado 2ºASIR

ÍNDICE
1.- ENUNCIADO.................................................................................................................................3
2.- NFTABLES.....................................................................................................................................3
2.1.- INTRODUCCIÓN...................................................................................................................3
2.2.- FAMILIAS DE DIRECCIONES.............................................................................................4
2.3.- TABLAS..................................................................................................................................4
2.4.- CADENAS..............................................................................................................................5
2.5.- REGLAS..................................................................................................................................5
2.6.- ¿POR QUÉ ESTÁ SIENDO REEMPLAZADO IPTABLES?................................................6
2.7.- COMPARATIVA CON IPTABLES.........................................................................................7
2.7.1.- DIFERENCIAS PRINCIPALES.....................................................................................7
2.7.2.- FAMILIAS DE DIRECCIONES.....................................................................................7
2.7.3.- TABLAS..........................................................................................................................8
2.7.4.- CADENAS......................................................................................................................8
2.7.5.- REGLAS..........................................................................................................................8
3.- ESTUDIO DE LA VIABILIDAD, ¿DISPONGO DE LO NECESARIO?.....................................9
4.- MANUAL DE INSTALACIÓN.....................................................................................................9
4.1.- REQUISITOS MÍNIMOS PARA VIRTUALIZACIÓN.........................................................9
4.2.- INSTALACIÓN DEL SISTEMA OPERATIVO EN UNA MÁQUINA VIRTUAL.............12
4.3.- INSTALACIÓN DE NFTABLES.........................................................................................17
4.4.- CONFIGURACIÓN DE NFTABLES...................................................................................18
4.4.1.- ARCHIVO DE CONFIGURACIÓN.............................................................................18
4.4.2.- COMANDOS BÁSICOS...............................................................................................18
4.4.3.- TABLAS........................................................................................................................19
4.4.4.- CADENAS....................................................................................................................21
4.4.5.- REGLAS........................................................................................................................23
5.- MANUAL DE USUARIO............................................................................................................24
6.- PRUEBAS.....................................................................................................................................27
7.- CÓDIGO FUENTE.......................................................................................................................35
8.- IMPLANTACIÓN.........................................................................................................................37

2
nftables Proyecto Integrado 2ºASIR

1.- ENUNCIADO
¿Qué viene después de “iptables”? Es su sucesor, “nftables”. En este proyecto se desglosará la
novedosa herramienta de cortafuegos “nftables” por dentro, se hará una comparativa de ella con
“iptables”, el por qué de su sucesión y se implementarán algunas topologías con esta nueva
herramienta sucesora de “iptables”.

2.- NFTABLES
2.1.- INTRODUCCIÓN
Nftables es un proyecto de la comunidad netfilter1 que reemplaza el marco existente de tablas
{iptables, ip6tables, arptables y ebtables}. Nftables es una herramienta que se utiliza para la
implementación de cortafuegos.

Proporciona un nuevo marco de filtrado de paquetes, una nueva utilidad en el espacio de usuario
“nft” y una capa de compatibilidad para “iptables” e “ip6tables”. Utiliza los hooks2 existentes, el
sistema de seguimiento para las conexiones, los componentes de la línea de espera de los paquetes
de red del espacio de usuario y el subsistema de registro de netfilter.

Consta de tres componentes principales:


• una implementación del kernel que proporciona una interfaz de configuración del enlace
de red, así como una evaluación del conjunto de reglas en el tiempo de ejecución.
• la comunicación de la biblioteca libnml con libnftnetlink: libnl contiene las funciones de
bajo nivel para comunicarse con el kernel. Estas librerías hacen que el código en el kernel
ocupe menos espacio.
• un frontend de nftables en el espacio de usuario que proporciona interacción al usuario con
nftables.

1. Netfilter es una comunidad de desarrolladores de software e ingenieros conocidos principalmente por el framework
disponible en el núcleo de Linux que permite interceptar y manipular paquetes de red.

2. Los hooks son un conjunto de técnicas utilizadas para alterar o aumentar el comportamiento de un sistema operativo
interceptando llamadas de función o mensajes o eventos pasados entre componentes de software.

3
nftables Proyecto Integrado 2ºASIR

2.2.- FAMILIAS DE DIRECCIONES


En nftables, las familias de direcciones determinan el tipo de paquetes que son procesados. Para
cada familia de direcciones, el núcleo del sistema contiene los llamados hooks en etapas específicas
de las rutas de procesamiento de paquetes, que nftables invoca si las reglas para estos “hooks”
existen.
Las familias de direcciones en nftables pueden ser:
• ip: corresponde a las direcciones IPv4
• ip6: corresponde a las direcciones IPv6
• inet: corresponde a las direcciones IPv4 e IPv6 a la vez
• arp: familia de direcciones que maneja paquetes ARP IPv4
• bridge: familia de direcciones que maneja paquetes que atraviesan un dispositivo puente
• netdev: familia de direcciones que maneja paquetes de ingreso

La familia por defecto que se usará si no se especifica ninguna familia a la hora de crear una tabla
es “ip”.
La familia “inet” no funciona para las cadenas NAT, solamente para las cadenas “filter”, es decir,
cuando vayamos a filtrar paquetes, pero no a la hora de hacer traducción de direcciones de red. Esta
nueva herramienta también permite realizar Source NAT y Destination NAT.

2.3.- TABLAS
Las tablas en nftables alojan las cadenas. En nftables no hay tablas integradas como en iptables. La
cantidad de tablas que tengamos y los nombres que les demos depende del usuario. Cada tabla solo
tiene una familia de direcciones, y sólo se aplica a los paquetes de dicha familia.

4
nftables Proyecto Integrado 2ºASIR

2.4.- CADENAS
Las cadenas se encargan de alojar las reglas que posteriormente definiremos. A diferencia de las
cadenas en iptables, no hay cadenas integradas en nftables. Esto significa que, si ninguna cadena
utiliza ningún type o hook en el marco de netfilter, los paquetes de red que fluyan a través de esas
cadenas no serán tocados por nftables, a diferencia de iptables.

Las cadenas pueden ser de dos tipos:


• Cadena normal: puede usarse como un objetivo de salto para una mejor organización.
• Cadena base: punto de entrada para los paquetes de la pila de red, donde se especifica un
valor de enlace. La familia es opcional.

2.5.- REGLAS
En el caso de nftables, las reglas se almacenan en cadenas, que a su vez se almacenan en tablas. Las
reglas de nftables son como las reglas de iptables, volátiles. Es decir, cuando se reinicia el sistema
los cambios no se guardan. Para que los cambios permanezcan, debemos guardar las reglas
directamente en el archivo de configuración.
Las reglas se construyen a través de expresiones, o bien a partir de declaraciones, y están contenidas
dentro de las cadenas. Hay una herramienta llamada iptables-translate que se encarga de traducir
las reglas iptables al formato nftables. Es muy útil sobre todo al comienzo, cuando no conoces muy
bien la sintaxis de nftables.

Las reglas en nftables incluyen una expresión de coincidencia, y luego, una declaración que
resuelva (si coinciden). Las coincidencias que tenemos disponibles en nftables son:
• meta (iif, iifname, oif, oifname): índice y nombre, de entrada y salida.
• icmp: type [tipo de icmp]
• icmpv6: type [tipo de icmpv6]
• ip: saddr y daddr (dirección de origen y destino; source and destination)
• ipv6: saddr y daddr (dirección de origen y destino; source and destination)
• tcp, udp y sctp: sport y dport (puerto de origen y destino; source and destination)
• ct: state [ new | established | related | invalid ]
• declaraciones resolutivas (accept, drop, queue, continue, return, [cadena] jump y [cadena]
goto)

5
nftables Proyecto Integrado 2ºASIR

2.6.- ¿POR QUÉ ESTÁ SIENDO REEMPLAZADO IPTABLES?


Durante mucho tiempo han existido cuatro herramientas para administrar el cortafuegos de Linux,
que tuvieron un inicio similar, pero que con el tiempo se han ido distanciando en su desarrollo por
diversos motivos. Estas han sido iptables, ip6tables, ebtables y arptables.
Esto hizo que se comenzase a trabajar en un sucesor de estos. Finalmente en 2009, de la mano del
proyecto netfilter, se anunció el lanzamiento de nftables. El nombre de la herramienta tiene que ver
con “netfilter tables” es decir, en el idioma de Bolivar y Márquez, “tablas de filtro de red”. Entre
sus objetivos se busca un mayor rendimiento en el uso de los datos, mayor escalabilidad y una
estructura modular, más fácil de mantener. Desde la versión 3.13 del kernel de Linux, nftables se
encuentra integrado en este.

A pesar del éxito que ha tenido y tiene, iptables tiene severas limitaciones de arquitectura que no
pueden ser resueltas sin cambios fundamentales de diseño. El principal problema surge del hecho de
que la representación del conjunto de reglas está compartida por herramientas de frontend como
iptables y el kernel. Esto tiene múltiples inconvenientes, como por ejemplo, cuando una regla es
añadida a un conjunto de reglas.

En este caso, la herramienta iptables necesita abandonar el actual conjunto de reglas y entonces
modificar este amasijo para contener la nueva regla y envía el conjunto de reglas entero de vuelta
al kernel. Esto también significa que cada operación de añadido y borrado es lenta, tanto como
que la tabla entera tiene que procesarla y reemplazarla con otra nueva.
El kernel no tiene idea de que regla se modificó, añadió o borró del conjunto de reglas en la tabla
que se está reemplazando. Todo lo que el kernel ve es que el nuevo conjunto de reglas está siendo
cargado, no detecta que parte del conjunto de reglas se borró o añadió y que parte del conjunto de
reglas ha cambiado.

Si dos reglas son añadidas al mismo tiempo, sólo una de ellas tomará efecto, como cada proceso
independiente manipula la tabla actual, entonces pregunta al kernel para cambiar la antigua con
la nueva, entonces el último proceso borrará cualquier cambio hecho entre su propia copia de
datos y la operación.
Este no era un problema cuando las iptables y sus predecesores fueron desarrollados originalmente
a final de los 90, como solo el administrador del sistema esperaba cambiar las reglas de filtrado
de paquetes. Ahora ha cambiado. Por ejemplo, aplicaciones como docker o libvirt tienen que
añadir reglas NAT para proveer conectividad para contenedores y máquinas virtuales.

6
nftables Proyecto Integrado 2ºASIR

2.7.- COMPARATIVA CON IPTABLES


2.7.1.- DIFERENCIAS PRINCIPALES

• La sintaxis de nftables elimina la utilización de guiones, lo que lo hace más fácil de


entender.
• Nftables tiene un mejor soporte para hacer actualizaciones dinámicas de un conjunto de
reglas.
• La administración de conjuntos de reglas en nftables para IPv4 / IPv6 se ha simplificado a
través de la familia “inet”.
• La clasificación de paquetes es más rápida a través de una infraestructura mejorada de
mapas y conjuntos genéricos.
• Nftables es más fácil de usar y combina todas las herramientas del framework de iptables en
una sencilla herramienta.

2.7.2.- FAMILIAS DE DIRECCIONES


Un punto a tener en cuenta son las familias de tablas. En nftables las tablas han evolucionado de la
siguiente forma:

Familia en nftables Familia en iptables


ip iptables
ip6 ip6tables
inet iptables e ip6tables
arp arptables
bridge ebtables

Nftables mejora en este aspecto ya que comprime las tablas “iptables” e “ipt6tables” en una sola
tabla “inet” para reducir inconvenientes a la hora de trabajar.

7
nftables Proyecto Integrado 2ºASIR

2.7.3.- TABLAS
En nftables no hay tablas ya predefinidas como pasa en iptables con “nat, filter, raw o mangle”.
Aunque podemos recrear el estilo de iptables, somos libres de crear las tablas que queramos y
asignarles el nombre que nos plazca.

2.7.4.- CADENAS
A diferencia de las cadenas en iptables, no hay cadenas integradas en nftables. Al igual que ocurre
como con las tablas, tenemos libertad de crear las cadenas que necesitemos y asignarles el nombre
que queramos. Si ninguna cadena utiliza ningún tipo o hook, los paquetes de red que fluyan a través
de esas cadenas no serán tocados por nftables, a diferencia de iptables que sí los toca.
En nftables disponemos de 3 tipos de cadenas (filter, route y nat) y 5 tipos de hooks, que son los
mismos que en iptables (prerouting, input, forward, output, postrouting).

2.7.5.- REGLAS
En el caso de nftables, las reglas se almacenan en cadenas, que a su vez se almacenan en tablas. Las
reglas de nftables son como las reglas de iptables, volátiles. Es decir, cuando se asigna una regla
hay que guardarlas en el archivo de configuración ya que en el reinicio del sistema se pierden, en el
caso de nftables.
Las reglas especifican qué acción se debe tomar para los paquetes y dichas reglas pueden tener una
expresión para hacer coincidir paquetes y una o más acciones a realizar cuando se emparejan. Esta
es una de las diferencias principales respecto a iptables, es posible especificar varias acciones para
una regla.
Otra diferencia es que por defecto los contadores están desactivados, además, se debe especificar
explícitamente en las reglas, si se desea habilitar los contadores de paquetes y bytes.

8
nftables Proyecto Integrado 2ºASIR

3.- ESTUDIO DE LA VIABILIDAD, ¿DISPONGO DE


LO NECESARIO?
Los requisitos de los que tenemos que disponer para implementar un cortafuegos con nftables son
los siguientes:
• Un equipo con sistema operativo Linux
• Paquete nftables

Un equipo con sistema operativo Linux es fácil de conseguir, y el paquete necesario se puede
descargar desde los repositorios de Linux. Como disponemos de ambos requisitos, podemos
empezar a configurarlo.

4.- MANUAL DE INSTALACIÓN


Esta aplicación podemos aplicarla en un equipo físico o en una máquina virtual. Si es el caso de
un equipo físico necesitaremos una conexión a Internet. Si en cambio, lo virtualizamos
necesitaremos los siguientes requisitos.

4.1.- REQUISITOS MÍNIMOS PARA VIRTUALIZACIÓN


Si vamos a usar la aplicación en una máquina virtual, necesitaremos:
• un software de virtualización
• una conexión a Internet
• suficiente espacio en disco
• suficiente memoria (mínimo 8GB para trabajar con normalidad)

Como software de virtualización hemos elegido Oracle VM VirtualBox, ya que hemos trabajado en
clase durante estos dos años atrás con él. Podemos descargarlo desde el siguiente enlace:
- https://www.virtualbox.org/wiki/Downloads

9
nftables Proyecto Integrado 2ºASIR

Tendremos que elegir la distribución en la que descargar el programa, en nuestro caso lo


descargamos para Ubuntu 18 haciendo click en el nombre de la versión.

10
nftables Proyecto Integrado 2ºASIR

Una vez descargado, nos dirigimos al directorio de Descargas, o donde se haya guardado el
programa y damos click derecho a un espacio en blanco→ Abrir en una terminal.

En la terminal escribimos “sudo su” e introducimos la contraseña de nuestro usuario administrador.

Y escribimos ahora lo siguiente “dpkg -i nombre_del_paquete”. Podemos escribir “dpkg -i”,


introducir la primera letra del paquete y darle al tabulador (arriba de Bloq Mayús).

Le damos a Intro, esperamos a que se instale y lo buscamos en Inicio.

11
nftables Proyecto Integrado 2ºASIR

4.2.- INSTALACIÓN DEL SISTEMA OPERATIVO EN UNA


MÁQUINA VIRTUAL
Instalado ya el sistema de virtualización, necesitaremos nuestra máquina virtual de Linux. Para ello
tendremos que descargar la imagen iso que contiene el sistema operativo de Ubuntu 18. Lo
podemos descargar desde la siguiente página ( la podemos bajar desde el enlace azul ) :
- http://releases.ubuntu.com/18.04.4/
Descargamos la imagen de escritorio (Desktop image).

12
nftables Proyecto Integrado 2ºASIR

Descargada, volvemos a VirtualBox y le damos a Nueva. Le asignamos un nombre a la máquina


virtual y elegimos el tipo y versión de sistema operativo.

Le damos a Siguiente y elegimos cuanta memoria (RAM) vamos a darle a la máquina.


Seleccionamos 2048 MB.

13
nftables Proyecto Integrado 2ºASIR

Siguiente. Ahora creamos el disco duro virtual.

14
nftables Proyecto Integrado 2ºASIR

Asignamos la ubicación y el tamaño del disco duro. Asignamos 10GB como mínimo.
(Recomendable 20GB).

La creamos y ya nos aparece en la interfaz principal.

15
nftables Proyecto Integrado 2ºASIR

Seleccionamos la máquina → Configuración → Almacenamiento.

Y le agregamos la imagen iso.

16
nftables Proyecto Integrado 2ºASIR

Aceptamos e iniciamos la instalación. Para instalar Ubuntu 18 simplemente seguimos el asistente de


instalación, que es fácil e intuitivo.

4.3.- INSTALACIÓN DE NFTABLES


Para la descarga e instalación simplemente abrimos la terminal (Ctrl + Alt + T) y escribimos lo
siguiente:

Para comprobar que está instalado correctamente, ejecutamos el siguiente comando:

Si nos sale el listado de reglas, se ha instalado correctamente.

17
nftables Proyecto Integrado 2ºASIR

4.4.- CONFIGURACIÓN DE NFTABLES


4.4.1.- ARCHIVO DE CONFIGURACIÓN
Su archivo de configuración es /etc/nftables.conf y viene definida una tabla llamada filter para las
direcciones de la familia inet (IPv4 e IPv6).

4.4.2.- COMANDOS BÁSICOS


Para ver el conjunto de reglas que hay aplicado en un determinado momento, podemos hacerlo
mediante el siguiente comando:
- nft list ruleset

18
nftables Proyecto Integrado 2ºASIR

En nftables puedes agregar tus reglas de dos maneras:


• Mediante la línea de comandos.
• Mediante el archivo de configuración

Como ya sabemos, las reglas son volátiles. Para guardarlas permanentemente y que se ejecuten
con el reinicio del sistema, tendremos que ejecutar el siguiente comando:
- nft list ruleset > /etc/nftables.conf

Una vez hayamos guardado nuestras reglas, tendremos que reiniciar el servicio. Para ello nos
valemos del siguiente comando.
- systemctl restart nftables.service

Para vaciar todo el conjunto de reglas, podemos ejecutar el siguiente comando.


- nft flush ruleset

Comprobamos que no nos lista nada.

4.4.3.- TABLAS
Para listar todas las tablas, se utiliza el comando:
- nft list tables
También se pueden ver con “nft list ruleset” pero no es recomendable si disponemos de muchas.

19
nftables Proyecto Integrado 2ºASIR

La sintaxis que se utiliza para listar las cadenas y reglas de una tabla en concreto es:
- nft list table [familia_de_direcciones] [nombre_tabla]

Para crear una tabla en nftables, la sintaxis es la siguiente:


- nft add table [familia_de_direcciones] [nombre_tabla]

Para borrar una tabla, lo hacemos mediante el siguiente comando:


- nft delete table [familia_de_direcciones] [nombre_tabla]

20
nftables Proyecto Integrado 2ºASIR

Para vaciar las reglas de una tabla se utiliza el comando:


- nft flush table [familia_de_direcciones] [nombre_tabla]

4.4.4.- CADENAS
Si queremos añadir una cadena normal, la sintaxis es la siguiente:
- nft add chain [familia_de_direcciones] [nombre_tabla] [cadena]

21
nftables Proyecto Integrado 2ºASIR

Si queremos añadir una cadena base, la sintaxis es la siguiente:


- nft add chain [familia_de_direcciones] [nombre_tabla] [cadena] { type tipo hook hook priority
prioridad\; policy política\;}
El “type” puede ser:
• filter
• route
• nat

El “hook” depende de la familia, y puede ser:

Familia Hook
ip / ip6 / inet prerouting,input,forward,output,postrouting
arp input,output
bridge prerouting,input,forward,output,postrouting

La prioridad es un valor entera. Las cadenas con números más bajos se procesan primero, pueden
ser negativos. Esto es ideal para facilitar la gestión de las cadenas.
La política puede ser:
• accept
• drop
• queue
• continue
• return

Ejemplo:

22
nftables Proyecto Integrado 2ºASIR

Para modificar una cadena lo que tenemos que hacer es llamarla por su nombre y definir la nueva
regla a cambiar. La sintaxis es la siguiente:
- nft chain [familia_de_direcciones] [nombre_tabla] [cadena] { type tipo hook hook priority
prioridad\; policy política\;}

Para borrar una cadena, usamos el comando:


- nft delete chain [familia_de_direcciones] [nombre_tabla] [cadena]

Para vaciar una cadena, usamos el comando:


- nft flush chain [familia_de_direcciones] [nombre_tabla] [cadena]

4.4.5.- REGLAS
Podemos traducir reglas de iptables a nftables con la utilidad iptables-translate mediante la
siguiente sintaxis:
- iptables-translate [regla_iptable]

23
nftables Proyecto Integrado 2ºASIR

Para añadir una regla a una cadena usamos:


- nft add rule [familia_de_direcciones] [nombre_tabla] [cadena] handle [identificador]
El “handle” es opcional e indica la posición de la regla dentro de la cadena.

Para eliminar una regla debemos eliminarlas gracias al “handle” utilizado, o la posición donde
nftables la ha colocado. Seguimos la siguiente sintaxis:
- nft delete rule [nombre_tabla] [cadena] handle [identificador]

0 es el primer puesto.
No podemos modificar reglas, en el caso de que quisiéramos cambiarla, debemos eliminarla y
volverla a crear.

5.- MANUAL DE USUARIO


Hasta ahora hemos descargado e instalado el cortafuegos, y hemos visto una pequeña configuración
sobre él. Ahora veremos como un usuario inexperto puede utilizar esta herramienta de cortafuegos
para configurar un “firewall básico”.

Un usuario inexperto es incapaz de redactar sus propias reglas de cortafuegos, ya que para estos es
difícil. Por eso, a continuación mostramos la configuración de un cortafuegos personal básico para
no tener que preocuparte por nada.

El usuario lo único que tendrá que hacer es instalar la herramienta (# apt-get install nftables) y
seguir los siguientes pasos:

24
nftables Proyecto Integrado 2ºASIR

- Abrimos una terminal pulsando Ctrl + Alt + T y nos conectamos como usuario root poniendo
“sudo su” y nuestra contraseña. Luego nos situamos en el directorio init.d y creamos el archivo
“cortafuegos.sh”

- Luego lo editamos poniendo “nano cortafuegos.sh” y escribimos lo siguiente:

- Le damos permisos para poder ejecutarlo.


# chmod +x “fichero”

25
nftables Proyecto Integrado 2ºASIR

- Lo ejecutamos y comprobamos si podemos salir a Internet.

Si sale a Internet correctamente, ya tendríamos un “firewall básico” configurado.

26
nftables Proyecto Integrado 2ºASIR

6.- PRUEBAS
A continuación se mostrará un ejemplo de una topología DMZ en la que se implementará un
cortafuegos con la herramienta “nftables”.
Para este ejemplo, seguiremos el siguiente esquema de red.

Antes de comenzar con la configuración del cortafuegos, deberemos configurar y comprobar el


funcionamiento de los servicios, tanto los de la zona desmilitarizada como el servidor DHCP del
router. Esto lo haremos suponiendo que la configuración de las interfaces de red se haya hecho
anteriormente. También deberemos activar el bit de reenvío en el router. Esto se hace con el
siguiente comando en la terminal: echo 1 > /proc/sys/net/ipv4/ip_forward (En el caso de Ubuntu).
Comenzaremos con los servicios de la DMZ.

Servidor FTP
Instalamos el paquete “vsftpd” que nos permite configurar un servidor ftp.

27
nftables Proyecto Integrado 2ºASIR

Editamos su fichero de configuración, situado en “/etc/vsftpd.conf”

La configuración de este ya dependería de cada situación. En mi caso, permito el acceso sólo a


usuarios locales.

Comprobamos desde cualquier equipo.

Servidor Apache
Primero lo instalamos.

28
nftables Proyecto Integrado 2ºASIR

Luego, en el directorio /var/www creamos el archivo .html para la página web.

Editamos el archivo y escribimos el código de la página web.

Comprobamos desde el navegador con la dirección IP del servidor Apache.

Servidor de vídeo
Podemos seguir la instalación y configuración del Media Center Emby desde el siguiente enlace:
- https://vivaubuntu.com/instalar-emby-en-ubuntu

29
nftables Proyecto Integrado 2ºASIR

Comprobamos.

Servidor DHCP
Lo instalamos.

Indicamos la interfaz por donde va a escuchar las peticiones DHCP.

30
nftables Proyecto Integrado 2ºASIR

Configuramos la red a proporcionar por el servidor.

Por último, reiniciamos el servicio y comprobamos.

Lo comprobamos mediante el fichero de prestaciones del servicio dhcp.

31
nftables Proyecto Integrado 2ºASIR

Una vez funcionando todos los servicios correctamente tenemos que decidir que tipo de política de
empresa vamos a implementar. En mi caso será la siguiente:

• Por defecto, la política será DENEGAR las salidas y reenvío de paquetes y ACEPTAR las
entradas de paquetes.
• Los clientes de la red interna podrán acceder tanto a la DMZ como a Internet.
• La DMZ será accesible tanto por los clientes de la red interna como por los usuarios de
Internet, pero ésta no podrá establecer conexiones nuevas con los clientes de la LAN.
• Los usuarios de la red externa podrán acceder a los servicios de la zona desmilitarizada pero,
en cambio, no podrán establecer conexiones nuevas con los clientes de la red interna.
• En la red interna de la empresa hay un empleado que no puede acceder a los servicios de la
DMZ; este usuario será el equipo con la dirección IP 192.168.0.11

Sabiendo las políticas que vamos a implementar en nuestro cortafuegos, nos ponemos con la
configuración.

Primero creamos un script donde colocaremos todos los comandos necesarios para configurar el
cortafuegos. La siguiente imagen contiene la creación de una tabla y tres cadenas (entrada, reenvío
y salida).

32
nftables Proyecto Integrado 2ºASIR

Y vamos redactando las reglas.

Redactadas las reglas, comprobamos.


- Los clientes de la red interna (0.0) pueden acceder tanto a la DMZ (2.0) como a Internet (1.0).

Aquí vemos como el cliente de la red interna accede al servicio ftp del equipo de la DMZ
192.168.2.3, así como al equipo que simula Internet, con la dirección IP 192.168.1.2.

33
nftables Proyecto Integrado 2ºASIR

- El cliente de la red interna 192.168.0.11 no puede acceder a los servicios de la DMZ pero sí a
Internet.

- La DMZ es accesible tanto por la red interna como por la red externa, pero no puede establecer
conexiones nuevas hacia la red interna.

Desde la red externa a la DMZ.

34
nftables Proyecto Integrado 2ºASIR

Desde la DMZ a la red interna.

- Los usuarios de la red externa no podrán establecer conexiones nuevas con los clientes de la LAN.

Y aquí finaliza este ejemplo. Como hemos podido observar, podemos configurar un cortafuegos con
“nftables” sin muchas complicaciones. De hecho es más intuitivo que la anterior herramienta de
cortafuegos “iptables”.

7.- CÓDIGO FUENTE


En este apartado veremos a fondo el script que hemos utilizado para realizar el cortafuegos básico
para un equipo doméstico, tanto como el script de cortafuegos del primer ejemplo de DMZ.

35
nftables Proyecto Integrado 2ºASIR

- Script de cortafuegos doméstico:

- Script cortafuegos de topología DMZ.

36
nftables Proyecto Integrado 2ºASIR

8.- IMPLANTACIÓN
La herramienta de cortafuegos “nftables” se puede implementar en multitud de escenarios y
situaciones en cualquier sistema operativo moderno Linux. Se ha demostrado ya que es una
herramienta que supera a la actual herramienta de cortafuegos “iptables” en bastantes aspectos y es
una firme candidata a ser el principal mecanismo de seguridad en los sistemas Linux en el futuro.

En mi opinión, antes de la realización de este proyecto desconocía su existencia, pero al estar


documentándome sobre ella, me ha gustado bastante su forma de trabajar. Más intuitiva que
“iptables” a mi gusto, con comandos generales y fáciles de recordar, se convierte en un aliado para
reforzar la seguridad de los datos en nuestro sistema operativo Linux.

37

También podría gustarte