Si alguien ha pasado suficiente tiempo en un entorno de TI, es muy probable que se encuentre con el término claves SSH. Las claves Secure Shell (SSH) son una credencial de acceso que se utiliza en el protocolo SSH para plataformas modernas de infraestructura como servicio (IaaS) como AWS, Google Cloud y Azure.
¿Qué son las claves SSH?
Las claves SSH vienen en varios tamaños, aunque la opción más popular es el cifrado RSA de 2048 bits. Es comparable a una contraseña de 617 dígitos. La generación de un par de claves SSH varía según el sistema operativo. En Windows, se puede generar descargando y usando un cliente SSH como PuTTY, mientras que en Mac y Linux se puede usar una ventana de terminal.
Las claves SSH siempre están disponibles en pares, que consisten en una clave pública y una clave privada. Existen tres tipos diferentes de claves, según quién o qué las posea:
-
Clave de usuario
Si las claves privadas y públicas permanecen con el usuario, entonces este conjunto de claves SSH se denomina Claves de Usuario.
-
Clave de host
Si las claves privadas y públicas están en el sistema remoto, ese par de claves se denominará claves de host.
-
Clave de sesión
Este tipo de clave se utiliza cuando se va a transmitir una gran cantidad de datos y es necesario cifrarlos.
¿Cómo funciona la autenticación de clave SSH?
Tras generar correctamente un par de claves, se le solicitará al usuario que introduzca el nombre de usuario SSH y la dirección IP del sistema remoto. Este nombre de usuario y el protocolo indicarán al servidor remoto qué clave pública se necesita para autenticar al usuario. Posteriormente, el servidor remoto usará la clave pública disponible para cifrar un mensaje de desafío que se envía al cliente y que se descifra con la clave privada del sistema del usuario.
Tras este proceso, una vez descifrado el mensaje, se combina con un ID de sesión previamente recopilado y se envía de vuelta al servidor. Solo si el mensaje coincide con el servidor, el cliente se autentica y obtiene acceso al servidor remoto. Lo más importante es asegurar la correcta gestión de estas claves SSH.
Administrar claves SSH
Se utilizan millones de claves SSH para otorgar acceso a diversos activos digitales, principalmente por parte de empresas de la lista Fortune 500. Por lo tanto, un sistema eficaz de gestión de claves SSH contribuiría significativamente a reducir los riesgos de seguridad. Existen diversas opciones para controlar las claves SSH, tanto en entornos de desarrollo como de producción. Esto implica que el usuario debe gestionar el proveedor de SSO, un servicio de directorio y diversas soluciones de gestión del sistema.
Riesgos asociados con las claves SSH
Existen muchos riesgos o vulnerabilidades relacionadas con las claves SSH, pero algunas vulnerabilidades son críticas y no deben ignorarse:
Problemas con el seguimiento de claves SSH
Una gran empresa puede tener más de un millón de claves SSH, y es prácticamente imposible rastrearlas o administrarlas. Esto ocurre porque los usuarios finales pueden crear nuevas claves SSH o duplicarlas sin mayor dificultad, a diferencia de los certificados o las contraseñas. Una vez recopilada una gran cantidad de claves SSH, resulta difícil rastrear estas credenciales cuando los servidores de desarrollo se migran a entornos de producción o cuando un empleado deja la organización sin cambiar su clave. Estas claves SSH no contabilizadas pueden proporcionar a los atacantes acceso con privilegios a largo plazo a los recursos corporativos. En ocasiones, estos atacantes incluso pueden tener una red de entrada permanente suplantando la identidad del usuario con la clave SSH real.
Compartir claves SSH es un problema
Para mayor eficiencia, las claves SSH suelen compartirse o duplicarse entre empleados o servidores. Debido a esta duplicación, una sola clave SSH puede tener múltiples instancias que otorgan acceso a todas las máquinas de una empresa. Esto puede facilitar el trabajo de los usuarios, pero también facilita la vida de los atacantes a largo plazo. La duplicación de claves SSH crea claves privadas y públicas complejas, de muchos a muchos, lo que reduce la seguridad, ya que es difícil rotarlas y revocarlas sin la misma huella de clave adecuada. Compartir claves es peligroso porque reduce la audibilidad y el no repudio.
Claves SSH estáticas
Rotar más de un millón de claves SSH no es tarea fácil. Muchos administradores de TI rara vez cambian o redistribuyen las claves por temor a que un componente o empleado crítico pueda pasar algo por alto. Estos factores provocan un aumento repentino de claves SSH estáticas, lo que, en cierto modo, lleva a los atacantes a comprometer una clave sin cambios, usarla o moverse lateralmente por la organización y obtener acceso a activos críticos o sensibles.
Claves SSH integradas
Las claves SSH suelen estar incrustadas en una aplicación o script, lo que dificulta mucho su modificación, ya que el código y las claves incrustadas tienen cierto nivel de coordinación para evitar fallos en el sistema. Esto puede generar puertas traseras para los atacantes, a través de estas claves SSH incrustadas en aplicaciones, código y scripts.
Configuración de SSH débil
Las implementaciones de cliente y servidor SSH, como OpenSSH, incluyen algunos parámetros de configuración específicos que los administradores de TI pasan por alto. Optar por configuraciones predeterminadas, como el reenvío de puertos, aumenta considerablemente los riesgos de seguridad.
Vulnerabilidades de seguridad de SSH
Existen algunas vulnerabilidades relacionadas con las medidas de seguridad como:
-
Ataques de fuerza bruta y malware
Los atacantes apuntan a las claves SSH para obtener movimiento lateral dentro de una empresa, lanzan ataques de fuerza bruta y ataques de malware mediante la creación de puertas traseras.
-
Secuestro de sesiones SSH y acceso no autorizado
Los atacantes pueden secuestrar la sesión SSH de un usuario explotando la comunicación de confianza establecida entre varios sistemas. Esto se logra secuestrando o obteniendo acceso no autorizado al socket del usuario. Por eso es mejor evitar las configuraciones predeterminadas, ya que comprometen el acceso de usuarios privilegiados.
Mitigar los ataques de seguridad SSH
Si bien existen muchas vulnerabilidades relacionadas con la administración de claves SSH, también hay formas de prevenirlas:
-
Descubra y mapee claves
El usuario necesita descubrir servidores SSH, certificados y claves privadas que tengan la autorización para otorgar acceso SSH. Los escaneos frecuentes de la red y el uso de herramientas de descubrimiento para localizar y mantener la ruta centralizada también son cruciales. Además, es importante mapear la relación clave-usuario.
-
Controlar las claves y el acceso SSH
Es recomendable implementar políticas y prácticas de gestión de claves SSH para generar nuevas claves y eliminar las no utilizadas. El usuario puede usar los servicios de directorio para asignar los niveles de autorización necesarios para acceder a las credenciales SSH.
-
Deshabilitar el inicio de sesión root
La cuenta de usuario raíz es la principal y permite el acceso completo a cualquier sistema UNIX. Los atacantes utilizan esta cuenta de usuario raíz para obtener acceso ilimitado a sistemas críticos.
Conclusión
Si los administradores de TI mantienen registros de auditoría adecuados para garantizar que todas las claves en uso cumplan con las políticas, esto puede generar transparencia y se pueden realizar modificaciones adecuadas para la generación y rotación de claves.
