Ghost AcademySecLearn// Seguridad Informática
🔥 Linux · Firewall · Seguridad de Red
UFW — Uncomplicated
Firewall

Interfaz simplificada para iptables/nftables, el motor subyacente del firewall de Linux. Guía completa paso a paso para configurar UFW en Ubuntu 24.04.

ufw enable ufw allow ufw deny ufw status default deny SSH · HTTP · HTTPS iptables

¿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.

Internet
🌐 Tráfico
→ entrante
Firewall
UFW
→ puertos permitidos
Servidor
🖥️ Servicios
→ saliente (libre)
Internet
🌐 Respuesta
ℹ️ UFW vs iptables: 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.

VERIFICAR estado actual
bash
sudo ufw status
Respuestas posibles
Status: inactive   ← Instalado pero desactivado (necesita activarse)
Status: active     ← Ya activo con reglas
INSTALAR si no está disponible
bash
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.

🚫 Entrante (Input)
default deny incoming

Todo el tráfico que llega al servidor queda bloqueado por defecto. Cualquier servicio que quieras exponer debe permitirse explícitamente.

✅ Saliente (Output)
default allow outgoing

El servidor puede conectarse libremente a internet y servicios externos sin restricciones.

bash
# 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
💡 Principio de menor privilegio: Bloquear todo por defecto y abrir solo lo necesario es la estrategia más segura. Es mucho más fácil controlar lo que se permite que lo que se bloquea.

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.

⚠️ Crítico: Si activas UFW antes de permitir SSH y estás conectado de forma remota, perderás el acceso inmediatamente. Siempre permite SSH primero.
bash — Método 1: por nombre de servicio (recomendado)
sudo ufw allow ssh
bash — Método 2: por puerto y protocolo
sudo ufw allow 22/tcp
ℹ️ Equivalencia: 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.

ACTIVAR UFW
bash
sudo ufw enable
# Te preguntará si deseas continuar. Escribe: y
Salida esperada
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
VERIFICAR estado detallado
bash
sudo ufw status verbose
Salida esperada
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)
VERIFICAR estado numerado (útil para eliminar reglas)
bash
sudo ufw status numbered
Salida esperada
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.

ServicioPuertoComando
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
bash — Abrir HTTP y HTTPS
sudo ufw allow http
sudo ufw allow https
bash — Puertos personalizados
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.

Permitir desde IP específica
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.

Permitir rango de puertos
sudo ufw allow 10000:20000/tcp

Abre todos los puertos entre 10000 y 20000. Útil para servicios que usan puertos dinámicos.

Denegar un puerto específico
sudo ufw deny 8080/tcp

Bloquea explícitamente el puerto 8080, incluso si hay una regla more general que lo permitiría.

Permitir desde subred
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)

  1. Obtén la lista numerada de reglas activas.
  2. Identifica el número de la regla que quieres eliminar.
  3. Elimínala por su número.
bash
# 1. Ver reglas numeradas
sudo ufw status numbered

# 2. Eliminar la regla número 3
sudo ufw delete 3
Confirmación de eliminación
Deleting:
 allow 80/tcp
Proceed with operation (y|n)? y
Rule deleted

Método 2 — Por regla literal

bash
sudo ufw delete allow 80/tcp
💡 ¿Por qué usar el número? Si tienes reglas para IPv4 e IPv6, eliminar por número borra exactamente esa regla. Eliminar por literal puede afectar a varias reglas a la vez (la IPv4 y la IPv6). El método numerado es más preciso.

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ónComandoEfecto
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.
bash
# Deshabilitar temporalmente (mantiene las reglas)
sudo ufw disable

# Restablecer completamente (borra TODAS las reglas)
sudo ufw reset
⚠️ sudo ufw reset es irreversible. Eliminará todas tus reglas personalizadas y desactivará el firewall. Úsalo solo cuando quieras empezar desde cero. Si solo necesitas pausar el firewall temporalmente, usa 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:

🛡️ Configuración mínima — Copia y pega en orden
1 — Políticas por defecto
bash
sudo ufw default deny incoming
sudo ufw default allow outgoing
2 — Abrir SSH (imprescindible)
bash
sudo ufw allow ssh
3 — Activar el firewall
bash
sudo ufw enable
4 — Verificar que todo está correcto
bash
sudo ufw status verbose

Referencia rápida de comandos

ComandoDescripción
sudo ufw statusVer si UFW está activo o inactivo
sudo ufw status verboseEstado detallado con políticas y reglas activas
sudo ufw status numberedEstado con reglas numeradas (para eliminar)
sudo ufw enableActivar el firewall (persiste tras reinicios)
sudo ufw disableDesactivar temporalmente (mantiene reglas)
sudo ufw allow sshPermitir SSH (puerto 22/tcp)
sudo ufw allow 80/tcpPermitir HTTP
sudo ufw allow from IP port NPermitir acceso desde IP específica a puerto N
sudo ufw deny 8080/tcpBloquear un puerto específico
sudo ufw delete NEliminar la regla número N
sudo ufw resetBorrar todas las reglas y desactivar UFW
sudo ufw reloadRecargar reglas sin deshabilitar