NAP Latino

Publicado el 22 de julio de 2026 · Revisado el 22 de julio de 2026

Cómo asegurar tu VPS desde el primer día: usuario sin privilegios, SSH por llave y firewall UFW

Un VPS recién provisionado viene expuesto por defecto: root con contraseña y todos los puertos abiertos. En esta guía paso a paso dejamos el servidor blindado básico en menos de 15 minutos: usuario no-root con sudo, acceso por llave SSH, cierre de login por contraseña y firewall UFW.

Cómo asegurar tu VPS desde el primer día: usuario sin privilegios, SSH por llave y firewall UFW

Cuando recibes un VPS nuevo, lo primero que hace un atacante automatizado es probar root con contraseñas comunes. Si tu servidor aún acepta login por contraseña y tiene el firewall abierto, es cuestión de minutos que alguien lo intente. Vamos a cerrar esas puertas de una vez, en orden, explicando qué buscamos con cada paso.

Asumimos un VPS con Ubuntu/Debian recién creado y acceso root por SSH. Si ya entras como usuario normal, salta al paso correspondiente.

1. Crea un usuario sin privilegios para el día a día

Entrar siempre como root es peligroso: un solo comando mal tipeado (o un script comprometido) tiene control total. Mejor trabajar como usuario normal y elevar solo cuando hace falta.

adduser deploy
usermod -aG sudo deploy

Con esto creamos deploy y le damos permiso de sudo. A partir de ahora operas como deploy, no como root.

2. Copia tu llave SSH para poder entrar sin contraseña

Las contraseñas se pueden fuerza bruta. Una llave SSH (par pública/privada) es mucho más difícil de quebrar. Si generaste tu llave en tu equipo local, copiamos la pública al nuevo usuario.

mkdir -p /home/deploy/.ssh
cp ~/.ssh/authorized_keys /home/deploy/.ssh/authorized_keys
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh

Esto deja a deploy listo para autenticarse con tu llave, sin escribir contraseña.

3. Cierra el login por contraseña y el de root

Ahora que deploy entra por llave, apagamos las opciones más atacadas: nadie entra como root por SSH y nadie entra con contraseña.

Edita /etc/ssh/sshd_config y deja estas dos líneas (o agrégalas):

PermitRootLogin no
PasswordAuthentication no

Luego reinicia el servicio:

systemctl restart ssh

Advertencia importante: antes de cerrar tu sesión actual, abre una segunda terminal y confirma que puedes entrar como deploy por llave. Si algo salió mal en la configuración, así evitas quedarte afuera.

4. Activa un firewall básico con UFW

Por defecto un VPS expone todos los puertos. UFW (Uncomplicated Firewall) nos deja una política simple: bloquear todo lo entrante, permitir solo lo necesario.

ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

Explicación rápida: permitimos SSH (22) para no bloquearnos, y los puertos web (80 y 443) si vas a servir tráfico. Cualquier otro puerto queda cerrado hasta que lo habilites explícitamente.

Listo: servidor blindado básico

En menos de 15 minutos pasaste de un VPS expuesto a uno con usuario limitado, acceso por llave y firewall activo. No es seguridad total —falta monitoreo, actualizaciones y, si aplica, 2FA— pero es la base que todo servidor debería tener desde el minuto uno.

Si estás evaluando contratar tu primer servidor para aplicar esto, arranca por un VPS: tienes el acceso root que estos pasos requieren sin pagar por recursos que aún no usas.