Tienes que hacer distinciones importantes: hay claves públicas y claves privadas . Cuando se "almacenan de forma segura", requieren diferentes nociones de "de forma segura".
Cada servidor SSH posee un par de claves pública / privada. Cada servidor debe generar su propio par de claves, y la clave privada nunca debe salir del servidor. La clave pública es pública , lo que significa que todos pueden aprenderla. Cuando te conectas al servidor, esa es una de las primeras cosas que te dice el servidor: su clave pública. Lo grita por toda la red. Cuando se trata de claves públicas SSH y su almacenamiento, la cuestión es realmente la integridad : un cliente SSH dado debe recordar las claves públicas de todos los servidores con los que quiere hablar. a (el archivo $ HOME / .ssh / known_hosts
con los clientes SSH de Linux habituales); el atacante puede querer incluir una clave pública falsa allí, para ejecutar un servidor falso.
Cada cliente SSH puede poseer un par de claves pública / privada: tal clave El servidor utilizará el par para la autenticación del cliente. Si usa la autenticación de cliente basada en contraseña, los clientes no tienen esos pares de claves. Si utiliza la autenticación de cliente basada en claves, cada servidor debe conocer las claves públicas de los "clientes autorizados" (el $ HOME / .ssh / allowed_keys
para las implementaciones de SSH de Linux).
En su caso, tiene 50 clientes SSH hablando con 4000 servidores SSH. Por lo tanto, utilizando el modelo SSH normal, debería asegurarse de que:
- Cada uno de los 50 clientes conozca una copia de las claves públicas para los 4000 servidores.
- Si al utilizar la autenticación de cliente basada en claves, cada uno de los 4000 servidores debe conocer una copia de las 50 claves públicas del cliente.
Dadas estas cifras, los archivos relevantes serán voluminosos y la administración de claves será un problema (si agrega un nuevo cliente, la clave pública del nuevo cliente debe importarse a 4000 servidores, con integridad protegida). Las infraestructuras de clave pública se inventaron para resolver ese problema. Una instancia de OpenSSH "oficial" sin formato no sabe cómo utilizar los certificados X.509; sin embargo, existe una versión modificada (consulte también la pregunta anterior). Con una base de código SSH compatible con X.509, puede ejecutar su propia Autoridad de certificación (p. Ej., La EJBCA de código abierto) y emitir certificados para sus clientes y servidores. De esa manera, el cliente y los servidores SSH se enviarán sus certificados cuando sea necesario, de forma dinámica. Cada máquina solo tendrá que almacenar su propia clave privada y certificado, y también "conocer" el certificado de CA (en el "almacén de confianza" correspondiente). Agregar un nuevo cliente o un nuevo servidor a la mezcla es simplemente emitir un certificado, y el problema de administración se resuelve (o, más bien, trasladado : ahora tiene una PKI que manejar).