VPS
Cómo asegurar un VPS Linux nuevo: primeros pasos
Un VPS nuevo queda expuesto a internet desde el primer minuto. Te guiamos paso a paso para protegerlo en Ubuntu 24.04 o Debian 12: actualizar, crear un usuario con sudo, entrar solo con llaves, bloquear root, activar UFW y fail2ban, instalar parches automáticos y respaldar.

Equipo HostSpace
8 min de lectura
Lo esencial
- Actualiza y crea un usuario con sudo antes de instalar cualquier cosa.
- Entra solo con llaves SSH y desactiva el acceso directo de root.
- Permite OpenSSH en UFW antes de activar el firewall.
- fail2ban, parches automáticos y respaldos fuera del servidor completan la base.
Contenido del artículo
Antes de empezar
Un VPS recién creado es una computadora conectada a internet con todo abierto. En minutos empiezan los escaneos automáticos que buscan contraseñas débiles y servicios sin parches. Esta guía cubre lo mínimo que conviene hacer el primer día en Ubuntu 24.04 o Debian 12, antes de instalar tu sitio o tu aplicación.
Necesitas la IP del servidor y el acceso de root que te enviamos al contratar. En los ejemplos usamos 203.0.113.10 y el usuario admin; cámbialos por los tuyos. Entra por primera vez con ssh root@203.0.113.10.
Paso 1: actualiza el sistema
La imagen con la que se creó tu VPS puede tener semanas o meses. Lo primero es instalar todas las actualizaciones de seguridad pendientes:
apt update
apt full-upgrade -y
ls /var/run/reboot-required && rebootLa última línea reinicia solo si alguna actualización, como un kernel nuevo, lo necesita. Espera un minuto y vuelve a conectarte.
Paso 2: crea un usuario con sudo
Trabajar todo el tiempo como root es arriesgado: cualquier error o comando equivocado tiene permisos totales. Crea un usuario normal que pueda pedir privilegios con sudo cuando los necesite:
- Crea el usuario con
adduser adminy asígnale una contraseña segura (la necesitarás parasudo). - Agrégalo al grupo de administradores con
usermod -aG sudo admin. - Si ya entras como root con una llave, cópiala al nuevo usuario con el comando de abajo.
rsync --archive --chown=admin:admin ~/.ssh /home/adminPaso 3: llaves SSH y adiós a root
Si todavía entras con contraseña, configura tus llaves primero. Lo explicamos paso a paso, para Windows, macOS y Linux, en cómo configurar llaves SSH en un VPS. Cuando puedas entrar como admin con tu llave, crea este archivo para desactivar contraseñas y el acceso directo de root:
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no- Valida la configuración con
sudo sshd -t. - Reinicia el servicio con
sudo systemctl restart ssh. - Sin cerrar tu sesión actual, abre otra terminal y entra con
ssh admin@203.0.113.10. Si funciona, ya puedes cerrar la primera.
Paso 4: activa el firewall con UFW
UFW es la forma sencilla de manejar el firewall en Ubuntu y Debian. La idea es bloquear todo lo que entra y abrir solo lo que usas. Ubuntu lo trae instalado; en Debian 12 instálalo con sudo apt install ufw.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verboseUn detalle importante: si usas Docker, los puertos que publicas con -p se saltan las reglas de UFW. En ese caso, publica los servicios internos solo en 127.0.0.1 y deja que un proxy como Nginx atienda el tráfico público.
Paso 5: instala fail2ban
Aunque ya no aceptes contraseñas, los bots siguen llenando tus registros. fail2ban lee los intentos fallidos y bloquea temporalmente las IP que insisten. Instálalo con sudo apt install fail2ban y crea tu configuración en un archivo propio, para que las actualizaciones no la sobrescriban:
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
[sshd]
enabled = true
backend = systemdLa línea backend = systemd es necesaria en Debian 12, que no guarda el archivo /var/log/auth.log por defecto. Aplica los cambios con sudo systemctl restart fail2ban y revisa las IP bloqueadas con sudo fail2ban-client status sshd.
Paso 6: parches de seguridad automáticos
Las vulnerabilidades nuevas aparecen todo el tiempo. Con unattended-upgrades, el servidor instala solo las actualizaciones de seguridad cada día:
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
sudo unattended-upgrade --dry-run --debugEl segundo comando lo activa y el tercero simula una ejecución para confirmar que todo está bien. Los parches de kernel necesitan reinicio; puedes programarlo en /etc/apt/apt.conf.d/50unattended-upgrades con la opción Unattended-Upgrade::Automatic-Reboot o reiniciar tú en un horario tranquilo.
Opcional: cambiar el puerto de SSH
Mover SSH del puerto 22 a otro, como el 2222, reduce el ruido de bots en los registros, pero no es una medida de seguridad real: un escaneo encuentra el puerto nuevo en segundos. Si decides hacerlo, ve en este orden para no quedarte fuera:
- Abre el puerto nuevo en el firewall con
sudo ufw allow 2222/tcp(y en el firewall del panel de tu proveedor, si usas uno). - Agrega
Port 2222a tu archivo en/etc/ssh/sshd_config.d/. - En Ubuntu 24.04, SSH arranca por socket: aplica con
sudo systemctl daemon-reloadysudo systemctl restart ssh.socket. En Debian 12, consudo systemctl restart ssh. - Prueba con
ssh -p 2222 admin@203.0.113.10desde otra terminal y, si funciona, cierra el 22 consudo ufw delete allow OpenSSH. - Agrega
port = 2222a la sección[sshd]de fail2ban.
Paso 7: respaldos y snapshots
Ninguna medida de seguridad sustituye a un buen respaldo. Combina dos niveles: un snapshot completo del VPS antes de cambios grandes, que te deja volver atrás en minutos, y respaldos de tus datos (bases de datos, archivos del sitio, configuración) guardados fuera del servidor. Un respaldo que vive en la misma máquina se pierde junto con ella. Más detalles en respaldos de tu sitio web.
Lista de verificación final
Repasa esta lista al terminar y cada vez que crees un servidor nuevo:
| Punto | Cómo comprobarlo |
|---|---|
| Paquetes actualizados | apt list --upgradable |
| Usuario con sudo | groups admin |
| Acceso solo con llaves | sudo sshd -T | grep passwordauthentication |
| Root sin acceso por SSH | sudo sshd -T | grep permitrootlogin |
| Firewall activo | sudo ufw status verbose |
| fail2ban vigilando SSH | sudo fail2ban-client status sshd |
| Parches automáticos | systemctl status unattended-upgrades |
| Respaldos fuera del servidor | Restaura un archivo de prueba |
Errores comunes
- Me quedé fuera del servidor. Casi siempre es el firewall o SSH mal configurado. Usa la consola web de tu proveedor para entrar, corrige la regla de UFW o el archivo de
sshd_config.dy reinicia el servicio. sudodice que el usuario no está en sudoers. Faltóusermod -aG sudo admin, o no cerraste sesión después. Los grupos se aplican al volver a entrar.- fail2ban no arranca. Revisa el error con
sudo journalctl -u fail2ban -n 30; en Debian suele faltarbackend = systemd. - Mi sitio no carga después de activar UFW. Confirma que abriste los puertos 80 y 443 con
sudo ufw status.
Con el servidor protegido, el siguiente paso es poner tu proyecto en línea: sigue nuestra guía para desplegar una app de Node en un VPS con Nginx.
Preguntas frecuentes
Actualizar los paquetes, crear un usuario con sudo, configurar llaves SSH y activar el firewall antes de instalar tu sitio o aplicación.
No. Reduce el ruido en los registros, pero la protección real viene de usar llaves, desactivar contraseñas y tener fail2ban.
Puedes usar ambos. El firewall del proveedor filtra antes de que el tráfico llegue al VPS y UFW protege desde dentro del sistema.
Entra con la consola web de tu proveedor, corrige la regla del firewall o la configuración de SSH y reinicia el servicio.

Equipo HostSpace
Ofrecemos hosting, dominios, servidores VPS y correo corporativo con soporte en español. Escribimos sobre lo que más nos preguntan nuestros clientes.