Introducing ZYNOO General Purpose & CPU Optimized Servers   Learn More >

Cortafuegos de Ubuntu: cómo configurar UFW en un VPS

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.

Configuración del cortafuegos de un VPS con Ubuntu mediante UFW

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:

ServicioPuertoProtocolo
SSH22 (o tu puerto personalizado)TCP
HTTP80TCP
HTTPS443TCP

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

¿Se inicia automáticamente el cortafuegos de Ubuntu después de reiniciar?

Sí. Una vez que ejecutas sudo ufw enable, UFW queda activado para los siguientes arranques. Comprueba su configuración con sudo ufw status verbose.

¿Tengo que reiniciar Ubuntu después de cambiar las reglas de UFW?

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.

¿Protege el cortafuegos UFW los contenedores Docker?

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.

Table of Content

La limitación de la tasa de solicitudes en Nginx es una función integrada que controla

Un proxy inverso de Nginx recibe las solicitudes de los visitantes de un sitio web

Un error 502 Bad Gateway en Nginx suele significar que Nginx no ha podido recibir

Build your next project with ZYNOO

From your first website to demanding applications, choose the resources and control you need.

Shared Hosting

Start your blog or business website with cPanel, LiteSpeed and CloudLinux.

VPS Hosting

Grow your websites and applications with NVMe storage, KVM virtualization and full root access.

Dedicated Servers

Power demanding projects with your own physical server, dedicated resources and control over your environment.

Scroll al inicio