Primeros pasos en un VPS con Ubuntu: seguridad básica en 15 minutos
En cuanto un VPS recibe una IP pública, los bots empiezan a intentar entrar por SSH. Antes de instalar cualquier aplicación, sigue estos pasos para proteger tu Ubuntu. Funciona con cualquier proveedor: Hostinger, Contabo, Hetzner, Vultr, DigitalOcean u Oracle.
Antes de empezar: mantén abierta la sesión SSH actual mientras pruebas los cambios en otra ventana. Si algo sale mal con el SSH o el firewall, todavía podrás corregirlo. La mayoría de los proveedores también ofrecen una consola de emergencia en el panel.
1. Entra en el VPS y actualiza el sistema
Usa la IP y la contraseña que te envió el proveedor:
ssh root@IP-DEL-VPS
apt update && apt upgrade -y
Si se actualizó el kernel, reinicia con reboot y vuelve a conectarte.
2. Crea tu propio usuario
Trabajar siempre como root es arriesgado. Crea un usuario con permisos de administrador:
adduser tunombre
usermod -aG sudo tunombre
3. Configura el acceso con clave SSH
En tu ordenador (Windows PowerShell, macOS o Linux), genera un par de claves si aún no lo tienes:
ssh-keygen -t ed25519
Copia la clave pública al VPS. En macOS y Linux:
ssh-copy-id tunombre@IP-DEL-VPS
En Windows, copia el contenido de C:\Users\TU-USUARIO\.ssh\id_ed25519.pub y, en el VPS, pégalo en el archivo /home/tunombre/.ssh/authorized_keys:
sudo -u tunombre mkdir -p /home/tunombre/.ssh
sudo -u tunombre nano /home/tunombre/.ssh/authorized_keys
chmod 700 /home/tunombre/.ssh
chmod 600 /home/tunombre/.ssh/authorized_keys
Pruébalo en una ventana nueva: ssh tunombre@IP-DEL-VPS debe entrar sin pedir la contraseña del servidor.
4. Desactiva el acceso de root y por contraseña
Hazlo solo después de confirmar que la clave funciona. Crea un archivo de configuración:
sudo nano /etc/ssh/sshd_config.d/99-seguridad.conf
Con este contenido:
PermitRootLogin no
PasswordAuthentication no
Aplica los cambios y prueba el acceso en otra ventana:
sudo systemctl restart ssh
Algunas imágenes de proveedores traen sus propios archivos en /etc/ssh/sshd_config.d/ que reactivan la contraseña. Si el acceso por contraseña sigue funcionando, revisa esos archivos con sudo sshd -T | grep -i passwordauthentication.
5. Activa el firewall (UFW)
Abre solo lo que uses. Para un servidor web:
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status
Algunos proveedores también tienen firewall en el panel (Hostinger, Hetzner, Oracle). En Oracle Cloud, por ejemplo, los puertos también deben abrirse en la Security List de la red.
Cuidado con Docker: los puertos publicados con docker run -p se saltan el UFW. Para servicios internos, publícalos solo en 127.0.0.1 (p. ej. -p 127.0.0.1:5678:5678) y exponlos por el puerto 443 con un proxy inverso.
6. Instala Fail2ban
Bloquea las IP que fallan el inicio de sesión varias veces:
sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
7. Activa las actualizaciones automáticas de seguridad
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
8. Crea un swap (recomendado en VPS de hasta 4 GB)
El swap evita que el sistema mate procesos cuando la memoria se agota de golpe:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
9. Ajusta la zona horaria
Usa la tuya (puedes listarlas con timedatectl list-timezones):
sudo timedatectl set-timezone Europe/Madrid
10. Configura copias de seguridad
Activa las copias o snapshots del proveedor y, para los datos importantes, guarda también una copia fuera del servidor. La seguridad sirve de poco sin copias de seguridad.
Listo. ¿Y ahora?
Tu servidor ya tiene la seguridad básica. Ahora puedes instalar Docker, un panel como CloudPanel o seguir nuestra guía para ejecutar n8n en un VPS.