Un VPS nuevo con una dirección IP pública empieza a recibir intentos de inicio de sesión automatizados a los pocos minutos. Nada de eso es personal; los bots simplemente escanean todas las direcciones. Unos pocos pasos básicos detienen casi todo. Esta lista asume un servidor recién instalado con Ubuntu 24.04 o Debian 12/13 y lleva unos quince minutos.
1. Actualiza todo primero
apt update && apt full-upgrade -y
reboot
Vuelve a iniciar sesión tras el reinicio. Empieza siempre desde un sistema totalmente parcheado.
2. Crea un usuario no root
Trabajar siempre como root hace peligrosa cualquier errata. Crea un usuario normal con permisos de sudo:
adduser deploy
usermod -aG sudo deploy
3. Configura las claves SSH
En tu propio ordenador, crea un par de claves si no tienes uno y copia la mitad pública al servidor:
ssh-keygen -t ed25519 -C "my-vps"
ssh-copy-id deploy@YOUR_SERVER_IP
Abre un segundo terminal y confirma que puedes iniciar sesión como deploy con la clave antes de continuar. No cierres tu sesión original hasta que lo hayas hecho.
4. Desactiva el acceso por contraseña y como root
Edita la configuración del demonio SSH:
sudo nano /etc/ssh/sshd_config.d/99-hardening.conf
Pon estas líneas en el archivo:
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
Comprueba la sintaxis y recarga:
sudo sshd -t && sudo systemctl reload ssh
5. Activa un firewall
UFW es la opción más sencilla. Permite SSH primero y luego activa el firewall:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp # only if you run a web server
sudo ufw enable
sudo ufw status verbose
Abre puertos solo para los servicios que realmente ejecutes. Todo lo demás permanece cerrado por defecto.
6. Añade fail2ban
Fail2ban vigila los registros y bloquea temporalmente las direcciones que fallan repetidamente al iniciar sesión.
sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
Los valores por defecto son adecuados para SSH. Como ya desactivaste las contraseñas, esto sobre todo reduce el ruido en los registros y el gasto inútil de CPU.
7. Activa las actualizaciones de seguridad automáticas
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
Esto instala los parches de seguridad automáticamente. Reinicia de vez en cuando para las actualizaciones del kernel, o deja que la herramienta lo haga en una hora tranquila.
8. Comprueba qué está escuchando
sudo ss -tulpn
Todo lo que escuche en 0.0.0.0 y que no esperabas merece investigarse. Los servicios pensados solo para uso local (bases de datos, cachés, paneles de administración) deben escuchar en 127.0.0.1.
9. Monitorización básica y copias de seguridad
- Vigila los registros con
journalctl -u ssh --since todayde vez en cuando. - Comprueba los recursos con
htopydf -hpara que un disco lleno o un proceso descontrolado no te sorprenda. - Haz copias de seguridad. Haz una instantánea del servidor antes de cambios importantes y guarda una copia fuera del servidor de todo lo que no puedas recrear.
Qué hacer a continuación
Ahora tienes un servidor mucho más difícil de vulnerar que el predeterminado. A partir de aquí, mantén el software actualizado, ejecuta cada servicio como su propio usuario sin privilegios y expón solo lo que necesites. Si quieres un túnel privado hacia el servidor, nuestra guía sobre cómo configurar WireGuard es un buen siguiente paso.
Preguntas frecuentes
¿Qué debo hacer primero en un VPS nuevo?
Actualizar los paquetes, crear un usuario sin privilegios de root, cambiar a claves SSH, desactivar el acceso por contraseña y activar un cortafuegos.
¿Debo cambiar el puerto SSH?
Reduce el ruido en los registros, pero no es seguridad real. Las claves y un cortafuegos importan mucho más.