Estamos buscando cambiar a la administración basada en claves de los inicios de sesión SSH, y nos preguntamos si existe algún sistema de administración de claves que nos permita administrar centralmente las claves de acceso en todo el mundo.
Lo ideal es que el sistema permita emitir claves por cliente y revocarlas si es necesario, actualizando las claves de la máquina del servidor sobre la marcha.
¿Alguien sabe de tal sistema, ya sea comercial o de código abierto?
NOTA: Para aclarar, necesitamos la administración de claves para una cantidad bastante grande de servidores en la nube (tipo EC2) y una pequeña cantidad de usuarios de servicios. Supongo que el parche LDAP + sugerido a continuación podría ser el camino a seguir.
Respuestas:
Hay muchas formas de hacerlo. El almacenamiento de claves LDAP se ha mencionado un par de veces, y lo he hecho y funciona, en la medida de lo posible. Sin embargo, LDAP tiene sus propias curiosidades de gestión, que requieren algo de aprendizaje.
Soy un gran admirador de los servidores simples y robustos que tienen dependencias de red externas mínimas para cosas simples como la autenticación de administradores, por lo que me inclino hacia una estrategia de distribución de claves SSH mucho más robusta: tengo el sistema de administración de configuración que se encarga de eso. La clave pública de todos se mantiene en el sistema de gestión de la configuración, y cada vez que la persona necesita poder iniciar sesión, se agrega su clave. El sistema de configuración también sabe eliminar las claves que no están especificadas, por lo que cuando alguien se va o sus claves cambian, es una simple cuestión de eliminar la configuración de la clave y en la próxima ejecución del sistema de configuración, la clave se elimina.
fuente
Los pares de claves deben ser generados por el usuario.
El usuario retiene la mitad privada: nunca debería verla. Si tiene la clave privada de alguien en un formulario donde puede leerla / usarla, está haciendo un error de seguridad.
Se le entrega la mitad pública (por cualquier mecanismo que desee: formulario web, correo electrónico, darme-en-un-CD), para que se centralice como quiera. Algunos lugares almacenan las claves públicas en LDAP. Otros expulsan
authorized_keys
archivos usando su sistema de implementación.En mi entorno, los usuarios que necesitan acceso de shell me dan sus claves públicas. Estas claves se agregan a nuestro sistema LDAP y
sshd
consulta las claves públicas enumeradas para cada usuario para autenticarlas, a través del parche de clave pública LDAP .Cuando alguien necesita agregar una clave adicional o revocar una clave existente, le avisa a un administrador y nosotros nos encargamos de ello. Eventualmente, a medida que escalemos, implementaré un sistema que permita a las personas rotar sus propias claves públicas.
Cada uno de nuestros sitios tiene un par de servidores LDAP, sincronizados con nuestro maestro con replicación LDAP, que mantiene los datos consistentes (y accesibles) en cada ubicación.
Todo lo que he descrito se puede hacer con software de código abierto. También hay productos comerciales que hacen lo mismo.
Debe investigar las opciones disponibles más a fondo y decidir cuál (es) se adapta mejor a su entorno. Si tiene más preguntas (más específicas), probablemente podamos ser más útiles.
fuente
/etc/passwd
y estandarizados/etc/group
(permite que las máquinas funcionen normalmente y que los servicios asociados se inicien / ejecuten incluso si LDAP no está disponible)Los pares de claves no deben generarse en ningún lugar sino en la computadora de cada usuario. Las claves privadas se nombran como tales por una razón.
Dicho esto, pude ver un caso de uso para algún tipo de repositorio centralizado de claves públicas de los usuarios. Una opción sería almacenar claves públicas en OpenLDAP: las versiones recientes de OpenSSH pueden leer claves desde LDAP.
fuente
Sé que esta es una pregunta un poco más antigua, pero Google la devuelve bastante alta cuando busca este tipo de cosas.
Para aquellos de nosotros que buscamos una solución aparte de LDAP, acabo de encontrar el proyecto "SKM": https://sites.google.com/site/jeromeboismartel/code-s-corner/ssh-key-management-with-skimp
fuente
Hay muchas soluciones comerciales y de código abierto excelentes, como Userify [1] (donde trabajo), Universal Key Manager [2], SSH Key Box [3], etc. Depende de cuáles sean sus necesidades y si usted es buscando algo que centralice la administración mientras descentraliza la operación (para que sus servidores no confíen en una autoridad central para iniciar sesión ... en ese caso, es posible que no pueda iniciar sesión en ninguno de sus servidores, si, por ejemplo, su ¡El servidor LDAP está caído!)
https://userify.com
https://www.ssh.com/products/universal-ssh-key-manager/
https://www.sshkeybox.com
Vea también esta discusión sesgada:
https://www.slant.co/topics/8010/~managers-for-ssh-keys
fuente