Configurar el cortafuegos de Ubuntu con UFW (Uncomplicated Firewall) ayuda a proteger tu VPS, ya que permite las conexiones esenciales y bloquea el tráfico entrante innecesario. Solo hacen falta unos pocos comandos, pero el orden importa: permite el acceso SSH antes de activar el cortafuegos o podrías perder el acceso remoto.
En este tutorial aprenderás a instalar UFW, configurar valores predeterminados seguros, abrir los puertos de tu sitio web, activar el cortafuegos y gestionar las reglas después.
Puntos clave
- UFW ofrece una forma sencilla de gestionar el cortafuegos de Ubuntu desde la línea de comandos.
- Permite el puerto SSH que utilizas antes de activar UFW en un VPS remoto.
- Bloquea por defecto el tráfico entrante no solicitado y abre solo los puertos que necesiten tus servicios.
- Comprueba el acceso desde una segunda conexión y revisa las reglas cada vez que añadas o elimines aplicaciones.
¿Qué es UFW en Ubuntu?
UFW es una herramienta de configuración del cortafuegos que gestiona las reglas del sistema de filtrado de paquetes del núcleo de Linux. En lugar de escribir reglas de bajo nivel, puedes permitir o denegar conexiones con comandos como ufw allow y ufw delete.
En un VPS típico de alojamiento web, permitirás el acceso SSH para administrarlo y abrirás los puertos 80 y 443 para los visitantes. Por lo general, los puertos de las bases de datos y de las aplicaciones internas no deberían ser accesibles desde Internet.
Antes de configurar el cortafuegos de Ubuntu
Necesitarás un VPS con Ubuntu, acceso a sudo y una conexión SSH que funcione. Si no tienes experiencia en administración remota, consulta la guía de ZYNOO sobre comandos SSH para principiantes.
Mantén abierta tu sesión SSH actual. Comprueba que funciona la consola web o de recuperación de tu proveedor de VPS. Los cortafuegos de red del proveedor son independientes de UFW y también pueden necesitar reglas adecuadas.
Estas instrucciones parten de una configuración nueva o inactiva de UFW. Si UFW ya está activo, revisa sus reglas y los requisitos de tus servicios antes de cambiar la política predeterminada.

Paso 1: comprobar e instalar UFW
Comprueba si UFW está disponible:
sudo ufw status
Status: inactive significa que está instalado, pero no está aplicando las reglas. Si el comando no se encuentra, instálalo:
sudo apt update
sudo apt install ufw
No actives todavía el cortafuegos.
Paso 2: permitir el acceso SSH antes de activar UFW
Averigua en qué puerto TCP escucha SSH:
sudo ss -ltnp
Compara el resultado con el puerto que utiliza tu cliente SSH. El puerto 22 es habitual, pero algunas configuraciones de VPS utilizan otro.
Si SSH utiliza el puerto 22, ejecuta:
sudo ufw allow 22/tcp
Si SSH utiliza un puerto personalizado, como el 2222, permite ese puerto en su lugar:
sudo ufw allow 2222/tcp
El puerto 2222 es un ejemplo, no un puerto adicional que todo el mundo deba abrir. Revisa las reglas pendientes:
sudo ufw show added
Paso 3: establecer las reglas predeterminadas y comprobar IPv6
Establece una política que deniegue por defecto las conexiones entrantes y permita al VPS iniciar conexiones salientes:
sudo ufw default deny incoming
sudo ufw default allow outgoing
Si tu VPS tiene conectividad IPv6 pública, confirma que UFW la gestione:
grep '^IPV6=' /etc/default/ufw
El valor esperado es IPV6=yes. Si utilizas IPv6, pero este valor está establecido en no, edita /etc/default/ufw para activar la gestión de IPv6 antes de activar el cortafuegos.
Paso 4: abrir los puertos que necesita tu sitio web
Si el VPS aloja un sitio web público, permite HTTP y HTTPS antes de activar UFW:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Los puertos habituales de un VPS con Ubuntu son:
| Servicio | Puerto | Protocolo |
|---|---|---|
| SSH | 22 (o tu puerto personalizado) | TCP |
| HTTP | 80 | TCP |
| HTTPS | 443 | TCP |
Para una aplicación pública que utilice otro puerto TCP, la sintaxis de UFW para permitirlo es:
sudo ufw allow 8080/tcp
Ejecuta ese ejemplo solo si tu servicio necesita acceso externo por el puerto 8080. Para un servicio UDP, especifica /udp en su lugar, como en sudo ufw allow 51820/udp para un punto de acceso WireGuard configurado en ese puerto.
También puedes comprobar los perfiles de aplicación disponibles:
sudo ufw app list
Si aparece Nginx Full, consulta sus puertos con sudo ufw app info 'Nginx Full'. El comando sudo ufw allow 'Nginx Full' puede sustituir las dos reglas anteriores para los puertos del sitio web; no necesitas usar ambos métodos. Por lo general, las aplicaciones situadas detrás de un proxy inverso Nginx local no deberían exponer públicamente su puerto interno.
Paso 5: activar UFW y verificar el cortafuegos
Cuando hayas permitido el acceso SSH y los puertos que necesiten tus servicios, activa UFW:
sudo ufw enable
Es posible que aparezca una advertencia de que la operación podría afectar a SSH. Continúa solo después de confirmar que la regla SSH es correcta y que tienes acceso a la consola de recuperación. Comprueba las reglas activas:
sudo ufw status verbose
Deberías ver Status: active, las políticas predeterminadas y los puertos permitidos. UFW también se iniciará automáticamente al arrancar.
Antes de cerrar la sesión SSH original, vuelve a conectarte desde un segundo terminal. Desde tu ordenador, utiliza ssh -p 22 username@server-ip y sustituye el nombre de usuario, la dirección y el puerto según corresponda. Si has abierto los puertos 80 y 443, prueba tu sitio web desde el exterior. Una regla ALLOW por sí sola no demuestra que se pueda acceder al servicio.
Paso 6: gestionar, restringir y eliminar reglas de UFW
Para mostrar las reglas del cortafuegos numeradas:
sudo ufw status numbered
Para eliminar una regla de permiso obsoleta, por ejemplo, la del puerto TCP 8080:
sudo ufw delete allow 8080/tcp
También puedes eliminar una regla por su número (sudo ufw delete 3), pero comprueba primero la lista actual: la numeración puede cambiar y, al eliminar una regla por número, es posible que solo se elimine una de las reglas correspondientes de IPv4 e IPv6.
Opcional: restringir el acceso SSH a tu IP
Si la IP desde la que administras el VPS es estable, puedes restringir el acceso SSH a esa dirección. Por ejemplo:
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp
Sustituye la IP del ejemplo por tu IP pública real. Prueba a iniciar una nueva sesión desde esa dirección y, después, elimina la regla general anterior con sudo ufw delete allow 22/tcp. Si mantienes la regla general, cualquiera podrá seguir accediendo. Mantén disponibles la sesión original y la consola de recuperación durante todo el proceso.
Opcional: limitar la frecuencia de los intentos de acceso SSH
Como alternativa, si necesitas acceder por SSH desde IP que cambian, sustituye la regla general de permiso por una limitación de la frecuencia de conexiones:
sudo ufw limit 22/tcp
sudo ufw delete allow 22/tcp
sudo ufw status numbered
Hazlo solo después de confirmar que tienes una conexión SSH funcional y acceso a la consola de recuperación; si tu puerto SSH no es el 22, utiliza el puerto correspondiente. Después, prueba a iniciar otra sesión. Esta es una alternativa al acceso restringido por IP, no una medida que debas combinar con él. La limitación de frecuencia no sustituye la autenticación mediante claves SSH.
Paso 7: consultar los registros y solucionar problemas de acceso
Activa el registro básico cuando necesites investigar el tráfico bloqueado:
sudo ufw logging on
sudo ufw status verbose
Los registros de UFW pueden estar disponibles en el diario del sistema o en /var/log/ufw.log, según la configuración del registro.
Si dejas de poder acceder por SSH, utiliza la consola de recuperación de tu proveedor para revisar las reglas activas. Como medida temporal de emergencia, sudo ufw disable deja de aplicar las reglas; corrige la regla SSH y vuelve a activar UFW.
Si tu sitio web no carga, comprueba qué servicios están escuchando con sudo ss -ltnp, las reglas de UFW y cualquier cortafuegos del proveedor. Abrir un puerto no inicia el servicio asociado a él.
Preguntas frecuentes
Sí. Una vez que ejecutas sudo ufw enable, UFW queda activado para los siguientes arranques. Comprueba su configuración con sudo ufw status verbose.
No. Las reglas que añades o eliminas mediante UFW entran en vigor sin reiniciar el VPS. Puedes consultar la configuración actual de inmediato.
No necesariamente. Los puertos publicados por Docker pueden eludir las reglas de entrada habituales de UFW porque Docker configura sus propias reglas de red. Consulta la documentación de Docker sobre cortafuegos antes de confiar en UFW para restringir el acceso a los contenedores.
Conclusión
Una configuración segura del cortafuegos de Ubuntu con UFW comienza por permitir el acceso SSH, aplicar una política que deniegue por defecto las conexiones entrantes y abrir solo los puertos que necesiten tus aplicaciones. Después de activar UFW, comprueba el acceso desde otra conexión y elimina las reglas obsoletas a medida que cambie la configuración de tu VPS.
UFW controla el acceso a la red, no los abusos a nivel de aplicación. Para los sitios web públicos alojados en Nginx, limitar la frecuencia de las solicitudes es una medida de protección adicional útil.