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:
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.
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:
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.
Usar una Autoridad de Certificación tiene muchos beneficios:
Ahora, veamos cómo se vería la autenticación de certificado SSH entre bastidores.
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.
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"
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:
¿Entonces, Qué esperas? Haga que sus ingenieros trabajen menos y su organización sea más segura hablando con un experto en identidad.