Para asegurar un servidor VPS necesitas como mínimo tres capas: un firewall que bloquee puertos innecesarios, una configuración SSH endurecida y actualizaciones regulares del sistema operativo. Con estas tres medidas eliminas la gran mayoría de los ataques automatizados.
Un VPS mal configurado puede ser comprometido en minutos: los bots escanean Internet continuamente en busca de credenciales débiles y puertos abiertos. Esta guía te muestra cómo cerrar esas puertas de forma sistemática. Consulta también otros recursos en la sección de servidores VPS.
Por Qué la Seguridad de un VPS Es Tu Responsabilidad
A diferencia del hosting compartido, donde el proveedor gestiona el servidor, en un VPS —salvo que sea administrado— tú eres el administrador. Eso significa que la configuración del firewall, los parches y las contraseñas son trabajo tuyo.
Los vectores de ataque más comunes contra VPS son:
- Ataques de fuerza bruta al puerto SSH (22).
- Servicios expuestos innecesariamente (bases de datos, paneles de control).
- Software desactualizado con vulnerabilidades conocidas.
- Contraseñas débiles o reutilizadas.
Paso 1: Configura el Firewall (UFW o iptables)
El firewall es la primera línea de defensa. Solo deben estar abiertos los puertos que realmente necesitas.
Opción A: UFW (recomendado para Ubuntu/Debian)
UFW (Uncomplicated Firewall) ofrece una interfaz sencilla sobre iptables:
# Política por defecto: denegar todo el tráfico entrante
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Permitir SSH, HTTP y HTTPS
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Activar el firewall
sudo ufw enable
sudo ufw status verbose
Si usas un puerto SSH diferente al 22 (lo veremos en el siguiente paso), ajusta la regla correspondiente antes de activar UFW para no bloquearte tú mismo.
Opción B: firewall-cmd (AlmaLinux / Rocky Linux)
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Puertos que casi nunca deberían estar abiertos al público
| Puerto | Servicio | Recomendación |
|---|---|---|
| 3306 | MySQL / MariaDB | Solo localhost o IP específica |
| 5432 | PostgreSQL | Solo localhost o IP específica |
| 6379 | Redis | Solo localhost |
| 8080, 8443 | Paneles alternativos | Limitar a IP de administración |
Paso 2: Endurece el Acceso SSH
SSH es la puerta de entrada al servidor. Asegúrala bien y eliminarás la mayoría de los intentos de intrusión.
Cambia el puerto por defecto
Edita /etc/ssh/sshd_config y cambia el puerto 22 a uno no estándar (por ejemplo, 2222 o cualquier número entre 1024 y 65535):
Port 2222
Esto no es seguridad real por sí solo, pero reduce drásticamente el ruido de los bots que escanean el puerto 22.
Desactiva el acceso por contraseña, usa claves SSH
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
Primero asegúrate de haber subido tu clave pública al servidor con ssh-copy-id. Después reinicia el servicio:
sudo systemctl restart sshd
Genera un par de claves SSH (en tu máquina local)
ssh-keygen -t ed25519 -C "mi_vps_$(date +%Y-%m-%d)"
ssh-copy-id -i ~/.ssh/id_ed25519.pub usuario@IP_VPS
Usa el algoritmo ed25519: es más corto, más rápido y más seguro que RSA de 2048 bits.
Configura Fail2Ban
Fail2Ban monitorea los logs y banea automáticamente las IPs que acumulan demasiados intentos fallidos:
sudo apt install fail2ban -y
sudo systemctl enable fail2ban --now
La configuración por defecto ya protege SSH. Para ajustar el umbral, crea /etc/fail2ban/jail.local:
[sshd]
enabled = true
maxretry = 5
bantime = 3600
Paso 3: Gestión de Usuarios y Privilegios
Nunca trabajes como root en el día a día. Crea un usuario normal con acceso sudo:
sudo adduser miusuario
sudo usermod -aG sudo miusuario
Principios básicos de gestión de usuarios:
- Una cuenta por persona —nunca compartas credenciales.
- Elimina cuentas de usuarios que ya no necesitan acceso.
- Revisa periódicamente el contenido de
/etc/passwdy/etc/sudoers. - Usa
sudosolo cuando sea imprescindible; sale del modo root tan pronto como termines.
Paso 4: Mantén el Sistema Actualizado y Monitorea
Actualizaciones automáticas de seguridad
En Ubuntu/Debian instala unattended-upgrades para aplicar parches de seguridad automáticamente:
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades
Monitorea los logs del sistema
Revisa periódicamente los intentos de acceso fallidos:
sudo journalctl -u ssh --since "24 hours ago" | grep "Failed"
sudo grep "Accepted" /var/log/auth.log
Herramientas como Logwatch o GoAccess envían resúmenes diarios por correo, ahorrándote tener que revisar logs manualmente.
Instala un escáner de rootkits
sudo apt install rkhunter -y
sudo rkhunter --update
sudo rkhunter --check
Programa el escaneo semanal con cron para detectar cambios sospechosos en archivos del sistema.
Si buscas un VPS con capa de seguridad gestionada incluida, en elenlace.com encontrarás opciones administradas donde el equipo técnico aplica estas configuraciones por ti.
Conclusiones clave
- Activa el firewall desde el primer minuto y cierra todo puerto que no uses.
- Desactiva la autenticación por contraseña en SSH y usa siempre claves ed25519.
- Cambia el puerto SSH y activa Fail2Ban para reducir el ruido de los bots.
- Trabaja con un usuario sin privilegios y reserva
root/sudopara tareas administrativas. - Aplica parches de seguridad de forma regular (idealmente automática).
Implementar estas medidas toma menos de una hora y convierte tu VPS en un objetivo mucho menos atractivo para los atacantes. Para ayuda especializada en configuración y auditoría de seguridad, contacta al equipo de elenlace.com.
Preguntas frecuentes
¿UFW o iptables? ¿Cuál es mejor para asegurar un VPS?
UFW es una capa de abstracción sobre iptables diseñada para ser más fácil de usar. Para la mayoría de los VPS de propósito general, UFW es suficiente y mucho menos propenso a errores de configuración. Si necesitas reglas muy granulares (NAT, redirección de puertos complejas), iptables ofrece más control.
¿Debo deshabilitar el acceso root por SSH?
Sí, siempre. Configura PermitRootLogin no en /etc/ssh/sshd_config y usa un usuario con sudo para las tareas administrativas. El acceso root directo por SSH es uno de los vectores de ataque más explotados.
¿Cómo sé si mi VPS ya fue comprometido?
Señales de alerta: uso anormal de CPU o RAM, tráfico de red inusual, usuarios desconocidos en /etc/passwd, procesos extraños al ejecutar ps aux y entradas raras en los logs de autenticación. Herramientas como rkhunter y chkrootkit automatizan gran parte de esta detección.
¿Con qué frecuencia debo actualizar el servidor?
Los parches de seguridad deben aplicarse en cuanto están disponibles, idealmente mediante unattended-upgrades para paquetes críticos. Las actualizaciones de versión mayor del sistema operativo (por ejemplo, de Ubuntu 22.04 a 24.04) se planifican con más cuidado, generalmente una vez al año en entornos de producción.
Recursos útiles
Otros proveedores y guías que vale la pena comparar: