Configurar el firewall UFW: guía completa

Un firewall es la primera línea de defensa de tu servidor. UFW (Uncomplicated Firewall) simplifica la configuración de iptables, incluso para principiantes. En Theory7 recomendamos UFW para todos los servidores VPS por su sintaxis fácil de usar y su fiabilidad. En esta guía aprenderás todo sobre la configuración de UFW.

¿Qué hace un firewall?

Un firewall controla todo el tráfico de red que entra y sale de tu servidor. Puedes configurar reglas para:

  • Abrir puertos específicos para determinados servicios
  • Bloquear el tráfico no deseado
  • Permitir solo determinadas direcciones IP
  • Aplicar limitación de velocidad (rate limiting)

Sin firewall, cualquiera puede intentar conectarse a cualquier servicio de tu servidor.

Instalar UFW

En la mayoría de los sistemas Debian y Ubuntu, UFW ya está instalado. Si no lo está:

sudo apt update
sudo apt install ufw

Comprueba si UFW está instalado:

sudo ufw version

Configuración básica

Establecer las políticas por defecto

Empieza por establecer las políticas por defecto. Determinan qué ocurre con el tráfico que no se ha permitido ni bloqueado de forma explícita:

# Bloquea todo el tráfico entrante
sudo ufw default deny incoming

# Permite todo el tráfico saliente
sudo ufw default allow outgoing

Esta es la base más segura: no entra nada a menos que lo permitas de forma explícita.

Abrir los puertos esenciales

Abre los puertos que necesitas antes de activar UFW:

# Acceso SSH (crítico - ¡no lo olvides!)
sudo ufw allow ssh

# O con un puerto específico
sudo ufw allow 22/tcp

# Tráfico web
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Activar UFW

Después de configurar las reglas básicas:

sudo ufw enable

Recibirás una advertencia de que las conexiones SSH existentes pueden interrumpirse. Si has permitido SSH, esto no supone ningún problema.

Comandos avanzados de UFW

Abrir y cerrar puertos

# Abrir un puerto específico
sudo ufw allow 8080/tcp

# Abrir un rango de puertos
sudo ufw allow 6000:6007/tcp

# Abrir un puerto UDP
sudo ufw allow 53/udp

# Cerrar un puerto
sudo ufw deny 3306/tcp

Usar nombres de servicio

UFW reconoce los servicios más habituales:

sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw allow ftp

Consulta los servicios disponibles:

less /etc/services

Reglas por dirección IP

Permite solo direcciones IP específicas:

# Permitir una IP específica
sudo ufw allow from 192.168.1.100

# Permitir una IP en un puerto específico
sudo ufw allow from 192.168.1.100 to any port 22

# Permitir un rango de IP
sudo ufw allow from 192.168.1.0/24

# Bloquear una IP específica
sudo ufw deny from 203.0.113.100

Limitación de velocidad

Protege el servidor contra ataques de fuerza bruta:

sudo ufw limit ssh

Esto limita el número de conexiones por unidad de tiempo.

Estado y gestión de UFW

Ver el estado

# Estado básico
sudo ufw status

# Estado detallado con números de regla
sudo ufw status numbered

# Salida detallada
sudo ufw status verbose

Eliminar reglas

# Por número de regla
sudo ufw status numbered
sudo ufw delete 3

# Por especificación de la regla
sudo ufw delete allow 80/tcp

Desactivar UFW

# Desactivar temporalmente
sudo ufw disable

# Restablecer los valores por defecto (elimina todas las reglas)
sudo ufw reset

Perfiles de aplicación

UFW admite perfiles de aplicación para configuraciones más complejas:

# Ver los perfiles disponibles
sudo ufw app list

# Información del perfil
sudo ufw app info "OpenSSH"

# Permitir un perfil
sudo ufw allow "OpenSSH"

Registro de UFW

Activa el registro para supervisar el tráfico sospechoso:

# Establecer el nivel de registro
sudo ufw logging on
sudo ufw logging medium

Niveles de registro: off, low, medium, high, full

Consulta los registros:

sudo tail -f /var/log/ufw.log

Ejemplo de configuración para un servidor web

Una configuración completa para un servidor web típico:

# Restablecer las reglas existentes, si las hay
sudo ufw reset

# Políticas por defecto
sudo ufw default deny incoming
sudo ufw default allow outgoing

# SSH (con un puerto personalizado)
sudo ufw limit 2222/tcp

# Tráfico web
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# DirectAdmin
sudo ufw allow 2222/tcp

# Correo (opcional)
sudo ufw allow 25/tcp
sudo ufw allow 587/tcp
sudo ufw allow 993/tcp

# Activar
sudo ufw enable

Solución de problemas

Te has quedado sin acceso por SSH

Si te quedas sin acceso, usa el acceso por consola de tu proveedor de hosting para desactivar UFW.

Una regla no funciona

Comprueba el orden de las reglas. UFW procesa las reglas de arriba abajo.

Un servicio es accesible a pesar de la regla deny

Comprueba que no haya una regla allow por encima de la regla deny.