Contáctenos

Cómo Funcionan los Certificados SSH

Cómo funcionan los certificados SSH
07 Apr 2021

Como Funcionan los Certificados SSH

En nuestro último blog discutimos la evolución de SSH, que incluye claves SSH y certificados SSH y cómo EZSSH mejora los desafíos. asociado a la gestión SSH, mejora la experiencia del usuario y la seguridad. El propósito de este blog es discutir cómo funcionan los certificados SSH, pero antes de hacerlo, debemos comprender los conceptos básicos de la autenticación de clave pública. La autenticación de clave pública consta de pares de claves criptográficas que tienen una clave pública y una clave privada. Estas dos claves están relacionadas matemáticamente de tal manera que con la clave pública puedes verificar que alguien tiene la clave privada sin conocer la clave privada.

Ahora que lo hemos cubierto, hablemos de cómo funciona SSH. Primero, tiene un servidor y un cliente, el servidor tiene todas las claves públicas que pueden autenticarse en el archivo “authorized_keys”. Cuando un usuario desea autenticarse en el servidor, se realizarán los siguientes pasos (muy simplificados) entre bastidores:

  1. 1. La computadora (o cliente) del usuario envía una lista de todas las claves públicas que tiene el usuario.
  2. 2. El servidor comprueba si alguna de esas claves está en el archivo "authorized_keys".
  3. 3. Si hay una coincidencia, el servidor crea un desafío.
  4. 4. La computadora del usuario usa la clave privada para completar el desafío y enviar la respuesta al servidor.
  5. 5. El servidor valida el valor devuelto, si es válido se inicia la sesión.


Si bien esta es una excelente opción para proteger su servidor doméstico o cualquier punto final en el que algunos ingenieros puedan autenticarse, no escala. Cuando hablamos de escala de la nube, agregar y mantener las claves de las partes autorizadas (generalmente ingenieros, desarrolladores, ingenieros de seguridad, etc.) que podrían necesitar acceso a un servidor, a través de los miles o millones de servidores que una empresa podría tener, se vuelve un trabajo de tiempo completo que queda vacante. Por eso se crearon los Certificados SSH: para facilitar la gestión en grandes empresas.



Cómo Funcionan los Certificados SSH

La principal diferencia entre la autenticación de clave SSH y la autenticación de certificado SSH se reduce a en qué confía un servidor. Como se mencionó en la sección anterior sobre las claves SSH, cada clave debe agregarse a todos los servidores y, como no caducan, también deben eliminarse cuando el ingeniero ya no necesita acceder al punto final. Cuando se utiliza la autenticación de certificado SSH, la clave de la autoridad certificadora es la que confía en el servidor, lo que significa que se confiará en cualquier clave SSH firmada por la clave de la CA. Suena confuso, pero una vez que lo entiendes, te simplifica la vida al resolver todos los problemas que tienen las claves SSH.

Primero hablemos de la experiencia de configuración:

  1. 1. Se crea una Autoridad de Certificación (CA). Este es solo un par de claves SSH que se utilizará para firmar otras claves SSH.
  2. 2. La clave pública de la CA se agrega a un archivo "trusted_ca_keys.pub" en el servidor.
  3. 3. El archivo sshd_config se modifica para considerar el archivo "trusted_ca_keys.pub" como la fuente de verdad para las CA SSH.


Estos pasos hacen que el servidor confíe en cualquier clave SSH firmada por la clave CA de confianza. Esto elimina la necesidad de realizar un ciclo de vida de la clave de cada ingeniero en cada punto final.

Ahora que se confía en la CA, cada ingeniero simplemente tendrá que solicitar su propio certificado. Antes de ver eso, echemos un vistazo a algunas de las propiedades del certificado. Consulte la especificación completa del certificado.


  1. 1. Clave Pública: Esta es la clave pública del ingeniero que querrás firmar.
  2. 2. ID de Clave: Esta es solo una identificación que puede proporcionar como clave. EZSSH usa este campo para agregar la identidad AAD del usuario para facilitar que los equipos de seguridad crucen los registros de auditoría.
  3. 3. Principales Válidos: Estos son los principios de Linux con los que el usuario podrá utilizar ssh. por ejemplo, si desea tener acceso como root, deberá agregar root a esta sección.
  4. 4. Válido Después: Esta es la hora de Unix desde la que es válido; en cualquier momento anterior a esta, el certificado no será aceptado.
  5. 5. Válido Antes: Esta es la fecha de vencimiento, en Keytos configuramos la nuestra en unas pocas horas, pero se puede configurar para que sea tan lejana como desee.
  6. 6. Clave de Firma: Esta es la clave pública de la CA. utilizado por el servidor para validar si la CA es una CA confiable.
  7. 7. Firma: Este es el hash de todos los campos del certificado, firmado por la clave privada de la CA.


Usar una Autoridad de Certificación tiene muchos beneficios:


  1. 1. Solo se debe agregar una clave a cada servidor.
  2. 2. Las claves SSH del usuario ahora tienen fecha de vencimiento.
  3. 3. La CA puede otorgar el acceso suficiente (JEA) al usuario cada vez que éste solicita acceso.
  4. 4. Es más fácil correlacionar cada clave con su propietario.
  5. 5. Si se utilizan certificados a corto plazo, las organizaciones tienen una exposición reducida al robo de claves SSH debido a una mala gestión de las claves SSH.
  6. 6. Incorporación de usuarios más rápida.


Ahora, veamos cómo se vería la autenticación de certificado SSH entre bastidores.


  1. 1. La computadora (o cliente) del usuario envía una lista de todos los certificados que tiene el usuario.
  2. 2. El servidor comprueba si alguno de esos certificados está firmado por una CA en el archivo "trusted_ca_keys.pub".
  3. 3. El servidor comprueba si el certificado es válido (no ha caducado, tiene un principal que puede acceder al servidor, etc.).
  4. 4. Si hay una coincidencia, el servidor crea un desafío.
  5. 5. La computadora del usuario utiliza la clave privada del certificado para completar el desafío y enviar la respuesta al servidor.
  6. 6. El servidor valida el valor devuelto, si es válido se inicia la sesión.


Esto traslada toda la administración de claves de los cientos o miles de servidores y la coloca en una única Autoridad de certificación.



Cómo Crear una CA SSH

Primero, seleccione la máquina que será su autoridad de certificación. Recomendamos configurar una máquina cuyo único propósito sea ser una CA. Esto te ayudará a proteger tus claves de firma, si es posible, también te recomendamos tener tus claves de CA protegidas por un Módulo de Seguridad de Hardware (HSM).


Una vez que haya configurado su máquina, cree su clave CA:


    ssh-keygen -f ca

Ingrese una frase de contraseña segura para proteger su clave privada. Esto creará dos archivos, un archivo “ca” y un archivo “ca.pub”. NO comparta el archivo “ca” con nadie. En él se utiliza su clave privada para firmar sus certificados. Copie ca.pub a todos sus servidores, EZSSH lo guarda en un archivo llamado: “/etc/ssh/trusted_ca_keys.pub” en los servidores. Luego ejecute la siguiente línea en el servidor que está configurando para aceptar certificados de esta CA:


    echo "TrustedUserCAKeys /etc/ssh/trusted_ca_keys.pub" >> /etc/ssh/sshd_config

Esto permitirá que cualquier certificado SSH firmado por esta CA se autentique en este servidor. Ejecute el siguiente comando para reiniciar el servicio ssh en el servidor.


    service ssh restart

Ahora su servidor está listo para aceptar certificados SSH.
Ahora un usuario puede crear una clave SSH usando:


    ssh-keygen 

Esto creará archivos id_rsa e id_rsa.pub en su carpeta .ssh. NUNCA COMPARTA su archivo “id_rsa” con nadie, este contiene su clave privada.
Copie “id_rsa.pub” a la CA. En la CA ejecute lo siguiente:


    ssh-keygen -s ca -I YOURNAME -n root -V +1d -z YOURSERIALNUMBER id_rsa.pub

Esto creará un certificado firmado por su CA. Este certificado tendrá: su nombre como “ID de Clave”, raíz como “Principal Válido” y será válido por 1 día.


Copie id_rsa-cert.pub en la carpeta .ssh del usuario. Ahora que tiene un certificado, podrá autenticarse en su punto final ejecutando


    "ssh root@YOURENDPOINT"



Cómo EZSSH Puede Hacer que su Gestión sea Aún Más Fácil

EZSSH elimina la complejidad de crear y ejecutar su propia CA SSH al ofrecer CA SSH respaldadas por HSM como servicio. Todo lo que tiene que hacer es crear una política especificar quién tiene acceso a los puntos finales, EZSSH creará una nueva CA para su política y también creará scripts que puede ejecutar en sus puntos finales para confiar en la política. Si un usuario necesita acceso al punto final, todo lo que tiene que hacer es ejecutar el siguiente comando:


    "ezssh ssh -e LINUXPRINCIPAL@YOURENDPOINT"

Donde LINUXPRINCIPAL es el principal que el usuario desea utilizar para la autenticación y YOURENDPOINT es el punto final en el que el usuario desea autenticarse. EZSSH:

  1. 1. Utilice la identidad corporativa del usuario para ver si tiene acceso.
  2. 2. Cree una clave SSH de uso único para el usuario.
  3. 3. Solicitar un certificado en nombre del usuario.
  4. 4. Cree un certificado a corto plazo.
  5. 5. SSH el usuario al punto final.


¿Entonces, Qué esperas? Haga que sus ingenieros trabajen menos y su organización sea más segura hablando con un experto en identidad.

También te Puede Interesar