← Volver al listado de tecnologías
Capítulo 5: Firewall con UFW
Capítulo 5: Firewall con UFW
¿Por qué un Firewall?
Un firewall filtra el tráfico de red, bloqueando conexiones no autorizadas. UFW (Uncomplicated Firewall) es una interfaz simplificada sobre iptables.
Instalación
sudo apt update
sudo apt install ufw
Configuración Inicial
Políticas por Defecto
# Denegar todo el tráfico entrante
sudo ufw default deny incoming
# Permitir todo el tráfico saliente
sudo ufw default allow outgoing
Permitir SSH (Crítico)
⚠️ ANTES de habilitar UFW, permite SSH:
sudo ufw allow ssh
O si usas un puerto diferente:
sudo ufw allow 2222/tcp
Habilitar UFW
sudo ufw enable
Reglas Comunes
Servicios Web
# HTTP
sudo ufw allow 80/tcp
# HTTPS
sudo ufw allow 443/tcp
# Ambos
sudo ufw allow 'Nginx Full'
# o
sudo ufw allow 'Apache Full'
Bases de Datos (Solo Localhost)
Por defecto, no expongas bases de datos. Si es necesario desde IP específica:
sudo ufw allow from 192.168.1.100 to any port 5432
Limitar Conexiones (Rate Limiting)
Protección básica contra fuerza bruta:
sudo ufw limit ssh
Esto limita a 6 conexiones en 30 segundos por IP.
Reglas Avanzadas
Permitir desde Subred
sudo ufw allow from 192.168.1.0/24
Permitir IP Específica a Puerto Específico
sudo ufw allow from 203.0.113.5 to any port 22
Denegar IP Específica
sudo ufw deny from 203.0.113.100
Reglas por Interfaz
sudo ufw allow in on eth0 to any port 80
Gestión de Reglas
Ver Estado y Reglas
sudo ufw status verbose
Salida numerada (útil para eliminar):
sudo ufw status numbered
Eliminar Reglas
Por número:
sudo ufw delete 3
Por especificación:
sudo ufw delete allow 80/tcp
Resetear UFW
sudo ufw reset
Logging
Habilitar Logs
sudo ufw logging on
Niveles: off, low, medium, high, full
sudo ufw logging medium
Ver Logs
sudo tail -f /var/log/ufw.log
Configuración para Aplicaciones
UFW incluye perfiles de aplicaciones:
# Listar perfiles disponibles
sudo ufw app list
# Ver detalles de un perfil
sudo ufw app info 'Nginx Full'
Ejemplos de Configuración Completa
Servidor Web Básico
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 'Nginx Full'
sudo ufw enable
Servidor con API y SSH Restringido
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow from 192.168.1.0/24 to any port 22
sudo ufw allow 443/tcp
sudo ufw limit ssh
sudo ufw enable
Verificación
# Estado completo
sudo ufw status verbose
# Verificar que SSH funciona
# (desde otra terminal antes de cerrar la actual)
ssh usuario@servidor
# Ver reglas iptables subyacentes
sudo iptables -L -n -v
Troubleshooting
No puedo conectar después de habilitar UFW
Si tienes acceso por consola:
sudo ufw disable
sudo ufw allow ssh
sudo ufw enable
Regla no funciona
Verifica el orden de las reglas. UFW aplica la primera coincidencia:
sudo ufw status numbered
Las reglas con número menor tienen prioridad.
Logs no aparecen
Verifica que el logging esté habilitado:
sudo ufw status verbose | grep Logging