Guía de hardening: cómo securizar un VPS nuevo en Hetzner o DigitalOcean
Cuando compras un servidor virtual (VPS) en Hetzner, DigitalOcean o AWS, por defecto viene con una instalación limpia del sistema operativo (habitualmente Ubuntu o Debian). En el momento en que tu servidor tiene una IP pública asignada, los bots automatizados en internet empiezan a escanearlo en busca de vulnerabilidades y a realizar ataques de fuerza bruta contra el puerto SSH (puerto 22).
Si dejas la configuración por defecto y permites el acceso al usuario root mediante una contraseña tradicional, es solo cuestión de tiempo que tu servidor acabe comprometido.
En esta guía te enseñamos los pasos indispensables de hardening (endurecimiento de seguridad) para blindar tu VPS contra intrusiones.
1. Deshabilitar el acceso root por contraseña y forzar SSH Keys
La autenticación por contraseña es vulnerable a ataques de diccionario. Debes configurar tu servidor para que solo acepte conexiones a través de claves SSH criptográficas (público-privadas).
Paso 1: Copia tu clave pública SSH al servidor
Antes de desactivar las contraseñas, asegúrate de haber copiado tu clave pública. Si estás en local:
ssh-copy-id usuario@IP_DE_TU_SERVIDOR
Paso 2: Edita la configuración de SSH Daemon
Accede a tu servidor por SSH y abre el archivo de configuración del servicio SSH:
sudo nano /etc/ssh/sshd_config
Modifica las siguientes líneas para que coincidan con estos valores:
PermitRootLogin prohibit-passwordono(esto evita que el usuario root inicie sesión directa o que lo haga con contraseña).PasswordAuthentication no(desactiva por completo el acceso con contraseña).PubkeyAuthentication yes(asegura que solo se permita el acceso mediante llaves SSH).
Guarda el archivo y reinicia el servicio SSH:
sudo systemctl restart ssh
Importante: No cierres tu sesión SSH actual hasta que abras una nueva ventana en tu terminal y confirmes que puedes volver a entrar sin problemas mediante tu clave pública.
2. Configurar el cortafuegos (UFW)
Por defecto, todos los puertos de tu servidor están abiertos a menos que configures un cortafuegos. En Ubuntu, la herramienta estándar es UFW (Uncomplicated Firewall).
Configura las reglas para permitir únicamente el tráfico necesario (SSH, HTTP y HTTPS):
# Permitir SSH (asegúrate de hacer esto antes de activar UFW)
sudo ufw allow ssh
# Permitir tráfico web estándar
sudo ufw allow http
sudo ufw allow https
# Activar el firewall
sudo ufw enable
Puedes verificar el estado de tus puertos en cualquier momento ejecutando:
sudo ufw status verbose
3. Instalar y configurar Fail2ban
Aunque desactives las contraseñas, los bots seguirán inundando tu puerto SSH con peticiones fallidas, consumiendo recursos de red y CPU. Fail2ban mitiga esto analizando los logs de conexión y bloqueando temporalmente a través del firewall las direcciones IP de atacantes que fallen repetidamente al intentar conectarse.
Instala la herramienta:
sudo apt update && sudo apt install fail2ban -y
El servicio se iniciará automáticamente y aplicará una protección básica para el puerto SSH por defecto, bloqueando durante 10 minutos a cualquier IP que falle más de 5 intentos de conexión.
4. Automatizar el hardening con FerroSentry
Realizar estos pasos a mano en cada servidor que configures consume tiempo y es propenso a errores humanos (como bloquearte a ti mismo fuera del servidor por error).
Para solucionar esto, SecuryBlack incluye el agente de seguridad open source escrito en Rust FerroSentry. Cuando vinculas un VPS a SecuryBlack, FerroSentry realiza de forma automática todo el proceso de hardening en menos de 1 minuto:
- Cierra todos los puertos innecesarios configurando el firewall de forma automatizada.
- Instala y configura fail2ban con presets optimizados.
- Asegura la configuración de SSH desactivando contraseñas débiles.
- Configura actualizaciones de seguridad automáticas y desatendidas (
unattended-upgrades).
Si deseas evaluar la postura de seguridad de tu servidor actual de forma inmediata sin registrarte en ningún sitio, puedes ejecutar nuestro script gratuito de auditoría en tu terminal:
curl -sSL audit.securyblack.com | bash
Recibirás un diagnóstico en consola detallando si tu firewall está activo, qué puertos están abiertos y si tu SSH está debidamente blindado contra ataques automatizados.