Servidores y VPS

Cómo configurar un firewall en tu VPS: UFW y iptables

Aprende a proteger tu servidor VPS configurando un firewall con UFW o iptables, bloqueando puertos innecesarios y permitiendo solo el tráfico legítimo.

System with various wires managing access to centralized resource of server in data center

Un firewall para servidor VPS es la primera línea de defensa real de tu infraestructura: filtra el tráfico de red antes de que llegue a cualquier servicio y cierra los miles de puertos que nunca deberían estar abiertos al público. Sin uno activo, tu servidor recibe intentos de fuerza bruta, escáneres automatizados y exploits cada día, incluso si acabas de encenderlo.

UFW vs. iptables: ¿Cuál elegir?

Ambas herramientas controlan el mismo subsistema del kernel Linux (netfilter), pero con interfaces muy distintas:

Característica UFW iptables
Curva de aprendizaje Baja — sintaxis legible Alta — sintaxis técnica
Persistencia de reglas Automática Requiere iptables-save
Flexibilidad Media Máxima
Ideal para Administradores con menos experiencia Configuraciones avanzadas / scripts
Disponible en Ubuntu, Debian Todas las distribuciones Linux

Regla general: si gestionas un VPS Ubuntu o Debian con servicios estándar (web, SSH, correo), empieza con UFW. Si necesitas NAT, redirección de puertos avanzada o distribuciones RHEL/AlmaLinux, usa iptables (o su alternativa moderna, nftables).

Configurar un firewall con UFW

UFW (Uncomplicated Firewall) viene preinstalado en Ubuntu. Si no está disponible:

apt install ufw

Paso 1: Política por defecto

Antes de activar UFW, define la política base. Lo más seguro es denegar todo el tráfico entrante y permitir todo el saliente:

ufw default deny incoming
ufw default allow outgoing

Paso 2: Permitir los servicios esenciales

Crítico: permite SSH antes de activar el firewall o perderás el acceso remoto.

# SSH (puerto estándar)
ufw allow 22/tcp

# Si cambiaste el puerto SSH (recomendado):
ufw allow 2222/tcp

# Servidor web
ufw allow 80/tcp
ufw allow 443/tcp

# Correo (solo si gestionas un servidor de email)
ufw allow 25/tcp
ufw allow 587/tcp
ufw allow 993/tcp

Paso 3: Activar UFW

ufw enable

UFW advertirá que puede interrumpir conexiones SSH activas. Como ya añadiste la regla para SSH, confirma con y.

Paso 4: Verificar el estado

ufw status verbose

Verás todas las reglas activas con sus acciones (ALLOW/DENY) y puertos.

Comandos UFW útiles adicionales

  • ufw deny 3306 — bloquear MySQL al exterior (dejarlo solo en localhost)
  • ufw allow from 192.168.1.0/24 to any port 22 — SSH solo desde una subred LAN
  • ufw delete allow 80/tcp — eliminar una regla existente
  • ufw reset — borrar todas las reglas y desactivar

Configurar un firewall con iptables

iptables trabaja con cadenas de reglas (chains): INPUT (tráfico entrante), OUTPUT (saliente) y FORWARD (enrutado entre interfaces). Las reglas se evalúan en orden; la primera que coincide gana.

Configuración base segura

# Vaciar reglas existentes
iptables -F
iptables -X

# Política por defecto: denegar todo
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Permitir loopback (imprescindible para procesos locales)
iptables -A INPUT -i lo -j ACCEPT

# Permitir conexiones establecidas y relacionadas
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

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

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

# ICMP (ping) — opcional pero recomendado para diagnósticos
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

Hacer persistentes las reglas

iptables no guarda las reglas entre reinicios. En Debian/Ubuntu:

apt install iptables-persistent
netfilter-persistent save

En CentOS/AlmaLinux:

service iptables save

Bloquear una IP con iptables

iptables -A INPUT -s 1.2.3.4 -j DROP

Para bloquear un rango CIDR completo:

iptables -A INPUT -s 1.2.3.0/24 -j DROP

Buenas prácticas de seguridad adicionales

Un firewall es necesario pero no suficiente. Combínalo con estas medidas:

  • Cambia el puerto SSH (de 22 a un número alto como 2222 o 22000). Reduce drásticamente los intentos de fuerza bruta automatizados.
  • Deshabilita el login por contraseña en SSH y usa solo claves públicas (PasswordAuthentication no en /etc/ssh/sshd_config).
  • Instala fail2ban para banear IPs que acumulen intentos fallidos de login.
  • Cierra MySQL al exterior (bind-address = 127.0.0.1 en la configuración de MariaDB) y bloquea el puerto 3306 en el firewall.
  • Mantén el kernel y los paquetes actualizados; muchas vulnerabilidades activamente explotadas tienen parche disponible días antes del ataque masivo.

Si quieres un análisis más amplio de la seguridad en servidores VPS, visita nuestra sección de guías de servidores VPS donde encontrarás artículos sobre hardening, monitoreo y más.

Para proyectos donde la seguridad es crítica y no tienes un equipo DevOps interno, el equipo de elenlace.com puede configurar y mantener el firewall de tu VPS como parte de un servicio de administración continua.

Conclusiones clave

  • Todo VPS Linux debe tener un firewall activo desde el primer minuto; sin él, el servidor queda expuesto a escáneres y ataques automatizados.
  • UFW es la opción más sencilla para Ubuntu/Debian: política deny-by-default, permite SSH y tus puertos de servicio, activa.
  • iptables ofrece mayor control para configuraciones avanzadas, pero requiere guardar las reglas manualmente para que persistan entre reinicios.
  • El firewall de red es solo una capa: combínalo con fail2ban, autenticación por clave SSH y actualizaciones frecuentes.
  • Nunca actives el firewall sin antes asegurarte de que el puerto SSH está permitido — de lo contrario quedarás fuera de tu propio servidor.

Preguntas frecuentes

¿Puedo usar UFW e iptables al mismo tiempo?

No es recomendable. UFW genera reglas de iptables internamente; si también modificas iptables directamente, las reglas pueden entrar en conflicto. Elige una herramienta y úsala de forma exclusiva, o migra a nftables que reemplaza a ambas en distribuciones modernas.

¿El proveedor de VPS ya incluye un firewall?

Muchos proveedores ofrecen un firewall perimetral en el panel de control (distinto al firewall del sistema operativo). Ambas capas son útiles y complementarias: el firewall del proveedor actúa antes de que el tráfico llegue al servidor; el del sistema operativo es la última barrera dentro del VPS. Activa los dos.

¿Necesito abrir puertos distintos para un servidor de correo?

Sí. Un servidor de correo completo requiere los puertos 25 (SMTP entre servidores), 587 (SMTP autenticado), 993 (IMAP sobre TLS) y opcionalmente 465 (SMTPS). Abre solo los que tu configuración realmente use y considera bloquear el puerto 25 entrante si solo envías y no recibes correo en el mismo servidor.

¿Cómo verifico qué puertos están abiertos en mi VPS?

Desde el propio servidor: ss -tlnp muestra los puertos en escucha con el proceso asociado. Desde fuera del servidor, una herramienta como nmap -sV <IP del VPS> muestra los puertos visibles desde internet, que es lo que un atacante vería.

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

Recursos útiles

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

← Todos