Claves SSH Explicadas: Generación, autenticación, información sobre pares de claves y mucho más
Las claves SSH no sólo mejoran la seguridad, sino que también permiten la automatización de los procesos conectados, el inicio de sesión único (SSO) y la gestión de identidades y accesos a escala que requieren las empresas de hoy en día.
Tabla de Contenidos
¿Qué es una clave SSH?
actualizado el: 01.22.2024
Una clave SSH es una credencial de acceso seguro utilizada en el protocolo Secure Shell (SSH). Los pares de claves SSH utilizan la tecnología de infraestructura de clave pública (PKI), el estándar de oro para la autenticación y el cifrado de identidades digitales, para proporcionar un método de autenticación seguro y escalable.
Dado que el protocolo SSH se utiliza ampliamente para la comunicación en servicios en la nube, entornos de red, herramientas de transferencia de archivos, herramientas de gestión de la configuración y otros servicios dependientes del ordenador, la mayoría de las organizaciones utilizan este tipo de autenticación basada en claves para verificar las identidades y proteger esos servicios de usos no intencionados o ataques maliciosos.
Par de claves - claves pública y privada
Una clave SSH se basa en el uso de dos claves relacionadas pero asimétricas, una clave pública y una clave privada, que juntas crean un par de claves que se utiliza como credencial de acceso seguro. La clave privada es secreta, sólo la conoce el usuario, y debe cifrarse y almacenarse de forma segura. La clave pública puede compartirse libremente con cualquier servidor SSH al que el usuario desee conectarse. Normalmente, estas claves son gestionadas por el equipo informático de una organización o, mejor aún, con la ayuda de una Autoridad de Certificación (CA) de confianza para garantizar que se almacenan de forma segura.
Para crear la identidad digital, se generan tanto la clave pública como la privada, y el par se asocia entre sí mediante un algoritmo criptográfico de clave pública fuerte. Los algoritmos matemáticos más utilizados para la generación de claves son Rivest-Shamir-Adleman (RSA) y el Algoritmo de Firma Digital de Curva Elíptica (ECDSA), que es una aplicación de curva elíptica de DSA.
Estos algoritmos utilizan varios métodos de cálculo para generar combinaciones numéricas aleatorias de longitud variable, de modo que no puedan explotarse con un ataque de fuerza bruta. El tamaño de la clave o la longitud en bits ayuda a determinar la fuerza de la protección. Las claves RSA de 2048 bits o ECDSA de 521 bits ofrecen suficiente fuerza criptográfica para evitar que los hackers descifren el algoritmo.
¿Cómo funcionan las claves SSH?
El par de claves SSH se utiliza para autenticar la identidad de un usuario o proceso que desea acceder a un sistema remoto utilizando el protocolo SSH. Tanto el usuario como el servidor remoto utilizan la clave pública para cifrar los mensajes. En el lado del servidor remoto, se guarda en un archivo de clave pública. Por parte del usuario, se guarda en un software de gestión de claves SSH o en un archivo de su ordenador. La clave privada sólo permanece en el sistema que se utiliza para acceder al servidor remoto y se utiliza para descifrar los mensajes.
Cuando un usuario o proceso solicita una conexión con el servidor remoto utilizando el cliente SSH, se inicia una secuencia desafío-respuesta para completar la autenticación. El servidor SSH reconoce que se está solicitando una conexión y envía una solicitud de desafío cifrada utilizando la información de la clave pública compartida. A continuación, el cliente SSH descifra el mensaje de desafío y responde al servidor. El usuario o proceso debe responder correctamente al desafío para que se le conceda el acceso. Esta secuencia de desafío-respuesta se produce automáticamente entre el cliente SSH y el servidor sin ninguna acción manual por parte del usuario.
Autenticación de clave pública SSH frente a contraseñas
A un alto nivel, las claves SSH funcionan como contraseñas controlando el acceso. Pero ahí es donde termina la similitud. Las identidades digitales deben ser sólidas para que no puedan ser robadas, cómodas para que el acceso sea rápido y nunca se interrumpa, y preparadas para el futuro para que las empresas puedan adelantarse a posibles amenazas.
Las contraseñas solían ofrecer una medida de seguridad, pero ya no son tan eficaces como antes. Esto se debe a que los malos actores se han vuelto cada vez más expertos en robar contraseñas en tránsito por Internet, sustraerlas de repositorios y obtenerlas mediante ataques de fuerza bruta.
Estos riesgos y problemas de seguridad se ven agravados por el factor humano: la gente reutiliza, comparte y olvida continuamente las contraseñas. El coste para las empresas es elevado, no sólo por la pérdida de datos, las interrupciones y el compromiso de la información, sino también porque las contraseñas tardan tiempo en introducirse, requieren importantes recursos de soporte y deben restablecerse con frecuencia.
Gracias a la fuerza criptográfica y a los métodos de autenticación de PKI, las claves SSH no son propensas a ataques maliciosos y las credenciales válidas no quedan expuestas si un servidor se ha visto comprometido. La criptografía PKI se mejora continuamente, lo que protege las identidades frente a amenazas nuevas y cambiantes.
La autenticación mediante clave SSH también es más cómoda que la autenticación mediante contraseña. Las claves conectan usuarios y procesos a un servidor iniciando la autenticación y concediendo el acceso automáticamente, por lo que los usuarios no tienen que recordar o introducir su contraseña para todos y cada uno de los sistemas.
Dicho esto, siempre debes proteger tus claves privadas SSH con una contraseña, o almacenarlas en un token de hardware para mayor seguridad.
Dónde encontrar sus claves SSH
Antes de poder utilizar las claves SSH, deberá comprobar que su cuenta de usuario dispone de ellas y, si no es así, deberá crearlas. Hay varias formas de hacerlo, como utilizar Yubikeys u otras soluciones de seguridad de hardware, que suelen ser la forma más segura de hacerlo. Sin embargo, para una configuración más básica, puedes utilizar el directorio .ssh.
Si optas por utilizar el directorio .ssh, puedes encontrar tu par de claves SSH siguiendo estos pasos:
- Vaya a su directorio personal y busque el directorio SSH. En Linux y MacOS, la ubicación por defecto es el directorio ~/.ssh. En Windows, la ubicación por defecto es C:\Users\<username>\.ssh.
- Busque dos archivos con nombres similares a id_dsa o id_rsa. Uno tendrá la extensión .pub y el otro no (por ejemplo, id_rsa.pub e id_rsa). El archivo .pub es la clave pública y el otro es la clave privada. La clave pública puede no estar siempre presente, ya que no es necesaria en el cliente para funcionar.
Si no encuentra estos archivos en el directorio, o no tiene directorio alguno, entonces tendrá que crear las claves SSH.
Cómo generar un par de claves SSH
Para generar el par de claves SSH pública/privada, se puede hacer manualmente o utilizar un sistema automatizado de gestión de certificados.
Generar y almacenar nuevas claves SSH manualmente puede hacerse en los sistemas operativos más comunes. En los sistemas Windows, pueden generarse utilizando la herramienta de línea de comandos ssh-keygen o un cliente SSH, como PuTTy. En los sistemas MacOs y Linux, se generan utilizando una ventana de terminal.
Para generar una clave SSH, siga los siguientes pasos en la línea de comandos:
- Introduzca el comando key gen $ ssh-keygen -t rsa
- Introduzca el archivo en el que desea guardar las claves. Normalmente, las claves se guardan en el directorio home o ~/.ssh/ (por ejemplo, /home/nombre_de_usuario/.ssh/id_rsa o /c/Usuarios/nombre_de_usuario/.ssh/id_rsa). Pulse Intro una vez elegido el nombre de archivo preferido.
- Introduzca una frase de contraseña o déjela vacía para no introducir ninguna. Nota: La frase de contraseña proporciona una capa adicional de protección de contraseña para el par de claves, pero el usuario debe escribir la frase de contraseña cada vez que se utiliza el par de claves.
Una vez generado el par, el siguiente paso es colocar la clave pública en el servidor remoto. Un administrador del sistema puede copiar la clave pública SSH en el archivo authorized_keys del servidor remoto utilizando el comando ssh-copy-id (por ejemplo, $ ssh-copy-id nombreusuario@direcciónIP). También puede pegar las claves mediante el comando secure shell (por ejemplo, $ cat ~/.ssh/id_rsa.pub | ssh nombre_usuario@dirección IP «mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys»).
Estos pasos le permitirán utilizar el archivo de clave privada para la autenticación SSH.
Configuración de SSH
Puede configurar SSH modificando el archivo de configuración de todo el sistema en el servidor. Generalmente el nombre del archivo es /etc/ssh/sshdc_config.
Una vez que acceda al archivo /etc/ssh/ssh_config, puede utilizarlo para controlar qué usuarios y qué grupos tienen acceso SSH al servidor.
De forma similar, la confi del cliente local se puede hacer en un archivo .ssh/config. A través de este archivo, un usuario puede añadir configuración específica en una base por-host, incluyendo, pero no limitado a, establecer qué clave privada usar para cada servidor, qué nombre de usuario y configurar túneles SSH.
Gestión de claves SSH
La correcta gestión de claves SSH es esencial para las organizaciones, ya que estas claves permiten el acceso a sistemas y datos empresariales de misión crítica. Sin embargo, gestionarlas manualmente puede llevar mucho tiempo y ser propenso a errores. Esto se complica aún más por el hecho de que las organizaciones suelen tener miles, si no millones, de claves almacenadas en todo su entorno. La seguridad que proporcionan puede verse fácilmente socavada si no se aplican y gestionan activamente políticas de configuración, aprovisionamiento y finalización.
Por ejemplo, cuando las claves emitidas ya no son necesarias, como ocurre cuando los empleados abandonan una organización, el personal de TI puede olvidarse de darlas de baja. Descubrir estas claves huérfanas es casi imposible, lo que crea el riesgo de que existan en sistemas que no están estrechamente controlados. Si estas claves huérfanas están desprotegidas, pueden ser robadas por un actor malintencionado, que puede utilizar las credenciales aún activas para acceder a los sistemas y datos críticos de su empresa.
Existen soluciones dedicadas a la gestión de claves SSH que utilizan el programa de ayuda ssh-agent para aprovisionar, configurar y terminar claves. El uso de estas soluciones es significativamente mejor que la gestión manual, pero este enfoque requiere que el ocupado personal de TI utilice otra herramienta de gestión además de sus soluciones administrativas y de seguridad existentes. En su lugar, los equipos de TI deben utilizar una solución de gestión de certificados centralizada que gestione automáticamente todos los certificados basados en PKI. Aprovechar un enfoque singular para la gestión de certificados permite al personal de TI completar todas sus tareas de gestión de claves en un solo panel.