Configurar el firewall UFW: guía completa
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.
A 0 de 0 personas les ha resultado útil