Tenemos muchos sistemas diferentes que son administrados por varias personas. Hemos optado por utilizar la autenticación de clave pública SSH para acceder a esos sistemas. Esto funciona muy bien, ya que no es necesario administrar o compartir las contraseñas de las cuentas administrativas, no es necesario recordar las contraseñas de los diversos sistemas (solo la frase de contraseña de su clave privada), no es necesario interactuar (ingresar la contraseña) con cada comando remoto .
El problema es que las claves públicas instaladas en los sistemas deben administrarse de alguna manera. Las personas van y vienen, las claves pueden verse comprometidas, las responsabilidades cambian (una persona autorizada para ingresar a un sistema hoy puede estar autorizada para acceder a uno diferente mañana). Actualmente lo gestionamos editando manualmente archivos ~ / .ssh / Authorized_keys en cada cuenta que lo necesite, pero eso es mucho trabajo y es propenso a errores.
¿Existe alguna herramienta lista para administrar claves públicas en tal escenario? ¿Tienes tus propias soluciones? ¿O es que toda la idea de administrar sistemas de esta manera es defectuosa?
fuente
Respuestas:
Como ya se mencionó en pulegium, cualquier software genérico de administración de configuración como Puppet , Chef , Bcfg2 o cfengine podría realizar la tarea.
Dado que el archivo Authorized_keys no es tan complicado, también puede usar rsync o un (D) SCM como git o hg para administrar este archivo. Tiene el archivo "maestro" en uno de sus servidores y lo sirve a través de rsync / git / hg / .... En todos los demás servidores, ejecuta un trabajo cron que recupera periódicamente la copia maestra (si se modificó) y la copia en la ubicación local correcta. Diablos, esto incluso funcionaría con HTTP o FTP puro.
La conclusión es: tener una copia "maestra" de su archivo autorizado_claves y actualizarla. Deje que los "clientes" (las computadoras, que deben tener el archivo autorizado de claves actualizadas) lo traigan de su servidor maestro y lo implementen localmente.
fuente
Hay un parche disponible para OpenSSH que le permite usar claves públicas de un servidor LDAP, pero esto solo tiene sentido si sus verificaciones de autenticación / cuenta también se realizan en ese servidor LDAP (que es cómo está configurado mi entorno). Además, es tan seguro como su configuración LDAP (por lo que desea utilizar SSL y claves de verificación).
Consulte http://code.google.com/p/openssh-lpk/ para ver el parche y más detalles. No conozco ningún sistema operativo que se envíe con este parche de forma predeterminada, pero si está ejecutando FreeBSD, es un parche opcional si utiliza OpenSSH desde los puertos.
fuente
ejecuto una solución muy fácil, que hace lo mismo con las reglas de firewall
archivo de ejemplo hosts.conf:
distribuir.sh:
esa es toda la magia :-)
fuente
Actualmente estoy revisando SSH KeyDB . Está destinado a hacer exactamente eso, administrar roles, servidores y usuarios, distribuir claves de usuario, recopilar claves de host, etc. Incluso tiene algo llamado "ubicaciones".
Todavía no lo he resuelto todo y no estoy seguro de si está funcionando completamente. Sin embargo, el código está en Python y parece ser bastante manejable, por lo que no debería ser demasiado difícil desempolvarlo y hacerlo funcionar.
fuente
No estoy seguro de lo que quieres decir con muchos, ni sé si estás dispuesto a cambiar, pero Kerberos es el droide que estás buscando. Eso resolverá sus problemas con elegancia y autenticará tanto a las personas como a las máquinas.
fuente
Tiene dos (que generalmente se convierten en 3) problemas diferentes que está tratando de resolver:
La autenticación de clave pública es una forma correcta de autenticar a veces, pero no aborda la autorización en absoluto. No me gusta la autenticación de clave pública, ya que es muy fácil comprometerla (especialmente internamente) a menos que tenga algunos buenos controles.
Ahí es donde entran en juego soluciones como Kerberos. En el mundo de Windows, Active Directory resuelve este problema. En el mundo de Unix, hay una gran cantidad de opciones, lo que es bueno y malo.
Verificaría el proyecto Red Hat FreeIPA , que es un paquete de software que facilita la instalación y ejecución rápida de un sistema Kerberos / LDAP / DNS tipo AD.
fuente
Puede usar Bcfg2 con bcfg2-accounts para distribuir
authorized_keys
. Como beneficio adicional, tendrá la capacidad de controlar usuarios y grupos.Bcfg2 también permite un mantenimiento
/etc/ssh/ssh_known_hosts
sin problemas con SSHbase .fuente
También hay SKM
fuente