Herramientas

Hardening de SSH en Rocky Linux 9: cómo desactivar KEX débiles y reforzar la seguridad

SSH es una de las piezas más críticas en cualquier servidor Linux. Es la puerta de entrada para la administración remota y, por tanto, uno de los primeros objetivos en auditorías de seguridad o escaneos de vulnerabilidades con herramientas como Nessus u OpenVAS.

Uno de los hallazgos más habituales en estos análisis es el temido “SSH Weak KEX”, que indica que el servidor aún permite algoritmos de intercambio de claves (Key Exchange, KEX) considerados débiles u obsoletos. Aunque el sistema funcione “correctamente”, mantener estos algoritmos activos supone un riesgo innecesario.

En esta entrada veremos, paso a paso, cómo endurecer (hardening) la configuración de SSH en Rocky Linux 9, deshabilitando KEX inseguros y asegurándonos de que el servidor solo acepte algoritmos modernos y robustos, sin comprometer la compatibilidad con clientes actuales.

¿Por qué es importante el intercambio de claves (KEX)?

Antes de entrar en comandos, merece la pena detenerse brevemente en la parte conceptual.

El Key Exchange es el mecanismo que permite a cliente y servidor SSH acordar una clave criptográfica segura al inicio de la conexión. Si este proceso utiliza algoritmos antiguos (por ejemplo, algunos basados en SHA-1), toda la sesión se debilita, aunque el resto de la configuración sea correcta.

Por eso, eliminar KEX obsoletos no es solo “cumplir una auditoría”: es cerrar una puerta real a posibles ataques criptográficos.

Crear un archivo de configuración de hardening

En Rocky Linux 9 (y en el resto de distribuciones basadas en Red Hat Enterprise Linux, así como en sistemas modernos con OpenSSH), el archivo principal de configuración incluye directivas adicionales desde un directorio específico:

Include /etc/ssh/sshd_config.d/*.conf

Esto permite una aproximación mucho más limpia y mantenible: en lugar de modificar directamente sshd_config, podemos crear archivos específicos para cada objetivo.

Creamos nuestro archivo de hardening:

sudo vi /etc/ssh/sshd_config.d/hardening.conf

Y añadimos el siguiente contenido:

# Disable weak key exchange algorithms
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256

Con esta configuración indicamos explícitamente que solo se permiten algoritmos de intercambio de claves seguros y modernos, dejando fuera opciones débiles como diffie-hellman-group1-sha1, que suelen ser las responsables de los avisos en auditorías.

Verificar la sintaxis antes de aplicar los cambios

Hay un paso que nunca debería omitirse cuando se trabaja con SSH: validar la configuración antes de reiniciar el servicio.

sudo sshd -t
  • Si el comando no devuelve ningún mensaje, la configuración es válida.
  • Si aparece algún error, es fundamental corregirlo antes de continuar.

Este pequeño gesto puede ahorrarte un bloqueo remoto del servidor.

Reiniciar el servicio SSH

Una vez validada la configuración, podemos aplicar los cambios:

sudo systemctl restart sshd

⚠️ Importante: no cierres tu sesión SSH actual hasta confirmar que puedes reconectarte correctamente. Una buena práctica consiste en abrir una segunda sesión de prueba antes de dar por finalizado el proceso.

Comprobar los algoritmos KEX activos

Para verificar que SSH está utilizando exactamente los algoritmos que hemos definido:

sshd -T | grep kex

La salida debería ser similar a:

kexalgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256

Esto confirma dos aspectos clave:

  • Los algoritmos débiles han sido eliminados.
  • El servidor sigue siendo compatible con clientes SSH modernos.

Prueba adicional (opcional, pero muy recomendable)

Si quieres ir un paso más allá, puedes comprobar activamente que un KEX débil ya no es aceptado. Desde otra máquina, intenta forzar un algoritmo antiguo:

ssh -oKexAlgorithms=diffie-hellman-group1-sha1 usuario@IP_DEL_SERVIDOR

El resultado esperado es:

no matching key exchange method found

Este mensaje es una buena señal: significa que el servidor rechaza activamente conexiones inseguras.

Conclusiones

Con este sencillo ajuste de hardening:

  • SSH utiliza exclusivamente algoritmos de intercambio de claves seguros.
  • Se eliminan hallazgos habituales como SSH Weak KEX en auditorías.
  • Se mantiene la compatibilidad con clientes actuales.
  • La configuración resulta limpia, mantenible y apta para entornos de producción.

Pequeños cambios como este marcan una gran diferencia en la superficie de ataque de un servidor. Y lo mejor es que, una vez aplicado, se convierte en un problema del que puedes olvidarte durante mucho tiempo.

Nota: La imagen de este artículo fue generada utilizando un modelo de inteligencia artificial.

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

Interés compuesto: la fuerza que multiplica tu dinero (y los errores que la anulan)

“El interés compuesto es la octava maravilla del mundo. El que lo entiende lo gana…

3 días ago

Cómo comparar datos con barras en Matplotlib: agrupadas, apiladas y porcentuales

Tienes los datos de ventas de tres productos en dos años distintos y quieres saber…

5 días ago

Costes hundidos en ciencia de datos: cuándo mantener un modelo y cuándo migrar

Imagina la situación. Tu equipo lleva tres años con un modelo en producción. No es…

1 semana ago

WOE e IV: La Base Matemática del Credit Scoring

Cuando un banco evalúa una solicitud de crédito necesita responder a una pregunta aparentemente simple:…

2 semanas ago

Lanzamiento de la versión 1.0 del laboratorio de Analytics Lane con nuevas herramientas de scoring

En el octavo aniversario de Analytics Lane seguimos ampliando nuestro laboratorio de aplicaciones interactivas y,…

2 semanas ago

¡Analytics Lane cumple ocho años!

Hoy, 2 de mayo de 2026, Analytics Lane cumple exactamente ocho años. Todo empezó con…

2 semanas ago

This website uses cookies.