UFW (Uncomplicated Firewall) es la herramienta más sencilla y efectiva para configurar un cortafuegos en sistemas Linux. En esta guía paso a paso aprenderás a instalarlo, configurarlo correctamente, añadir reglas personalizadas, evitar errores comunes y reforzar la seguridad de tu servidor Ubuntu combinándolo con herramientas como Fail2ban.

🔎 ¿Qué encontrarás en esta guía?
Todo lo esencial para proteger tu servidor Linux con UFW:

¿Qué es UFW y por qué es importante?

UFW (Uncomplicated Firewall) es una herramienta diseñada para simplificar la gestión del cortafuegos iptables en sistemas basados en Debian, como Ubuntu. Su propósito es ofrecer una interfaz sencilla de línea de comandos que permita a los administradores controlar qué conexiones entrantes y salientes están permitidas o bloqueadas en el sistema.

Un cortafuegos bien configurado actúa como una barrera entre tu servidor y el exterior, evitando que servicios no autorizados queden expuestos a internet. En entornos Linux, donde abundan servidores web, de bases de datos o de correo, controlar el tráfico de red es esencial para minimizar la superficie de ataque.

Gracias a su enfoque simple, UFW permite:

  • Permitir o denegar conexiones por puertos, protocolos o direcciones IP
  • Establecer políticas predeterminadas restrictivas (deny) o permisivas (allow)
  • Integrarse con herramientas como fail2ban para bloquear intentos de acceso sospechosos
  • Registrar eventos y cambios en el tráfico con logs legibles

En comparación con iptables, UFW ofrece una curva de aprendizaje más suave. Pero eso no significa que sea menos potente: bajo el capó, sigue gestionando reglas con la misma precisión, solo que de forma mucho más amigable.

Para cualquier servidor Linux —especialmente aquellos conectados a internet— UFW es una primera línea de defensa imprescindible. No sustituye a otras medidas de seguridad, pero sí las complementa desde el primer minuto.

¿Tu servidor todavía no tiene políticas de filtrado de red activas? Entonces UFW debería ser lo primero que configures tras el acceso inicial.


Instalación y habilitación de UFW

En la mayoría de las distribuciones basadas en Ubuntu o Debian, UFW ya está disponible en los repositorios oficiales, e incluso puede venir preinstalado. Si no es así, puedes instalarlo fácilmente desde la terminal:

sudo apt update && sudo apt install ufw

Una vez instalado, el servicio no se activa automáticamente. Antes de habilitarlo, asegúrate de configurar las reglas necesarias (como permitir el acceso SSH) para evitar bloquearte a ti mismo.

Habilitar UFW

Cuando estés listo para activar el cortafuegos, utiliza el siguiente comando:

sudo ufw enable

Esto aplicará inmediatamente las reglas activas y hará que UFW comience a filtrar el tráfico. A partir de este momento, solo se permitirán las conexiones explícitamente autorizadas.

Habilitar UFW al iniciar el sistema

Para asegurarte de que UFW se active automáticamente tras cada reinicio, puedes verificar y habilitar su servicio:

sudo systemctl enable ufw

Esto garantiza que las políticas de firewall se mantendrán protegidas en todo momento, incluso tras cortes de energía o reinicios programados.

Recuerda: habilita UFW solo después de permitir el acceso SSH, o podrías quedarte sin acceso remoto al servidor. Si usas otro puerto (por ejemplo, 2222), también deberás permitirlo manualmente con sudo ufw allow 2222/tcp.


Configuración de reglas básicas

Antes de activar UFW, es fundamental establecer las reglas que permitan el acceso legítimo a tu servidor. De lo contrario, podrías bloquear conexiones esenciales como SSH y quedarte sin acceso remoto.

Permitir conexiones SSH

Si tu servidor se administra por terminal remota, lo primero es permitir el tráfico SSH (por defecto, puerto 22):

sudo ufw allow ssh

Esto crea una regla que permite conexiones entrantes al puerto 22/TCP. Si tu servidor usa otro puerto personalizado, por ejemplo el 2222, ajusta así:

sudo ufw allow 2222/tcp

En caso de estar usando una interfaz gráfica o una consola directa, este paso no es obligatorio, pero sigue siendo recomendable.

Políticas por defecto

UFW utiliza tres políticas predeterminadas: para tráfico entrante, saliente y redireccionado. Lo más habitual es bloquear todo el tráfico entrante y permitir el saliente:

sudo ufw default deny incoming sudo ufw default allow outgoing

Esto asegura que ningún servicio expuesto sea accesible, salvo que tú lo permitas explícitamente. El tráfico saliente (como actualizaciones del sistema o llamadas DNS) sigue funcionando normalmente.

Activar UFW tras definir reglas esenciales

Una vez definidas las reglas mínimas (SSH, HTTP, etc.), puedes activar el cortafuegos:

sudo ufw enable

Confirma cuando se te pregunte, y verás el mensaje Firewall is active and enabled on system startup.

¿Ya configuraste los usuarios correctamente? Asegúrate con esta guía de usuarios y contraseñas seguras en Linux.


Comprobación de las reglas y estado de UFW

Una vez que UFW está activo, es importante verificar en todo momento qué reglas están aplicadas y cuál es el estado actual del cortafuegos. Esto permite detectar errores de configuración, reglas duplicadas o puertos abiertos innecesariamente.

Ver el estado del cortafuegos

Para comprobar si UFW está activo:

sudo ufw status

Por defecto, verás un resumen como este:

Status: active To Action From -- ------ ---- 22/tcp ALLOW Anywhere 80/tcp ALLOW Anywhere

Este listado indica qué puertos están abiertos (por ejemplo, 22/tcp para SSH y 80/tcp para HTTP) y desde qué origen se permite el tráfico (por defecto, Anywhere).

Mostrar información detallada

Para ver el estado en formato numérico, lo que puede ser útil para scripts o auditorías más precisas:

sudo ufw status numbered

Esto te mostrará una lista ordenada de reglas con número de línea, útil para modificar o eliminar reglas específicas más adelante.

Ver las políticas por defecto

Si necesitas verificar las políticas por defecto (incoming/outgoing), ejecuta:

sudo ufw show raw

También puedes usar:

sudo ufw show added

Esto mostrará únicamente las reglas añadidas manualmente a lo largo del tiempo, sin mostrar reglas internas o generadas por otras herramientas.

Si estás auditando tu sistema, puedes complementar esta revisión con herramientas como Auditd o explorar OpenSCAP para validación de políticas.


Añadir reglas para otros servicios

Una vez activado el cortafuegos, puedes personalizar el acceso a tu servidor añadiendo reglas para servicios específicos. UFW permite definir estas reglas de forma sencilla, tanto por nombre de servicio como por número de puerto.

Permitir tráfico HTTP y HTTPS

Para servidores web, es común abrir los puertos 80 (HTTP) y 443 (HTTPS):

sudo ufw allow http sudo ufw allow https

También puedes especificar los puertos manualmente si prefieres mayor control:

sudo ufw allow 80/tcp sudo ufw allow 443/tcp

Permitir servicios personalizados

Si ejecutas un servicio en un puerto específico (por ejemplo, una API en el 8080), puedes permitirlo de forma explícita:

sudo ufw allow 8080/tcp

También puedes restringir el acceso a un rango de direcciones IP (por ejemplo, solo desde una red de confianza):

sudo ufw allow from 192.168.1.0/24 to any port 8080 proto tcp

Limitar conexiones (rate limiting)

Para evitar ataques de fuerza bruta, puedes aplicar limitaciones a servicios sensibles como SSH:

sudo ufw limit ssh

Esta regla permite conexiones normales, pero bloquea temporalmente una IP que intente múltiples accesos fallidos en un corto período.

Si estás implementando reglas más complejas, consulta también nuestra guía de securización avanzada con herramientas Linux.


Bloqueo de tráfico no deseado

Además de permitir conexiones legítimas, UFW te permite bloquear direcciones IP, rangos o servicios potencialmente peligrosos. Esto es especialmente útil para evitar accesos sospechosos, ataques automatizados o tráfico malicioso.

Bloquear una IP específica

Si identificas una dirección IP que realiza intentos de acceso indebido, puedes bloquearla con:

sudo ufw deny from 203.0.113.45

Esto impedirá que esa IP establezca cualquier tipo de conexión con tu servidor.

Bloquear un rango de direcciones IP

Para bloquear una red completa (por ejemplo, una botnet o un país entero), usa la notación CIDR:

sudo ufw deny from 203.0.113.0/24

Esto bloqueará todas las direcciones IP del rango 203.0.113.0 a 203.0.113.255.

Bloquear acceso a un puerto específico desde una IP

También puedes denegar el acceso a un puerto determinado solo para una IP concreta:

sudo ufw deny from 198.51.100.23 to any port 22

Esto bloquea el intento de conexión SSH desde esa dirección, pero permite otras conexiones si están autorizadas.

Eliminar una regla de bloqueo

Para eliminar una regla previamente añadida, primero enumera las reglas activas con:

sudo ufw status numbered

Luego elimina la regla usando el número correspondiente:

sudo ufw delete [número]

¿Quieres automatizar tareas de seguridad y administración en Linux? Descubre nuestros artículos sobre automatización y scripts.


Modificar reglas de UFW

UFW no permite editar directamente una regla existente, pero puedes eliminarla y volver a crearla con los nuevos parámetros. Para hacerlo, primero enumera las reglas activas con numeración:

sudo ufw status numbered

Luego elimina la regla específica indicando su número:

sudo ufw delete [número]

Una vez eliminada, añade la nueva regla con los valores correctos. Por ejemplo:

sudo ufw allow from 10.0.0.5 to any port 22 proto tcp

Este método garantiza un control preciso sin generar reglas duplicadas o conflictivas.


Integración con Fail2ban

Fail2ban es una herramienta que analiza los logs del sistema en busca de intentos fallidos de autenticación o accesos sospechosos, y aplica bloqueos temporales o permanentes. Puede trabajar en conjunto con UFW para automatizar estas medidas defensivas.

Para integrarlo, asegúrate de tener instalado Fail2ban:

sudo apt install fail2ban

Fail2ban utilizará por defecto `iptables`, pero puedes configurarlo para trabajar con UFW editando el archivo:

/etc/fail2ban/jail.local

Añade o modifica la sección correspondiente así:

[DEFAULT]
banaction = ufw

De esta manera, cada vez que Fail2ban detecte un intento de intrusión, aplicará la regla directamente con UFW, reforzando automáticamente tu cortafuegos.

Más detalles en nuestra guía completa: Fail2ban en Linux: Protección automática contra intrusos.


Buenas prácticas de hardening del firewall

Además de aplicar reglas básicas y bloquear tráfico sospechoso, puedes reforzar aún más UFW con algunas medidas adicionales:

  • Registrar todo el tráfico bloqueado: habilita los logs para detectar intentos fallidos.
  • Evitar respuestas ICMP innecesarias: como pings (opcional, para servidores sensibles).
  • Bloquear tráfico saliente no deseado: útil en entornos restringidos o de alta seguridad.
  • Documentar cada regla aplicada: añade comentarios en tu archivo de configuración o en un registro interno.
  • Auditar con herramientas complementarias: como Auditd o OpenSCAP, para evaluar la efectividad del firewall.

Recuerda que un cortafuegos mal documentado es difícil de mantener. Aplica solo las reglas necesarias, mantén la configuración bajo control y revísala de forma periódica.

Si quieres profundizar en técnicas avanzadas, visita nuestra guía de securización avanzada en Linux.


Errores comunes al configurar UFW

UFW es una herramienta muy eficaz, pero una configuración incorrecta puede dejar tu sistema inaccesible o mal protegido. Estos son los errores más habituales y cómo evitarlos:

  • No permitir el acceso SSH antes de activar UFW
    Uno de los fallos más críticos es no ejecutar sudo ufw allow ssh antes de activar el cortafuegos. Si lo olvidas, puedes quedarte fuera de tu servidor si estás trabajando en remoto.
  • Olvidar puertos esenciales para el servicio
    Muchos administradores activan UFW sin abrir antes puertos como 80 (HTTP), 443 (HTTPS) o 3306 (MySQL), lo que provoca interrupciones en aplicaciones web o bases de datos.
  • Duplicar reglas innecesariamente
    Permitir varias veces el mismo puerto o IP crea confusión y desorden. Puedes revisar tu configuración con sudo ufw status numbered y eliminar lo que sobre.
  • No guardar documentación de los cambios
    Si no anotas qué reglas has aplicado y por qué, será difícil mantener el control en el futuro o al trabajar en equipo.
  • No revisar el tráfico saliente
    Por defecto, UFW permite todo el tráfico saliente. Si tu caso requiere controlar también qué sale del servidor (por ejemplo, en entornos restringidos), deberás ajustar las políticas por defecto:
sudo ufw default deny outgoing

Después, tendrás que permitir explícitamente el tráfico necesario (por ejemplo, DNS, NTP o actualizaciones del sistema).

  • Desactivar UFW sin revisar las implicaciones
    Al ejecutar sudo ufw disable se elimina toda la protección activa. Si lo haces por error, tu sistema queda completamente expuesto hasta que vuelvas a habilitar reglas.

¿Cometiste alguno de estos errores? Puedes consultar nuestra guía de configuración inicial para asegurarte de que tu sistema está bien protegido desde la base.


Resumen

UFW (Uncomplicated Firewall) es una herramienta esencial para proteger tu servidor Linux frente a conexiones no autorizadas. Su facilidad de uso permite configurar reglas claras y eficaces sin necesidad de dominar iptables.

Al habilitar UFW y permitir únicamente los puertos necesarios —como 22 para SSH o 80/443 para servidores web—, estás creando una primera barrera contra accesos maliciosos. Además, puedes bloquear direcciones IP sospechosas, auditar el estado del firewall y aplicar políticas por defecto que refuercen tu postura de seguridad.

Pero recuerda: UFW no es una solución única. Es una capa más dentro de una estrategia de securización completa. Lo ideal es combinarlo con:

  • Claves SSH en lugar de contraseñas para el acceso remoto
  • Autenticación en dos factores (2FA) para proteger servicios críticos
  • Fail2ban para detectar y bloquear intentos de intrusión por fuerza bruta
  • Auditd o OpenSCAP para auditoría y cumplimiento de normativas
  • Revisión periódica de usuarios y permisos para evitar cuentas inactivas o mal configuradas

El objetivo no es solo tener UFW activado, sino mantener un entorno coherente, bien documentado y auditado. Así lograrás reducir tu superficie de ataque y estar preparado frente a amenazas reales.

¿Quieres monitorizar eventos de seguridad en tiempo real? Descubre cómo hacerlo con Auditd en Ubuntu.

DEJA UNA RESPUESTA

Por favor ingrese su comentario!
Por favor ingrese su nombre aquí