¿Qué es UFW?
UFW (Uncomplicated Firewall) es una interfaz simplificada para iptables/nftables, el motor subyacente del firewall de Linux. UFW es mucho más fácil de entender y usar que manipular iptables directamente, sin sacrificar flexibilidad.
iptables ofrece control total pero requiere conocer su sintaxis compleja. UFW simplifica las operaciones más comunes (permitir/denegar puertos, IPs, rangos) con comandos legibles. Internamente, UFW genera las reglas iptables correspondientes.Paso 1 — Verificar e Instalar UFW
UFW suele venir preinstalado en Ubuntu, pero conviene verificar su estado antes de empezar.
sudo ufw status
Status: inactive ← Instalado pero desactivado (necesita activarse) Status: active ← Ya activo con reglas
sudo apt install ufw -y
Paso 2 — Políticas por Defecto
Lo primero es establecer cómo debe comportarse el firewall cuando no hay una regla específica que coincida con el tráfico. La práctica de seguridad más recomendada es denegar todo lo entrante y permitir todo lo saliente.
Todo el tráfico que llega al servidor queda bloqueado por defecto. Cualquier servicio que quieras exponer debe permitirse explícitamente.
El servidor puede conectarse libremente a internet y servicios externos sin restricciones.
# Denegar todo el tráfico entrante por defecto sudo ufw default deny incoming # Permitir todo el tráfico saliente por defecto sudo ufw default allow outgoing
Paso 3 — Permitir SSH (Imprescindible)
Con todo el tráfico entrante bloqueado, debes permitir SSH antes de activar UFW, o quedarás sin acceso remoto al servidor.
sudo ufw allow ssh
sudo ufw allow 22/tcp
ufw allow ssh y ufw allow 22/tcp son equivalentes. UFW reconoce los nombres de servicio definidos en /etc/services y los traduce a su puerto correspondiente.Paso 4 — Habilitar y Verificar el Firewall
Con SSH ya permitido, puedes activar UFW de forma segura.
sudo ufw enable
# Te preguntará si deseas continuar. Escribe: y
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
sudo ufw status verbose
Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere 22/tcp (v6) ALLOW IN Anywhere (v6)
sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 22/tcp (v6) ALLOW IN Anywhere (v6)
Paso 5 — Servicios Comunes
Añade reglas para cualquier servicio que quieras exponer públicamente.
| Servicio | Puerto | Comando |
|---|---|---|
| HTTP (web) | 80/tcp | sudo ufw allow http |
| HTTPS (web segura) | 443/tcp | sudo ufw allow https |
| SSH | 22/tcp | sudo ufw allow ssh |
| Glances (monitoreo) | 61208/tcp | sudo ufw allow 61208/tcp |
| Nagios NRPE (agentes) | 5666/tcp | sudo ufw allow 5666/tcp |
sudo ufw allow http sudo ufw allow https
sudo ufw allow 61208/tcp # Glances sudo ufw allow 5666/tcp # Nagios NRPE
Reglas Avanzadas
UFW permite reglas más específicas para controlar el acceso por IP de origen, rangos de puertos o protocolos concretos.
sudo ufw allow from 192.168.1.100 to any port 80
Solo la IP 192.168.1.100 puede acceder al puerto 80. Útil para restringir acceso a paneles de administración.
sudo ufw allow 10000:20000/tcp
Abre todos los puertos entre 10000 y 20000. Útil para servicios que usan puertos dinámicos.
sudo ufw deny 8080/tcp
Bloquea explícitamente el puerto 8080, incluso si hay una regla more general que lo permitiría.
sudo ufw allow from 192.168.1.0/24 to any port 22
Permite SSH solo desde la red local 192.168.1.x. Muy recomendado para SSH en servidores internos.
Paso 6 — Eliminar Reglas
Hay dos formas de eliminar reglas de UFW. El método por número es el más seguro y recomendado.
Método 1 — Por número (recomendado)
- Obtén la lista numerada de reglas activas.
- Identifica el número de la regla que quieres eliminar.
- Elimínala por su número.
# 1. Ver reglas numeradas sudo ufw status numbered # 2. Eliminar la regla número 3 sudo ufw delete 3
Deleting: allow 80/tcp Proceed with operation (y|n)? y Rule deleted
Método 2 — Por regla literal
sudo ufw delete allow 80/tcp
Paso 7 — Deshabilitar o Restablecer UFW
Para mantenimiento o en caso de problemas, puedes desactivar temporalmente el firewall o restablecer toda su configuración.
| Acción | Comando | Efecto |
|---|---|---|
| Deshabilitar (temporal) | sudo ufw disable | Desactiva el firewall pero mantiene todas las reglas guardadas. Se puede reactivar con ufw enable. |
| Restablecer (completo) | sudo ufw reset | Borra todas las reglas y devuelve UFW al estado original (deshabilitado, sin reglas). Irreversible. |
| Recargar reglas | sudo ufw reload | Recarga las reglas activas sin deshabilitar el firewall. Útil tras editar archivos de configuración. |
# Deshabilitar temporalmente (mantiene las reglas) sudo ufw disable # Restablecer completamente (borra TODAS las reglas) sudo ufw reset
sudo ufw disable.Configuración Mínima de Seguridad
Para un servidor básico, estos son los comandos esenciales de seguridad en el orden correcto:
sudo ufw default deny incoming sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw enable
sudo ufw status verbose
Referencia rápida de comandos
| Comando | Descripción |
|---|---|
| sudo ufw status | Ver si UFW está activo o inactivo |
| sudo ufw status verbose | Estado detallado con políticas y reglas activas |
| sudo ufw status numbered | Estado con reglas numeradas (para eliminar) |
| sudo ufw enable | Activar el firewall (persiste tras reinicios) |
| sudo ufw disable | Desactivar temporalmente (mantiene reglas) |
| sudo ufw allow ssh | Permitir SSH (puerto 22/tcp) |
| sudo ufw allow 80/tcp | Permitir HTTP |
| sudo ufw allow from IP port N | Permitir acceso desde IP específica a puerto N |
| sudo ufw deny 8080/tcp | Bloquear un puerto específico |
| sudo ufw delete N | Eliminar la regla número N |
| sudo ufw reset | Borrar todas las reglas y desactivar UFW |
| sudo ufw reload | Recargar reglas sin deshabilitar |