Un firewall es una herramienta para monitorear y filtrar el tráfico de red entrante y saliente. Funciona definiendo un conjunto de reglas de seguridad que determinan si se permite o bloquea un tráfico específico.

Ubuntu se envía con una herramienta de configuración de cortafuegos llamada UFW (cortafuegos sin complicaciones). Es un front-end fácil de usar para administrar las reglas de firewall de iptables. Su objetivo principal es hacer que la administración del firewall sea más fácil o, como su nombre lo dice, sin complicaciones.

Este artículo describe cómo usar la herramienta UFW para configurar y administrar un firewall en Ubuntu 20.04. Un firewall correctamente configurado es uno de los aspectos más importantes de la seguridad general del sistema.

requisitos previos

Solo los usuarios root o con privilegios sudo pueden administrar el firewall del sistema. La mejor práctica es ejecutar tareas administrativas como usuario sudo.

Instalar UFW

UFW es parte de la instalación estándar de Ubuntu 20.04 y debería estar presente en su sistema. Si por alguna razón no está instalado, puede instalar el paquete escribiendo:

sudo apt updatesudo apt install ufw

Verifique el estado de UFW

UFW está deshabilitado de forma predeterminada. Puede verificar el estado del servicio UFW con el siguiente comando:

sudo ufw status verbose

El resultado mostrará que el estado del firewall está inactivo:

Status: inactive

Políticas predeterminadas de UFW

El comportamiento predeterminado de UFW Firewall es bloquear todo el tráfico entrante y reenviado y permitir todo el tráfico saliente. Esto significa que cualquier persona que intente acceder a su servidor no podrá conectarse a menos que abra específicamente el puerto. Las aplicaciones y los servicios que se ejecutan en su servidor podrán acceder al mundo exterior.

Las políticas predeterminadas se definen en el /etc/default/ufwarchivo y se pueden cambiar modificando manualmente el archivo o con el sudo ufw default <policy> <chain>comando.

Las políticas de firewall son la base para crear reglas más complejas y definidas por el usuario. En general, las políticas predeterminadas iniciales de UFW son un buen punto de partida.

Perfiles de aplicación

Un perfil de aplicación es un archivo de texto en formato INI que describe el servicio y contiene reglas de firewall para el servicio. Los perfiles de aplicación se crean en el /etc/ufw/applications.ddirectorio durante la instalación del paquete.

Puede enumerar todos los perfiles de aplicación disponibles en su servidor escribiendo:

sudo ufw app list

Dependiendo de los paquetes instalados en su sistema, el resultado será similar al siguiente:

Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

Para encontrar más información sobre un perfil específico y las reglas incluidas, use el siguiente comando:

sudo ufw app info 'Nginx Full'

El resultado muestra que el perfil 'Nginx Full' abre puertos 80443.

Profile: Nginx Full
Title: Web Server (Nginx, HTTP + HTTPS)
Description: Small, but very powerful and efficient web server

Ports:
  80,443/tcp

También puede crear perfiles personalizados para sus aplicaciones.

Habilitación de UFW

Si se está conectando a su Ubuntu desde una ubicación remota, antes de habilitar el firewall UFW, debe permitir explícitamente las conexiones SSH entrantes. De lo contrario, ya no podrá conectarse a la máquina.

Para configurar su firewall UFW para permitir conexiones SSH entrantes, escriba el siguiente comando:

sudo ufw allow ssh
Rules updated
Rules updated (v6)

Si SSH se ejecuta en un puerto no estándar , debe abrir ese puerto.

Por ejemplo, si su demonio ssh escucha en el puerto 7722, ingrese el siguiente comando para permitir conexiones en ese puerto:

sudo ufw allow 7722/tcp

Ahora que el firewall está configurado para permitir conexiones SSH entrantes, puede habilitarlo escribiendo:

sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Se le advertirá que habilitar el firewall puede interrumpir las conexiones ssh existentes, simplemente escriba yy presione Enter.

Apertura de puertos

Dependiendo de las aplicaciones que se ejecuten en el sistema, es posible que también deba abrir otros puertos. La sintaxis general para abrir un puerto es la siguiente:

ufw allow port_number/protocol

A continuación se muestran algunas formas de permitir conexiones HTTP.

La primera opción es usar el nombre del servicio. UFW verifica el /etc/servicesarchivo para el puerto y el protocolo del servicio especificado:

sudo ufw allow http

También puede especificar el número de puerto y el protocolo:

sudo ufw allow 80/tcp

Cuando no se proporciona ningún protocolo, UFW crea reglas para ambos tcpudp.

Otra opción es usar el perfil de la aplicación; en este caso, 'Nginx HTTP':

sudo ufw allow 'Nginx HTTP'

UFW también admite otra sintaxis para especificar el protocolo mediante la protopalabra clave:

sudo ufw allow proto tcp to any port 80

Rangos de puertos

UFW también le permite abrir rangos de puertos. Los puertos de inicio y final están separados por dos puntos ( :), y debe especificar el protocolo, ya sea tcpudp.

Por ejemplo, si desea permitir puertos de 71007200en ambos tcpudp, debe ejecutar el siguiente comando:

sudo ufw allow 7100:7200/tcpsudo ufw allow 7100:7200/udp

Dirección IP y puerto específicos

Para permitir conexiones en todos los puertos desde una IP de origen determinada, utilice la frompalabra clave seguida de la dirección de origen.

Aquí hay un ejemplo de lista blanca de una dirección IP:

sudo ufw allow from 64.63.62.61

Si desea permitir que la dirección IP dada acceda solo a un puerto específico, use la to any portpalabra clave seguida del número de puerto.

Por ejemplo, para permitir el acceso al puerto 22desde una máquina con dirección IP de 64.63.62.61, ingrese:

sudo ufw allow from 64.63.62.61 to any port 22

Subredes

La sintaxis para permitir conexiones a una subred de direcciones IP es la misma que cuando se usa una sola dirección IP. La única diferencia es que debe especificar la máscara de red.

A continuación se muestra un ejemplo que muestra cómo permitir el acceso a direcciones IP que van desde 192.168.1.1192.168.1.254puerto 3360MySQL ):

sudo ufw allow from 192.168.1.0/24 to any port 3306

Interfaz de red específica

Para permitir conexiones en una interfaz de red en particular, use la in onpalabra clave seguida del nombre de la interfaz de red:

sudo ufw allow in on eth2 to any port 3306

Negando conexiones

La política predeterminada para todas las conexiones entrantes está establecida en deny, y si no la ha cambiado, UFW bloqueará todas las conexiones entrantes a menos que abra específicamente la conexión.

Escribir reglas de denegación es lo mismo que escribir reglas de permiso; solo necesita usar la denypalabra clave en lugar de allow.

Digamos que abrió puertos 80443, y su servidor está siendo atacado desde la 23.24.25.0/24red. Para denegar todas las conexiones 23.24.25.0/24, ejecute el siguiente comando:

sudo ufw deny from 23.24.25.0/24

Aquí hay un ejemplo de denegar el acceso solo a los puertos 80puede usar el siguiente comando:44323.24.25.0/24

sudo ufw deny proto tcp from 23.24.25.0/24 to any port 80,443

Eliminación de reglas UFW

Hay dos formas diferentes de eliminar reglas UFW por número de regla y especificando la regla real.

Eliminar reglas por número de regla es más fácil, especialmente cuando es nuevo en UFW. Para eliminar una regla por un número de regla primero, debe encontrar el número de la regla que desea eliminar. Para obtener una lista de reglas numeradas, use el ufw status numberedcomando:

sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 8080/tcp                   ALLOW IN    Anywhere

Para eliminar la regla número 3, la que permite las conexiones al puerto 8080, ingresaría:

sudo ufw delete 3

El segundo método consiste en eliminar una regla especificando la regla real. Por ejemplo, si agregó una regla para abrir el puerto 8069, puede eliminarla con:

sudo ufw delete allow 8069

Deshabilitar UFW

Si por alguna razón desea detener UFW y desactivar todas las reglas, puede usar:

sudo ufw disable

Más tarde, si desea volver a habilitar UTF y activar todas las reglas, simplemente escriba:

sudo ufw enable

Restablecimiento de UFW

Restablecer UFW desactivará UFW y eliminará todas las reglas activas. Esto es útil si desea revertir todos sus cambios y comenzar de nuevo.

Para restablecer UFW, escriba el siguiente comando:

sudo ufw reset

Enmascaramiento de IP

IP Masquerading es una variante de NAT (traducción de direcciones de red) en el kernel de Linux que traduce el tráfico de red reescribiendo las direcciones IP y los puertos de origen y destino. Con IP Masquerading, puede permitir que una o más máquinas en una red privada se comuniquen con Internet utilizando una máquina Linux que actúa como puerta de enlace.

La configuración del enmascaramiento de IP con UFW implica varios pasos.

Primero, debe habilitar el reenvío de IP. Para hacer eso, abra el /etc/ufw/sysctl.confarchivo:

sudo nano /etc/ufw/sysctl.conf

Busque y elimine el comentario de la línea que dice net.ipv4.ip_forward = 1:

/etc/ufw/sysctl.conf
net/ipv4/ip_forward=1

A continuación, debe configurar UFW para permitir paquetes reenviados. Abra el archivo de configuración de UFW:

sudo nano /etc/default/ufw

Localice la DEFAULT_FORWARD_POLICYclave y cambie el valor de DROPACCEPT:

/etc/predeterminado/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"

Ahora debe establecer la política predeterminada para la POSTROUTINGcadena en la nattabla y la regla de enmascaramiento. Para hacerlo, abra el /etc/ufw/before.rulesarchivo y agregue las líneas resaltadas en amarillo, como se muestra a continuación:

sudo nano /etc/ufw/before.rules

Añada las siguientes líneas:

/etc/ufw/before.rules
#NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]

# Forward traffic through eth0 - Change to public network interface
-A POSTROUTING -s 10.8.0.0/16 -o eth0 -j MASQUERADE

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

No olvide reemplazar eth0en la -A POSTROUTINGlínea para que coincida con el nombre de la interfaz de red pública:

Cuando haya terminado, guarde y cierre el archivo.

Finalmente, vuelva a cargar las reglas de UFW deshabilitando y volviendo a habilitar UFW:

sudo ufw disablesudo ufw enable

Conclusión

Le mostramos cómo instalar y configurar un firewall UFW en su servidor Ubuntu 20.04. Asegúrese de permitir todas las conexiones entrantes que sean necesarias para el correcto funcionamiento de su sistema mientras limita todas las conexiones innecesarias.

Para obtener más información sobre este tema, visite la página del manual de UFW .

Si tiene preguntas, no dude en dejar un comentario a continuación.