Servidores y VPS

Cómo configurar un firewall en tu VPS con iptables o UFW

Aprende paso a paso cómo proteger tu VPS configurando un firewall con iptables o UFW para bloquear accesos no autorizados y asegurar tu servidor Linux.

Detailed image of a server rack with glowing lights in a modern data center.

Para configurar un firewall en tu VPS, puedes usar iptables (control total, pero más complejo) o UFW (interfaz simplificada sobre iptables, ideal para principiantes). Ambas herramientas están disponibles en la mayoría de distribuciones Linux y protegen tu servidor bloqueando el tráfico no autorizado a nivel de red.

Un VPS sin firewall es una puerta abierta: cualquier puerto que escuche un servicio puede ser atacado. Esta guía cubre los comandos esenciales de iptables y UFW para que dejes tu servidor protegido en menos de 30 minutos.

¿Por qué necesitas un firewall en tu VPS?

Cuando contratas un VPS, recibes una IP pública accesible desde todo Internet. Sin un firewall, cualquier servicio que tengas corriendo (MySQL, Redis, paneles de administración) queda expuesto a bots de escaneo automatizados que prueban contraseñas y vulnerabilidades a todas horas.

Un firewall bien configurado te permite:

  • Exponer solo los puertos que realmente necesitas (80, 443, 22).
  • Bloquear por defecto todo el tráfico entrante no solicitado.
  • Limitar intentos de conexión SSH para frenar ataques de fuerza bruta.
  • Aislar servicios internos (bases de datos, caches) de la red pública.

Antes de empezar, conéctate a tu VPS por SSH y asegúrate de tener permisos de superusuario (sudo o sesión como root).

Opción A: Configurar el firewall con UFW (recomendado para principiantes)

UFW (Uncomplicated Firewall) es una capa de abstracción sobre iptables que simplifica la gestión de reglas. Viene preinstalada en Ubuntu y se instala fácilmente en Debian y CentOS.

Instalar y activar UFW

# Debian / Ubuntu
sudo apt install ufw -y

# Verificar estado
sudo ufw status verbose

Importante: antes de activar UFW, permite SSH para no bloquearte.

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

Si usas un puerto SSH personalizado (por ejemplo, 2222):

sudo ufw allow 2222/tcp

Activar UFW y establecer política por defecto

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable

Confirma con y cuando lo solicite. Ya tienes el firewall activo. Verifica las reglas con:

sudo ufw status numbered

Comandos UFW útiles del día a día

Acción Comando
Permitir puerto sudo ufw allow 3306/tcp
Bloquear puerto sudo ufw deny 3306/tcp
Eliminar regla (por número) sudo ufw delete 3
Permitir solo desde una IP sudo ufw allow from 192.168.1.10 to any port 22
Desactivar UFW sudo ufw disable

Opción B: Configurar el firewall con iptables (control avanzado)

iptables es la herramienta de filtrado de paquetes nativa del kernel Linux. Ofrece control granular pero requiere más atención, especialmente en el orden de las reglas.

Limpiar reglas existentes

sudo iptables -F
sudo iptables -X
sudo iptables -Z

Establecer política por defecto (DROP entrante)

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

Permitir tráfico esencial

# Loopback (necesario para el sistema)
sudo iptables -A INPUT -i lo -j ACCEPT

# Conexiones establecidas y relacionadas
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

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

# HTTP y HTTPS
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# ICMP (ping) — opcional pero útil para diagnósticos
sudo iptables -A INPUT -p icmp -j ACCEPT

Persistir las reglas entre reinicios

Las reglas de iptables se pierden al reiniciar a menos que las guardes:

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

# CentOS / RHEL
sudo service iptables save

Buenas prácticas de seguridad

Tener un firewall activo es el primer paso; estas prácticas lo refuerzan:

  • Cambia el puerto SSH (del 22 al 2200–2299) para reducir el ruido en los logs.
  • Limita intentos SSH con UFW: sudo ufw limit ssh bloquea IPs con más de 6 intentos fallidos en 30 segundos.
  • Bloquea países de riesgo usando ipset + iptables si recibes ataques persistentes de regiones concretas.
  • Nunca expongas MySQL o Redis a Internet (puertos 3306 y 6379); átalos a 127.0.0.1 en su configuración.
  • Revisa los logs regularmente: /var/log/ufw.log (UFW) o dmesg (iptables con logging).

Si administras varios VPS, considera leer la guía de servidores VPS en nuestro blog para profundizar en configuraciones avanzadas de seguridad.

Conclusiones clave

  • Un VPS sin firewall expone todos sus puertos a Internet desde el primer momento.
  • UFW es la opción más rápida y segura para principiantes; iptables ofrece control total para escenarios avanzados.
  • La política base correcta es: denegar todo el tráfico entrante y permitir solo lo necesario explícitamente.
  • Siempre permite SSH antes de activar el firewall para no bloquearte.
  • Persiste las reglas con iptables-persistent o netfilter-persistent para que sobrevivan a reinicios.
  • Combina el firewall con acceso SSH por clave pública para una protección sólida sin complejidad extra.

¿Quieres un VPS ya configurado con seguridad de base incluida? En elenlace.com te ayudamos a elegir y afinar el servidor ideal para tu proyecto, con soporte en español.

Preguntas frecuentes

¿UFW e iptables pueden coexistir?

Sí: UFW es una interfaz sobre iptables. Cuando usas UFW, estás modificando iptables por debajo. No mezcles comandos directos de iptables con UFW en el mismo servidor o las reglas pueden entrar en conflicto.

¿Qué pasa si me bloqueo por SSH?

Accede a tu VPS desde la consola de emergencia (KVM/VNC) que ofrece tu proveedor. Desde ahí puedes desactivar el firewall (sudo ufw disable o sudo iptables -P INPUT ACCEPT) y corregir las reglas.

¿Necesito firewall si ya tengo fail2ban?

Sí. fail2ban reacciona después de detectar intentos fallidos; un firewall con política DROP bloquea el tráfico antes de que llegue al servicio. Son complementarios, no equivalentes.

¿Debo abrir el puerto 8080 para mi aplicación web?

Solo si la aplicación escucha directamente en ese puerto y no usas un proxy inverso (Nginx/Apache). La práctica recomendada es exponer solo 80/443 y usar el proxy para redirigir el tráfico internamente.

¿Prefieres que lo hagamos por ti? En El Enlace resolvemos hosting y desarrollo web profesional.

Para saber más

Otros proveedores y guías que vale la pena comparar:

← Todos