Cómo asegurar un servidor SSH en Ubuntu paso a paso

Aprende paso a paso a proteger tu servidor SSH en Ubuntu con medidas clave contra accesos no autorizados y ataques externos.

La seguridad de SSH es uno de los primeros pasos que cualquier administrador debe abordar al montar un servidor Ubuntu. Un servicio SSH mal configurado es una puerta abierta a ataques de fuerza bruta y accesos no autorizados. Aquí te dejo una guía práctica y directa para blindarlo.

Cambiar el puerto por defecto y deshabilitar root login

El puerto 22 es el primero que escanean los bots. Cambiarlo reduce el ruido de ataques automáticos. Edita el archivo de configuración:

sudo nano /etc/ssh/sshd_config

Busca y modifica estas líneas:

Port 2222
PermitRootLogin no

Elige un puerto alto (por ejemplo, 2222, 9022 o 10022). Luego, reinicia el servicio:

sudo systemctl restart sshd

No olvides abrir ese puerto en tu firewall si usas UFW:

sudo ufw allow 2222/tcp

Usar autenticación con clave pública y deshabilitar contraseñas

Las contraseñas son vulnerables a fuerza bruta. La autenticación por clave RSA/Ed25519 es mucho más segura. En tu máquina local genera un par de claves:

ssh-keygen -t ed25519 -a 100

Luego copia la clave pública al servidor:

ssh-copy-id -p 2222 usuario@tu-servidor

Una vez confirmes que puedes acceder sin contraseña, deshabilita el login por contraseña en /etc/ssh/sshd_config:

PasswordAuthentication no
ChallengeResponseAuthentication no

Reinicia SSH y prueba la conexión antes de cerrar la sesión actual.

Limitar usuarios y usar AllowUsers

Para mayor control, restringe qué usuarios pueden conectarse por SSH. En el mismo archivo de configuración añade:

AllowUsers usuario1 usuario2

Si solo necesitas acceso para un usuario, ponlo directamente. También puedes usar grupos con AllowGroups. Esto evita que cuentas del sistema o invitados tengan acceso SSH aunque tengan contraseña.

Configurar autenticación en dos pasos (2FA) con Google Authenticator

Para un nivel adicional de seguridad, añade un código temporal. Instala el paquete:

sudo apt install libpam-google-authenticator

Ejecuta la configuración para tu usuario:

google-authenticator

Sigue las instrucciones en pantalla: escanea el código QR con tu app de autenticación y guarda los códigos de respaldo. Luego edita /etc/pam.d/sshd y añade al inicio:

auth required pam_google_authenticator.so

Finalmente, en /etc/ssh/sshd_config cambia:

ChallengeResponseAuthentication yes

Y añade al final:

AuthenticationMethods publickey,keyboard-interactive

Reinicia SSH. Ahora necesitarás tu clave privada y el código 2FA para conectarte.

Conclusión

Asegurar SSH no lleva más de 10 minutos y marca una gran diferencia. Cambiar el puerto, usar claves, limitar usuarios y añadir 2FA son medidas sencillas pero efectivas. Aplica estos pasos y tu servidor Ubuntu estará mucho más protegido frente a accesos no deseados.