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

Portada del artículo: Cómo asegurar un VPS Linux nuevo: primeros pasos

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:

Servidor
apt update
apt full-upgrade -y
ls /var/run/reboot-required && reboot

La ú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:

  1. Crea el usuario con adduser admin y asígnale una contraseña segura (la necesitarás para sudo).
  2. Agrégalo al grupo de administradores con usermod -aG sudo admin.
  3. Si ya entras como root con una llave, cópiala al nuevo usuario con el comando de abajo.
Servidor
rsync --archive --chown=admin:admin ~/.ssh /home/admin

Paso 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:

/etc/ssh/sshd_config.d/00-seguridad.conf
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
  1. Valida la configuración con sudo sshd -t.
  2. Reinicia el servicio con sudo systemctl restart ssh.
  3. 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.

Servidor
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 verbose

Un 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:

/etc/fail2ban/jail.local
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5

[sshd]
enabled = true
backend = systemd

La 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:

Servidor
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
sudo unattended-upgrade --dry-run --debug

El 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:

  1. 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).
  2. Agrega Port 2222 a tu archivo en /etc/ssh/sshd_config.d/.
  3. En Ubuntu 24.04, SSH arranca por socket: aplica con sudo systemctl daemon-reload y sudo systemctl restart ssh.socket. En Debian 12, con sudo systemctl restart ssh.
  4. Prueba con ssh -p 2222 admin@203.0.113.10 desde otra terminal y, si funciona, cierra el 22 con sudo ufw delete allow OpenSSH.
  5. Agrega port = 2222 a 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:

Lista de verificación para asegurar un VPS Linux
PuntoCómo comprobarlo
Paquetes actualizadosapt list --upgradable
Usuario con sudogroups admin
Acceso solo con llavessudo sshd -T | grep passwordauthentication
Root sin acceso por SSHsudo sshd -T | grep permitrootlogin
Firewall activosudo ufw status verbose
fail2ban vigilando SSHsudo fail2ban-client status sshd
Parches automáticossystemctl status unattended-upgrades
Respaldos fuera del servidorRestaura 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.d y reinicia el servicio.
  • sudo dice 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 faltar backend = 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.

Compartir

WhatsAppLinkedInXFacebook

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.