Arostik Logo
ArostikVLARCK

Micro-Technology Solutions

Servidores y DevOpsNivel: Principiante14 min de lección

Firewalls en Linux: Configuración Profesional con UFW e iptables

Aprende a proteger tu servidor VPS bloqueando puertos, permitiendo SSH seguro y configurando políticas por defecto de denegación.

Firewalls en Linux: Configuración Profesional con UFW e iptables
AROS STUDENT
E
Equipo de Seguridad en Servidores ArostikEspecialistas en Hardening y Firewalls Linux · Actualizado el 25 sep 2026
¿Qué es un Firewall en Linux y por qué es Imprescindible?

Cuando contratas un servidor VPS en la nube y le asignas una dirección IP pública, queda expuesto al instante a todo el Internet mundial. En menos de 10 minutos, escáneres automáticos de hackers y botnets de todo el planeta comenzarán a golpear cada uno de los 65,535 puertos de tu máquina buscando bases de datos abiertas sin contraseña (puertos 3306 de MySQL, 5432 de PostgreSQL o 6379 de Redis) o vulnerabilidades en servicios en segundo plano. Un **Firewall (Cortafuegos)** es una barrera de seguridad que inspecciona cada paquete de datos entrante y saliente a nivel de red y decide si permitirlo o destruirlo según un conjunto de reglas estrictas. En el ecosistema Linux existen dos capas fundamentales: 1. **iptables / nftables**: El subsistema de bajo nivel extremadamente potente y complejo integrado en el kernel de Linux (Netfilter). 2. **UFW (Uncomplicated Firewall)**: Una interfaz amigable y elegante diseñada para Ubuntu y Debian que simplifica la administración de iptables con comandos intuitivos en inglés.

¿Cuál es la Filosofía Defensiva Universal de un Firewall?
Ventajas y Beneficios:
  • ✓Principio de Mínimo Privilegio: Cierra absolutamente todos los puertos del servidor por defecto (**Default Deny**) y abre exclusivamente los que tu servicio web necesita (80 y 443).
  • ✓Aislamiento de Bases de Datos: Las bases de datos nunca deben escuchar en la IP pública; si necesitas acceder desde otra oficina, el firewall solo permite la conexión desde tu IP estática específica.
  • ✓Prevención de Escaneos de Red: Descarta paquetes en silencio (`DROP`) para que los escáneres de puertos crean que la máquina ni siquiera existe o está apagada.
Problemas que resuelve:
  • •Evita que ciberdelincuentes secuestren bases de datos Redis o MongoDB expuestas a Internet por descuidos de desarrolladores.
  • •Bloquea intentos de acceso a interfaces de administración interna.
  • •Mitiga ataques de fuerza bruta al puerto SSH limitando la tasa de conexiones (Rate Limiting).
La Fortaleza Medieval con Foso y Guardia en el Puente Levadizo

Imagina un castillo medieval rodeado por un foso de agua profunda. Si el castillo tuviera 65,000 puertas traseras abiertas sin vigilancia, cualquier ladrón entraría a robar las joyas de la corona. El Rey sabio instala un puente levadizo con un guardia de hierro en la puerta principal (el **Firewall**). La ordenanza suprema del guardia es: *'Nadie entra al castillo a menos que tenga una invitación formal firmada por el Rey'* (Default Deny Incoming). Si llega un campesino con harina para los panaderos (un usuario pidiendo una página web por el puerto 80), el guardia lo revisa y lo deja pasar. Si llega un soldado desconocido intentando entrar por una ventana del piso superior (un escaneo al puerto 5432 de la base de datos), el guardia le dispara una flecha y lo arroja al foso en silencio.

Conexión con la Tecnología:La política por defecto es `ufw default deny incoming`. A partir de esa barrera impenetrable, abres excepciones quirúrgicas para cada servicio legítimo.

Explicación Paso a Paso del Tema

1

¡Paso Cero de Supervivencia!: Permitir SSH Antes de Activar el Firewall

Si activas el firewall antes de permitir el puerto de SSH (puerto 22), perderás el acceso a tu servidor VPS de forma instantánea y quedarás bloqueado afuera.

Permite siempre el servicio SSH en primer lugar con `ufw allow ssh`.

Comando de Terminal / Código
# 1. Permitir conexión SSH obligatoria:
sudo ufw allow ssh

# 2. Configurar políticas predeterminadas de máxima seguridad:
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 3. Activar el firewall con confirmación:
sudo ufw enable
Desglose de Parámetros:
Parámetro / FlagTipo / RolSignificado y Uso
allow sshReglaPermite tráfico entrante en el puerto TCP 22 (o el puerto SSH configurado).
default deny incomingPolítica GlobalBloquea todas las conexiones entrantes que no tengan una regla explícita de permiso.
Consejo Profesional:

Si cambiaste el puerto de SSH por defecto (ej. al puerto 2222 por seguridad), ejecuta `sudo ufw allow 2222/tcp` antes de activar UFW.

2

Abrir Puertos Web y Restringir Accesos por Dirección IP

Para servir páginas web debes abrir los puertos estándar 80 (HTTP) y 443 (HTTPS).

Si tienes un servicio administrativo interno (como la base de datos PostgreSQL), permite la entrada **únicamente desde la dirección IP de tu oficina o casa**.

Comando de Terminal / Código
# Abrir tráfico web público:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Permitir acceso a PostgreSQL (5432) SÓLO desde tu IP fija de oficina:
sudo ufw allow from 203.0.113.50 to any port 5432 proto tcp

# Comprobar el estado y las reglas numeradas:
sudo ufw status numbered
Desglose de Parámetros:
Parámetro / FlagTipo / RolSignificado y Uso
allow from <IP> to any port 5432Regla RestrictivaSolo autoriza la conexión si los paquetes provienen de esa IP pública exacta.
Error Común a Evitar:

Escribir `ufw allow 5432`: expondrá tu base de datos a los 4 mil millones de usuarios de Internet.

3

Reglas de iptables de Bajo Nivel: Inspección con Estado

UFW genera reglas de iptables por debajo. Para entender cómo funciona el filtrado con estado (Stateful Inspection), analiza la tabla filter de iptables.

La regla fundamental permite el tráfico de paquetes que pertenecen a conexiones que ya fueron establecidas previamente.

Comando de Terminal / Código
sudo iptables -L -n -v
Desglose de Parámetros:
Parámetro / FlagTipo / RolSignificado y Uso
-LComandoLista todas las cadenas de reglas (INPUT, FORWARD, OUTPUT).
-nFlagMuestra direcciones IP y puertos numéricos sin traducir a nombres DNS.
-vFlagVerbose: Muestra contadores de paquetes y bytes procesados por cada regla.
Consejo Profesional:

Activa el limitador de tasa de UFW para SSH con `sudo ufw limit ssh`: si una IP intenta más de 6 conexiones en 30 segundos, será bloqueada automáticamente.

Casos Prácticos Reales en Producción

Situaciones de ingeniería reales sin mención de presupuestos ficticios.

1El Ataque de Ransomware a un Servidor Redis Expuesto

Escenario Real:

Un desarrollador instaló Redis en un VPS nuevo para acelerar su app. Por defecto, Redis no tenía contraseña. En menos de 2 horas, un bot de Internet encontró el puerto 6379 abierto, borró las claves y dejó una nota de rescate en criptomonedas.

Solución de Ingeniería Aplicada:

Configuraron UFW con `default deny incoming` y abrieron únicamente los puertos 80 y 443. Redis fue configurado para escuchar exclusivamente en la interfaz de loopback local (`bind 127.0.0.1`).

Fichas Nemotécnicas de Conceptos Clave

Glosario rápido para recordar los términos fundamentales de la lección.

UFW (Uncomplicated Firewall)

Frontend intuitivo de línea de comandos para administrar las reglas del cortafuegos de Linux.

Default Deny

Principio de seguridad donde todo el tráfico entrante es rechazado por defecto a menos que se autorice explícitamente.

Stateful Firewall

Cortafuegos con estado que recuerda las conexiones activas y permite automáticamente los paquetes de respuesta legítimos.

Autoevaluación Rápida3 preguntas

Firewalls en Linux: Configuración Profesional con UFW e iptables

Selecciona una opción para autoevaluarte al instante. La respuesta se califica de inmediato.

Aciertos: 0 / 3
1

¿Qué error catastrófico puede cometer un administrador al configurar UFW por primera vez en un servidor remoto en la nube?

2

¿Qué significa la política 'Default Deny Incoming' en un firewall?

3

¿Cómo debes configurar el firewall para proteger una base de datos PostgreSQL en un servidor de producción?

Preguntas Frecuentes (FAQ)

¿Cuál es la diferencia entre la acción REJECT y la acción DROP en un firewall?

Con **REJECT**, el firewall rechaza el paquete pero le devuelve un mensaje formal al emisor ('Puerto inalcanzable'), avisándole al atacante que la máquina está encendida. Con **DROP**, el firewall destruye el paquete en silencio sin responder absolutamente nada, obligando al atacante a esperar un timeout y haciéndole dudar si la máquina existe.

¿Cómo se elimina una regla de UFW si ya no la necesito?

Ejecuta primero `sudo ufw status numbered` para ver el número asignado a cada regla (ej. `[ 3 ] 8080/tcp ALLOW`), y luego bórrala indicando su número: `sudo ufw delete 3`.

Temas relacionados:#Linux#Seguridad#Firewall#UFW#iptables#DevOps