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

Cómo configurar un firewall en Linux (iptables y UFW) para principiantes

Actualizado el 19 de diciembre de 2025

¡Hola! Si estás dando tus primeros pasos en la administración de servidores, probablemente hayas escuchado que configurar un firewall es obligatorio. Es la barrera que decide quién puede entrar y quién no a tu máquina.

Pero no te preocupes. No necesitas ser un gurú de la terminal para proteger tu servidor. En esta guía para principiantes, vamos a desmontar el misterio de iptables y UFW, las dos herramientas más comunes en Linux.

Vamos a explicar qué son, por qué los necesitas y, lo más importante, cómo configurarlos paso a paso sin romper nada en el intento (y si lo rompes, te enseñamos a arreglarlo).


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

Un firewall es un guardia de seguridad que filtra el tráfico de red. Imagina que tu servidor es un edificio de oficinas. El firewall es el portero en la entrada que tiene una lista de invitados. Solo deja pasar a las personas (paquetes de datos) que están en la lista y bloquea a los desconocidos.

Sin un firewall Linux, tu servidor está expuesto a internet con todas las puertas abiertas. Cualquier persona podría intentar conectarse a servicios que no deberías tener visibles, como puertos de bases de datos o paneles de control.

Configurar un firewall es la primera línea de defensa para la seguridad servidor Linux. Es un paso básico, pero el más importante.


Iptables vs. UFW: ¿Cuál es la diferencia?

Esta es la pregunta del millón. Vamos a simplificarlo:

  • Iptables: Es la herramienta clásica y poderosa. Es el "motor" del firewall en el núcleo de Linux. Trabaja directamente con reglas complejas. Es muy flexible, pero su sintaxis puede ser intimidante para un principiante.
  • UFW (Uncomplicated Firewall): Es una capa que se sitúa sobre iptables. Como su nombre indica (Uncomplicated = No complicado), está diseñado para ser fácil de usar. En lugar de escribir líneas largas de iptables, escribes comandos simples como allow 22 o deny 80.

¿Cuál usar? Para un principiante, UFW es la mejor opción. Es más seguro porque es más difícil equivocarse. Aprender iptables es genial para el futuro, pero para proteger tu servidor hoy, UFW es tu mejor amigo.

Dicho esto, vamos a ver ambos, porque entender iptables te ayudará a comprender cómo funciona UFW por dentro.


Configurar Iptables desde cero (El método clásico)

Antes de empezar, una advertencia importante: si estás conectado a tu servidor por SSH, un error al configurar iptables puede dejarte fuera. Ten mucho cuidado y sigue los pasos al pie de la letra.

Paso 1: Ver las reglas actuales

Lo primero es ver qué reglas tenemos. Ejecuta:

sudo iptables -L -v

Verás una tabla con cadenas (CHAINS) llamadas INPUT, FORWARD y OUTPUT. No te asustes, es normal que esté vacía al principio.

Paso 2: La política por defecto (La regla de oro)

Las políticas por defecto son la acción que se toma si ninguna regla coincide. Lo más seguro es:

  • INPUT: Denegar (DROP) todo lo que entra.
  • FORWARD: Denegar (DROP) todo el tráfico que se reenvía.
  • OUTPUT: Permitir (ACCEPT) todo lo que sale.

¿Por qué? Porque así, por defecto, nadie entra. Luego abrimos solo lo que necesitamos.

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

[WARNING]: Si ejecutas esto ahora mismo, perderás la conexión SSH inmediatamente. No lo hagas aún. Primero necesitas la regla para permitir SSH.

Paso 3: Reglas básicas para iptables

Ahora vamos a añadir las reglas para permitir el tráfico que sí queremos.

  1. Permitir conexiones ya establecidas: Esto es crucial. Sin esto, no podrías navegar ni mantener tu conexión SSH.

    sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    
  2. Permitir SSH (Puerto 22): Para no quedarte fuera. Si usas otro puerto, cámbialo.

    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    
  3. Permitir HTTP y HTTPS (Puertos 80 y 443): Si tienes una web.

    sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
    
  4. Permitir el tráfico local (Loopback): Es necesario para que el sistema funcione correctamente.

    sudo iptables -A INPUT -i lo -j ACCEPT
    

Paso 4: Guardar las reglas de iptables

El problema con iptables es que las reglas se pierden al reiniciar el servidor. Para guardarlas, usamos iptables-save.

sudo iptables-save > /etc/iptables/rules.v4

Esto lo guarda en un archivo. Para que se carguen al inicio, necesitas instalar un paquete llamado iptables-persistent:

sudo apt update
sudo apt install iptables-persistent

Durante la instalación, te preguntará si quieres guardar las reglas actuales. Di que sí.


La alternativa fácil: Configurar UFW (El método recomendado)

UFW hace todo lo anterior por ti de una manera mucho más limpia. Es la herramienta perfecta para configurar iptables sin dolor de cabeza.

Paso 1: Instalar UFW

En la mayoría de las distribuciones modernas (Ubuntu, Debian) ya viene instalado. Si no, hazlo con:

sudo apt update
sudo apt install ufw

Paso 2: Definir la política por defecto

UFW tiene un comando para esto. Al igual que con iptables, queremos denegar todo lo que entra y permitir todo lo que sale.

sudo ufw default deny incoming
sudo ufw default allow outgoing

Paso 3: Permitir conexiones SSH (¡Antes de encenderlo!)

Este es el paso más crítico. Debes permitir SSH antes de activar UFW, o te quedarás fuera de tu servidor.

sudo ufw allow ssh

O si usas un puerto personalizado (ej. 2222):

sudo ufw allow 2222/tcp

Paso 4: Permitir servicios web (si aplica)

Si tienes un sitio web, permite los puertos HTTP y HTTPS.

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

También puedes usar los nombres de servicio que UFW reconoce:

sudo ufw allow 'Apache Full'
sudo ufw allow 'Nginx Full'

Paso 5: Habilitar UFW

Ahora sí, encendemos el firewall:

sudo ufw enable

Te preguntará si estás seguro. Escribe y y presiona Enter. Verás un mensaje que dice "Firewall is active and enabled on system startup".

Paso 6: Verificar el estado y las reglas

Para comprobar que todo está funcionando:

sudo ufw status verbose

Esto te mostrará las reglas activas y la política por defecto. Deberías ver algo como:

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

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

Casos prácticos y reglas adicionales para UFW

Aquí tienes ejemplos de reglas útiles que puedes añadir:

  • Permitir un rango de IPs (subred):

    sudo ufw allow from 192.168.1.0/24
    

    Esto permite todo el tráfico desde esa red local.

  • Permitir un puerto solo desde una IP específica:

    sudo ufw allow from 203.0.113.5 to any port 3306
    

    Ideal para bases de datos MySQL, solo permites acceso a tu IP de trabajo.

  • Denegar una IP específica:

    sudo ufw deny from 123.45.67.89
    
  • Eliminar una regla:
    Necesitas el número de la regla. Primero, lista las reglas numeradas:

    sudo ufw status numbered
    

    Luego, elimina la regla número 2:

    sudo ufw delete 2
    
  • Permitir el puerto de Syspanel:
    Si estás usando el panel de control Syspanel, recuerda que su puerto de acceso es el 2106. Debes permitirlo para poder acceder a la interfaz web.

    sudo ufw allow 2106/tcp
    

Solución de problemas comunes (FAQ para principiantes)

Aquí van las dudas más frecuentes que nos llegan al soporte.

1. "He activado UFW y me he quedado fuera del servidor, ¿qué hago?"

Esto suele pasar si no permitiste SSH antes de activarlo. No entres en pánico.

  • Solución 1: Accede a tu servidor a través del panel de control de tu proveedor de hosting (VPS). La mayoría (como Vultr, DigitalOcean, AWS) ofrecen una consola web o VNC que se conecta directamente al servidor, sin pasar por el firewall.
  • Solución 2: Desde esa consola, ejecuta:
    sudo ufw allow 22/tcp
    sudo ufw reload
    
    Y vuelve a intentar la conexión SSH.

[WARNING]: Siempre configura UFW desde un entorno donde tengas acceso a la consola de emergencia del proveedor.

2. "¿Cuál es la diferencia entre ufw allow y ufw allow from?"

  • ufw allow 80/tcp permite el acceso al puerto 80 desde cualquier lugar del mundo.
  • ufw allow from 192.168.1.100 to any port 80 solo permite el acceso a ese puerto desde la IP 192.168.1.100. Es mucho más seguro.

3. "¿Necesito configurar tanto iptables como UFW?"

No. UFW es un front-end de iptables. Al usar UFW, estás modificando iptables por debajo. Usar ambos a la vez puede causar conflictos. Elige uno. Para principiantes, UFW es la elección correcta.

4. "¿Cómo puedo ver los logs del firewall para saber quién está intentando entrar?"

UFW guarda los intentos bloqueados en /var/log/ufw.log. Puedes verlos con:

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

Esto te mostrará en tiempo real los intentos de conexión bloqueados. Es una herramienta estupenda para monitorizar la seguridad servidor Linux.

5. "¿Puedo usar UFW para limitar el número de conexiones SSH (anti fuerza bruta)?"

Sí, puedes usar la regla limit:

sudo ufw limit ssh

Esta regla permite solo 6 conexiones por 30 segundos por IP. Superado ese límite, la IP se bloquea temporalmente. Es una excelente medida de seguridad.


Consejos finales para tu seguridad

Configurar el firewall es solo el principio. Aquí tienes algunos consejos extra:

  1. Actualiza tu sistema: Un firewall no sirve de nada si tu sistema tiene vulnerabilidades conocidas. Ejecuta sudo apt update && sudo apt upgrade regularmente.
  2. Cambia el puerto SSH: Cambiar el puerto 22 a uno no estándar (ej. 22022) reduce drásticamente los ataques de bots automáticos. Si lo haces, recuerda actualizar la regla del firewall.
  3. Usa claves SSH: Desactiva la autenticación por contraseña para SSH y usa claves públicas. Es mucho más seguro.
  4. Revisa tus reglas periódicamente: No configures el firewall y lo olvides. Revisa de vez en cuando con sudo ufw status verbose para asegurarte de que no hay puertos abiertos innecesarios.

[TIP]: Si tu servidor tiene un panel de control como Syspanel, recuerda que además del puerto 2106 para la interfaz web, debes mantener abierto el puerto SSH (22 o el que uses) para la administración. No bloquees los puertos de correo (25, 587, 993, 110) si planeas usar email.


Conclusión

Proteger tu servidor con un firewall es una de las tareas más cruciales que puedes hacer. Aunque iptables es la herramienta subyacente, UFW te ofrece una forma segura y sencilla de gestionarlo sin necesidad de ser un experto.

Recuerda la regla de oro: denegar todo por defecto y permitir solo lo necesario. Con los pasos de esta guía, ya tienes el conocimiento para configurar un firewall robusto en tu servidor Linux.

Empieza con calma, prueba en un entorno de desarrollo si puedes, y no tengas miedo de usar sudo ufw status para verificar tus reglas. ¡Tu servidor te lo agradecerá!

¿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