Volver al blogCiberseguridad

Hardening de SSH: checklist mínima para servidores expuestos

2 min de lectura

  • ssh
  • hardening
  • linux

SSH es la puerta principal de cualquier servidor. Es también, junto con los paneles web, uno de los servicios más escaneados de internet. Esta checklist resume las medidas con mejor relación esfuerzo/beneficio para un servidor expuesto.

1. Autenticación por clave, no por contraseña

# /etc/ssh/sshd_config
PasswordAuthentication no
KbdInteractiveAuthentication no

La autenticación por contraseña convierte tu servidor en una lotería de fuerza bruta. Con claves (ed25519) ese vector desaparece. Genera la clave antes de desactivar las contraseñas y prueba que el login funciona en una segunda terminal.

2. PermitRootLogin no

Ejecuta las tareas administrativas con un usuario sin privilegios y sudo. Root por SSH multiplica el valor de cualquier clave comprometida.

3. Usa un puerto no estándar (opcional, con matices)

Cambiar el puerto no es seguridad real: es security through obscurity. Sí reduce el ruido de los escaneos automatizados, pero un atacante enfocado lo encontrará igual. Hazlo solo si el ahorro de logs justifica la incomodidad operativa.

4. Fail2ban como red de seguridad

Aunque ya no exista la contraseña como vector, fail2ban penaliza a los clientes que fallan la autenticación repetidamente:

[sshd]
enabled = true
maxretry = 3
bantime = 3600

5. Desactiva lo que no uses

X11Forwarding, AllowTcpForwarding y AgentForwarding solo añaden superficie si no los necesitas. Apágalos y cultiva el hábito de exponer lo mínimo.

6. Monitoriza los intentos

journalctl -u ssh -n 200 | grep -i "failed"

Si nunca ves logs fallidos, algo está mal configurado (o tienes un honeypot muy aburrido).

7. Mantén la versión al día

La mayoría de CVEs críticos de OpenSSH se han mitigado actualizando. Un servidor con openssh viejo es un billete de lotería para el primer exploit público que aparezca.


Esta no es la lista definitiva, pero es el 80% del resultado con el 20% del esfuerzo. Aplica cada medida con un rollback pensado: en SSH, un error de configuración te encierra fuera de tu propio equipo.