🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo configurar un firewall en Linux con UFW o iptables

Actualizado el 7 de mayo de 2026

¿Qué es un firewall y por qué tu servidor lo necesita?

Si tienes un servidor Linux, ya sea en casa o en la nube, estás expuesto a internet. Cada puerto abierto es una puerta de entrada potencial para alguien con malas intenciones.

Un firewall linux actúa como un portero digital: decide qué tráfico entra, qué tráfico sale y qué se bloquea. Sin él, tu servidor acepta conexiones a todos los servicios que estén corriendo, lo cual es un riesgo grave de seguridad servidor.

Imagina que tu servidor es un edificio de oficinas. El firewall es la recepción: sin recepcionista, cualquiera puede entrar a cualquier oficina. Con un buen firewall, solo las personas con cita (puertos autorizados) pueden pasar.

En este artículo aprenderás a configurar un firewall con dos herramientas populares: UFW (Uncomplicated Firewall) para principiantes e iptables para control fino. Vamos paso a paso, sin tecnicismos innecesarios.

¿UFW o iptables? ¿Cuál elegir?

Antes de empezar, hablemos de las diferencias clave.

CaracterísticaUFWiptables
DificultadMuy fácil, pensado para novatosComplejo, requiere conocimientos de red
SintaxisComandos cortos y legiblesReglas largas y técnicas
RendimientoEs un front-end de iptablesMáximo control y eficiencia
Uso idealServidores con configuraciones estándarRedes complejas, reglas avanzadas
PersistenciaSe guarda fácilmenteRequiere guardar reglas manualmente

Mi recomendación: Si estás empezando o administras un servidor con servicios típicos (web, SSH, correo), usa UFW. Es más que suficiente y mucho más seguro de configurar sin romper nada. Si necesitas reglas complejas, entonces ve por iptables.


Configurar UFW: El firewall amigable

UFW viene preinstalado en Ubuntu y Debian. Si no lo tienes, instálalo así:

sudo apt update
sudo apt install ufw

Paso 1: Define tu política por defecto

La filosofía de un buen firewall es: denegar todo lo que no esté explícitamente permitido. Configuramos eso primero:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Esto bloquea todas las conexiones entrantes y permite las salientes. Tu servidor puede navegar y actualizarse, pero nadie puede entrar sin permiso.

Paso 2: Permite los servicios esenciales

Ahora abrimos los puertos que sí necesitamos. Lo más común:

# SSH (puerto 22) - ¡IMPORTANTE! Hazlo antes de activar el firewall
sudo ufw allow ssh

# HTTP y HTTPS para tu web
sudo ufw allow http
sudo ufw allow https

# Puertos específicos si usas otros servicios
sudo ufw allow 8080/tcp

[WARNING]: Si configuras UFW por SSH, permite el puerto 22 ANTES de activar el firewall. De lo contrario, te quedarás fuera de tu propio servidor.

Paso 3: Activa el firewall

Ya tienes las reglas básicas. Activa UFW:

sudo ufw enable

Verás una advertencia, pero es normal. Confirma y listo.

Paso 4: Verifica el estado

Comprueba que todo está correcto:

sudo ufw status verbose

Deberías ver algo así:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere
80/tcp                     ALLOW IN    Anywhere
443/tcp                    ALLOW IN    Anywhere

Comandos UFW útiles para el día a día

Aquí tienes una lista rápida para gestionar tu firewall linux:

  • Abrir puertos linux: sudo ufw allow 3306/tcp
  • Cerrar un puerto: sudo ufw deny 3306/tcp
  • Permitir una IP concreta: sudo ufw allow from 192.168.1.100
  • Permitir una IP en un puerto específico: sudo ufw allow from 192.168.1.100 to any port 22
  • Eliminar una regla: sudo ufw delete allow 8080
  • Recargar cambios: sudo ufw reload
  • Desactivar temporalmente: sudo ufw disable

[TIP]: Si tienes un panel de control como Syspanel (accesible en el puerto 2106), asegúrate de abrir ese puerto también:

sudo ufw allow 2106/tcp

iptables: Control total para expertos

Si necesitas reglas más finas, iptables es la herramienta definitiva. Aquí trabajamos con cadenas (chains) y reglas.

Conceptos básicos de iptables

  • INPUT: Tráfico entrante al servidor
  • OUTPUT: Tráfico saliente del servidor
  • FORWARD: Tráfico que pasa a través del servidor
  • ACCEPT: Permite el tráfico
  • DROP: Bloquea el tráfico silenciosamente
  • REJECT: Bloquea y notifica al emisor

Paso 1: Limpia las reglas existentes

Siempre es buena idea empezar limpio:

sudo iptables -F
sudo iptables -X

Paso 2: Establece políticas por defecto

sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD DROP

Paso 3: Permite tráfico local y conexiones establecidas

# Tráfico local (loopback)
sudo iptables -A INPUT -i lo -j ACCEPT

# Conexiones ya establecidas (no interrumpas tu SSH)
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Paso 4: Abre los puertos necesarios

Aquí tienes iptables ejemplos para servicios típicos:

# SSH
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# Web
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Panel Syspanel (puerto 2106)
sudo iptables -A INPUT -p tcp --dport 2106 -j ACCEPT

# Puerto específico con IP restringida
sudo iptables -A INPUT -p tcp --dport 3306 -s 192.168.1.0/24 -j ACCEPT

Paso 5: Guarda las reglas

A diferencia de UFW, iptables no guarda las reglas automáticamente. Si reinicias, se pierden. Para guardarlas:

# En Ubuntu/Debian
sudo apt install iptables-persistent
sudo netfilter-persistent save

# O manualmente
sudo iptables-save > /etc/iptables/rules.v4

Para restaurarlas:

sudo iptables-restore < /etc/iptables/rules.v4

Comandos iptables útiles

  • Ver todas las reglas: sudo iptables -L -n -v
  • Eliminar una regla específica: sudo iptables -D INPUT 3 (borra la regla 3 de INPUT)
  • Bloquear una IP: sudo iptables -A INPUT -s 203.0.113.5 -j DROP
  • Limitar conexiones SSH: sudo iptables -A INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j REJECT

[WARNING]: iptables no perdona errores. Un comando mal escrito puede dejar tu servidor inaccesible. Siempre ten una sesión SSH abierta en otra terminal mientras pruebas, o configura una tarea cron para restaurar reglas automáticamente en caso de bloqueo.


Abrir puertos linux: Casos prácticos

Veamos situaciones comunes y cómo resolverlas con ambas herramientas.

Caso 1: Tienes un servidor web y quieres abrir el puerto 80

Con UFW:

sudo ufw allow 80/tcp

Con iptables:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Caso 2: Quieres restringir el acceso SSH a una IP específica

Con UFW:

sudo ufw allow from 203.0.113.10 to any port 22

Con iptables:

sudo iptables -A INPUT -p tcp -s 203.0.113.10 --dport 22 -j ACCEPT

Caso 3: Tienes un juego o aplicación que usa puertos UDP

Con UFW:

sudo ufw allow 25565/udp

Con iptables:

sudo iptables -A INPUT -p udp --dport 25565 -j ACCEPT

Caso 4: Necesitas abrir un rango de puertos

Con UFW:

sudo ufw allow 6000:6005/tcp

Con iptables:

sudo iptables -A INPUT -p tcp --dport 6000:6005 -j ACCEPT

Protección avanzada: Prevenir ataques comunes

Un buen firewall no solo abre y cierra puertos, también puede rechazar ataques básicos.

Protección contra escaneo de puertos

Con iptables:

# Limita nuevas conexiones SSH a 3 por minuto
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 -j DROP

Bloquear paquetes inválidos

sudo iptables -A INPUT -m state --state INVALID -j DROP

Proteger contra ataques SYN flood

sudo iptables -A INPUT -p tcp --syn -m limit --limit 5/s -j ACCEPT

[INFO]: Estas reglas avanzadas no son necesarias para la mayoría de los servidores pequeños, pero son excelentes si esperas tráfico malicioso.


Errores comunes y cómo solucionarlos

Error 1: Me quedé fuera del servidor tras activar el firewall

Si no abriste el puerto SSH antes de activar el firewall, estás bloqueado. Solución:

  1. Usa el panel de control de tu proveedor (VPS) para acceder por consola.
  2. Desactiva el firewall: sudo ufw disable
  3. Abre SSH: sudo ufw allow ssh
  4. Reactiva: sudo ufw enable

Error 2: El firewall se desactiva al reiniciar

Para UFW, asegúrate de que esté habilitado:

sudo systemctl enable ufw

Para iptables, guarda las reglas como explicamos antes.

Error 3: No puedo acceder a un servicio aunque el puerto está abierto

Comprueba si el servicio está escuchando:

sudo netstat -tulpn | grep :puerto

Si no aparece, el servicio no está corriendo o está en otra IP.

Error 4: UFW bloquea tráfico aunque tengo reglas de permitir

A veces hay conflictos entre reglas. Revisa el orden:

sudo ufw status numbered

Elimina reglas conflictivas y vuelve a añadirlas.


Preguntas frecuentes (FAQ)

¿Es suficiente UFW para un servidor de producción?

Sí, para la mayoría de los casos. UFW es un front-end de iptables, así que usa el mismo motor subyacente. La diferencia está en la complejidad de las reglas que puedes crear. Si no necesitas reglas muy específicas, UFW es totalmente seguro y recomendable.

¿Cada cuánto debo revisar mi firewall?

Al menos una vez al mes. Los servicios cambian, las IPs cambian, y las necesidades también. Además, revisa los logs:

sudo tail -f /var/log/ufw.log

¿Qué pasa con IPv6?

UFW maneja IPv6 automáticamente si está activado en tu sistema. Para iptables, usa ip6tables con la misma sintaxis.

¿Puedo usar ambos, UFW e iptables, al mismo tiempo?

No es recomendable. UFW ya gestiona iptables por debajo, así que mezclar ambos puede causar conflictos. Elige uno y quédate con él.

¿Necesito firewall si uso un panel como Syspanel?

Sí, absolutamente. El panel es una capa de gestión, no un firewall. De hecho, con Syspanel (puerto 2106) tendrás acceso a herramientas de gestión del servidor, pero la protección de red depende de ti.


Conclusión: Tu servidor merece un buen portero

Configurar un firewall linux es una de las tareas más importantes en seguridad servidor. Ya sea que elijas UFW por su simplicidad o iptables por su potencia, el simple hecho de tener un firewall activo ya te protege del 90% de los ataques automatizados que rondan internet.

Recuerda los puntos clave:

  • Política por defecto: Denegar todo lo entrante, permitir lo saliente.
  • Abre solo lo necesario: Cada puerto abierto es una superficie de ataque.
  • Prueba siempre con una sesión SSH extra: Nunca te quedes sin acceso.
  • Guarda tus reglas: Tanto UFW como iptables requieren persistencia para sobrevivir reinicios.

Empieza con UFW, domina lo básico, y cuando te sientas cómodo, experimenta con iptables. Tu servidor te lo agradecerá.

[TIP]: Crea una lista de los puertos que usas y revísala cada trimestre. Los servicios cambian y a veces dejamos puertos abiertos que ya no necesitamos. Un firewall limpio es un firewall seguro.

¿Tienes dudas sobre un caso concreto? Déjalas en los comentarios y te ayudaremos a configurar tu firewall correctamente.

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel