GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo configurar un cortafuegos con UFW en Ubuntu 20.04

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 permitir o bloquear 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 principal objetivo es hacer que la gestión del cortafuegos sea más fácil o, como su nombre indica, sin complicaciones.

Este artículo describe cómo usar la herramienta UFW para configurar y administrar un firewall en Ubuntu 20.04. Un cortafuegos 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 cortafuegos está inactivo:

Status: inactive

Si se activa UFW, la salida se parecerá a lo siguiente:

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/ufw y se puede cambiar modificando manualmente el archivo o con 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 /etc/ufw/applications.d directorio durante la instalación del paquete.

Puede enumerar todos los perfiles de aplicaciones disponibles en su servidor escribiendo:

sudo ufw app list

Dependiendo de los paquetes instalados en su sistema, la salida será similar a la 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 los puertos 80 y 443 .

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 cortafuegos 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 y y pulsa Enter .

Puertos de apertura #

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/services archivo para el puerto y 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 tcp y udp .

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 usando el proto palabra clave:

sudo ufw allow proto tcp to any port 80

Número de intervalos de puertos

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

Por ejemplo, si desea permitir puertos desde 7100 a 7200 en ambos tcp y udp , ejecutaría el siguiente comando:

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

Dirección IP específica y número de puerto

Para permitir conexiones en todos los puertos desde una IP de origen dada, use el from palabra clave seguida de la dirección de origen.

Este es un ejemplo de inclusión en la 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 to any port palabra clave seguida del número de puerto.

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

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.1 a 192.168.1.254 al puerto 3360 (MySQL):

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 el in on palabra clave seguida del nombre de la interfaz de red:

sudo ufw allow in on eth2 to any port 3306

Denegando conexiones #

La política predeterminada para todas las conexiones entrantes se establece en deny y, si no lo 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 necesitas usar el deny palabra clave en lugar de allow .

Digamos que abrió los puertos 80 y 443 , y su servidor está siendo atacado por 23.24.25.0/24 red. Para denegar todas las conexiones desde 23.24.25.0/24 ejecutaría el siguiente comando:

sudo ufw deny from 23.24.25.0/24

Aquí hay un ejemplo de denegación de acceso solo a los puertos 80 y 443 de 23.24.25.0/24 puede usar el siguiente comando:

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 numbered comando:

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 , el que permite 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 puedes eliminarlo 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

Restableciendo UFW #

Restablecer UFW desactivará UFW y eliminará todas las reglas activas. Esto es útil si desea revertir todos los 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.conf archivo:

sudo nano /etc/ufw/sysctl.conf

Busque y descomente 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_POLICY y cambie el valor de DROP para ACCEPT :

/etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"

Ahora debe configurar la política predeterminada para POSTROUTING cadena en el nat mesa y la regla de la mascarada. Para hacerlo, abra el /etc/ufw/before.rules archivo y agregue las líneas resaltadas en amarillo, como se muestra a continuación:

sudo nano /etc/ufw/before.rules

Agregue 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 eth0 en el -A POSTROUTING lí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

Ubuntu
  1. Cómo configurar el cortafuegos UFW en Ubuntu 18.04

  2. Configurar UFW Firewall en Ubuntu 18.04 - ¿El mejor método?

  3. Cómo configurar un cortafuegos con UFW en Ubuntu \ Debian

  4. Cómo configurar un cortafuegos con UFW en Ubuntu 16.04

  5. Cómo configurar el cortafuegos UFW en Ubuntu 18.04

Cómo instalar el cortafuegos UFW en Ubuntu 16.04 LTS

Cómo configurar el cortafuegos UFW en Ubuntu 18.04 LTS

Cómo configurar el cortafuegos UFW en Ubuntu 20.04 LTS

Cómo configurar el cortafuegos con UFW en Ubuntu Linux

Cómo configurar un cortafuegos con UFW en Debian 11

Cómo configurar el cortafuegos UFW en Ubuntu 20.04