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 LANufw delete allow 80/tcp— eliminar una regla existenteufw 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 noen/etc/ssh/sshd_config). - Instala fail2ban para banear IPs que acumulen intentos fallidos de login.
- Cierra MySQL al exterior (
bind-address = 127.0.0.1en 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: