← Volver al listado de tecnologías

Capítulo 5: Firewall con UFW

Por: SiempreListo
linuxseguridadfirewallufwiptables

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