Introducción a UFW (Uncomplicated Firewall) en Ubuntu 20.04

UFW o Uncomplicated Firewall es una aplicación para gestionar un cortafuegos basado en iptables en Ubuntu. UFW es la herramienta de configuración del cortafuegos por defecto para Ubuntu Linux y proporciona una forma fácil de configurar el cortafuegos, el comando UFW es igual que el idioma inglés, por lo que los comandos son fáciles de recordar. El cortafuegos UFW soporta IPv4 e IPv6.

UFW proporciona también una aplicación GUI, si utilizas un escritorio GNOME puedes instalar gufw, o si utilizas un escritorio KDE puedes instalar kcm-ufw.

Requisitos previos

  • Versión de Ubuntu entre 15.04 y 21.04. Las versiones más recientes de Ubuntu también deberían funcionar.
  • Privilegios de root

¿Qué se cubre en este tutorial?

  1. Instalación de UFW.
  2. La sintaxis básica del comando UFW.
  3. Los comandos UFW Allow y Deny.
  4. Comandos avanzados de UFW.
  5. Eliminación de una regla en UFW.
  6. Desactivar y reiniciar UFW.

Instalación de UFW

Por defecto, UFW debería estar ya instalado en ubuntu 20.04. Puedes comprobarlo con el comando

which ufw

Si no te devuelve la ruta del comando, instala UFW con el siguiente comando apt:

sudo apt-get install ufw

Para los siguientes comandos, utiliza los privilegios de sudo o de root. Puedes convertirte en usuario root con el comando

sudo -s

A continuación, ejecuta el siguiente comando para habilitar UFW:

ufw enable

Resultado:

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

El comando básico UFW

El comando «ufw enable» activará UFW con las reglas por defecto. Puedes verificar que UFW se está ejecutando emitiendo este comando:

ufw status verbose

Resultado:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

Si quieres desactivar o apagar UFW, puedes utilizar:

ufw disable

Resultado:

Firewall stopped and disabled on system startup

Activar UFW

El comando de permitir y denegar UFW

1. Comando de Permitir UFW

UFW denegará todas las conexiones entrantes después de que lo actives. Así que lo primero que debes hacer es permitir el acceso por SSH al servidor si quieres gestionar el sistema de forma remota. El comando «ufw allow sshport» permite el acceso por SSH, sustituye SSHPORT por el puerto del servicio SSH, el puerto SSH por defecto es el 22.

ufw allow 22

Resultado:

Rules updated
Rules updated (v6) #For IPv6

Si quieres permitir las conexiones entrantes en el puerto 22 sólo para TCP, añade al final del comando «/tcp» como se muestra en el siguiente ejemplo.

ufw allow 22/tcp

Si el servicio al que quieres permitir el acceso está escuchando en su puerto por defecto, puedes utilizar el nombre del servicio en lugar del número de puerto. Esto facilita la apertura del puerto, ya que es posible que no conozcas el puerto. UFW buscará entonces el número de puerto correcto en /etc/servicios por ti.

Este comando abrirá el puerto SSH por defecto:

ufw allow ssh

Ahora comprueba la regla con:

ufw status

Permitir SSH en UFW

2. Comando «deny» de UFW

El comando «denegar» funciona de forma similar al comando «permitir» y se utiliza para cerrar un puerto en el cortafuegos:

Denegar con la opción Puerto:

ufw deny 80

Resultado:

Rule added
Rule added (v6)

Comando de denegación de la UFW.

Ejemplo de «denegar» con el nombre del servicio. En este ejemplo, bloquearé el puerto http/80:

ufw deny http

UFW niega http.

Nota:

Puedes ver todos los puertos y sus nombres de servicio en el archivo «/etc/servicios».

Comandos avanzados de UFW

Ahora profundizaremos en la sintaxis de los comandos UFW, aprenderemos a permitir rangos de partes (por ejemplo, para los puertos pasivos del FTP y a permitir el acceso desde una sola IP o subred.

1. Permitir un rango de puertos

Puedes permitir un rango de puertos en UFW. Algunos servicios como el FTP o el IRC utilizan un rango de puertos para comunicarse con sus clientes.

Para este ejemplo vamos a permitir el rango de puertos que utiliza ircd en mi servidor el rango es el puerto 6660 a 6670:

sudo ufw allow 6660:6670/tcp
sudo ufw allow 6660:6670/udp

El comando permitirá las conexiones a los puertos 6660-6670 a través del protocolo TCP y UDP.

2. Permitir una dirección IP específica

Y puedes añadir una IP específica para permitir el acceso a todos los servicios añadiendo la opción«desde«. Esto es útil, por ejemplo, si tienes una IP estática en casa o en la oficina y quieres permitir el acceso a todos los servicios de tu servidor desde allí. El siguiente comando permitirá que la IP 192.168.1.106 acceda a todos los puertos del servidor:

ufw allow from 192.168.1.106

Resultado:

Rule added

3. Permitir subred

Si quieres permitir todas las direcciones IP de tu subred, puedes añadir la subred IP (rango de direcciones IP) al comando UFW de la siguiente manera

ufw allow from 192.168.1.1/24

Resultado:

WARN: Rule changed after normalization
Rule added

4. Permitir el acceso desde una dirección IP concreta a un puerto

Si quieres permitir el acceso a un puerto sólo desde una IP concreta, puedes combinar los comandos UFW que hemos aprendido anteriormente.

Por ejemplo, sólo la IP 192.168.1.106 puede acceder al puerto 22 tcp de ssh y otras IP serán rechazadas desde ese puerto, puedes utilizar el siguiente comando:

ufw allow from 192.168.1.106 proto tcp to any port 22

Resultado:

Rule added

5. Permitir todo el tráfico entrante a un puerto específico

Si quieres permitir todo el tráfico en el puerto 80, puedes utilizar este comando:

ufw allow to any port 80

Eliminar una regla del cortafuegos UFW

En esta sección aprenderás a eliminar una regla guardada en UFW. Puedes utilizar el comando «delete» para eliminar la regla ufw. Escribe el comando«ufw delete» y seguido de la opción que quieras eliminar, permitir o denegar.

Aquí tienes algunos ejemplos:

Borrar la regla SSH permitida con nombre de servicio:

ufw delete allow ssh

Resultado:

Rule deleted
Rule deleted (v6)

Este comando borrará la regla «allowssh«. ten cuidado, no te bloquees en el servidor.

Eliminar la regla «deny» del puerto 80:

ufw delete deny 80

Resultado:

Rule deleted
Rule deleted (v6)

Si tienes una regla compleja, hay una forma sencilla de identificar y eliminar la regla por su ID de regla. Ejecuta el siguiente comando para obtener una lista de todas las reglas con sus ID:

ufw status numbered

Resultado:

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 22/tcp (v6)                ALLOW IN    Anywhere (v6)

Ahora elimina la regla SSH sólo para IPv6 utilizando el número de la regla:

ufw delete 2

Desactivar y restablecer UFW

Si quieres desactivar la UFW sin borrar las reglas, puedes utilizar el comando«desactivar»:

ufw disable

Resultado:

Firewall stopped and disabled on system startup

El comando de estado UFW.

Si quieres desactivar completamente UFW y borrar todas las reglas, puedes utilizar el comando «reset«:

ufw reset

Resultado:

Resetting all rules to installed defaults. This may disrupt existing ssh
connections. Proceed with operation (y|n)? y
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20150918_190351'
Backing up 'user.rules' to '/lib/ufw/user.rules.20150918_190351'
Backing up 'after.rules' to '/etc/ufw/after.rules.20150918_190351'
Backing up 'before.rules' to '/etc/ufw/before.rules.20150918_190351'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20150918_190351'
Backing up 'user6.rules' to '/lib/ufw/user6.rules.20150918_190351'

Conclusión

UFW (Uncomplicated Firewall) es la herramienta de configuración del cortafuegos por defecto en Ubuntu. Los comandos de UFW son similares al idioma inglés, lo que hace que sean fáciles de usar y recordar. Este tutorial de UFW es una guía para empezar a utilizar esta bonita herramienta de cortafuegos, si quieres saber más sobre UFW, puedes ir a la wiki de ubuntu o a la página de ufw-man.

También te podría gustar...