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?
- Instalación de UFW.
- La sintaxis básica del comando UFW.
- Los comandos UFW Allow y Deny.
- Comandos avanzados de UFW.
- Eliminación de una regla en UFW.
- 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
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
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)
Ejemplo de «denegar» con el nombre del servicio. En este ejemplo, bloquearé el puerto http/80:
ufw deny 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
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.