SSH: ¿Seguro para que el cliente aloje la clave privada RSA?

10

¿Es seguro generar un par de claves pública / privada en el servidor, agregar la clave pública a la lista de claves autorizadas y luego copiar la clave privada a cada cliente, como se describe aquí ( http://www.rebol.com/docs/ ssh-auto-login.html ) ¿Asumiendo que mantiene un control permanente sobre cada cliente? (es decir, el mismo usuario, muchas computadoras).

El procedimiento típico es generar el par de claves pública / privada en el cliente y luego agregar la clave pública del cliente a la lista de claves autorizadas en el servidor como se describe aquí ( http://www.linuxproblem.org/art_9.html ). Con este método, si tiene varias computadoras cliente, cada una debe concatenarse a la lista autorizada_keys y mantenerse a lo largo del tiempo.

usuario345807
fuente

Respuestas:

22

Felicitaciones, has encontrado un tutorial en Internet con malos consejos.

El problema con el uso de un solo par de claves para múltiples computadoras ocurre cuando cualquiera de las computadoras se ve comprometida. Entonces no tiene más remedio que revocar el par de claves en todas partes y cambiar la clave de cada computadora que estaba usando ese par de claves. Siempre debe usar pares de claves únicos por máquina y por usuario, para limitar el daño que puede causar una clave comprometida.

En cuanto a ese tutorial, es un consejo increíblemente malo generar el par de claves en el servidor y copiar la clave privada al cliente . Esto es completamente al revés. En cambio, el par de claves debe generarse en el cliente y la clave pública debe copiarse en el servidor. Incluso hay un script de ayuda ssh-copy-idque hace exactamente esto, y en el camino se asegura de que todos los permisos sean correctos, el cliente obtiene la clave de host del servidor, etc.

De hecho, puede haber situaciones en las que desee administrar de forma centralizada las claves de identidad de los usuarios, por ejemplo, para scripts automatizados, pero en este caso realmente debería hacerlo desde un tercer host, o idealmente desde un sistema de gestión de configuración como puppet.

Michael Hampton
fuente
2
Además, el usuario de la máquina cliente debe recordar que esta clave en particular no se puede usar de manera segura para ningún otro propósito, ya que no puede saber dónde ha estado la clave privada. Si sabe que la clave secreta se generó en el cliente y nunca abandonó el cliente, generalmente es seguro usar la misma clave para iniciar sesión en diferentes sistemas.
Kasperd
77
Me vino a la mente una analogía con el uso compartido de agujas, pero realmente no estaba seguro de querer llegar tan lejos ...
Michael Hampton
No estoy seguro de cómo conseguirías la parte asimétrica en esa analogía.
Kasperd
1
Bueno ... depende de qué extremo de la aguja estés.
Mircea Vutcovici
3

El mayor problema con el protocolo descrito en ese tutorial es que no especifica cómo "descargar la clave privada a la máquina del cliente" de manera segura (es decir, que evita las escuchas). Si aún no tiene un canal seguro, la clave se transferirá presumiblemente a través de Internet (HTTP, FTP, correo electrónico, etc.). Puede usar HTTPS, pero si no tiene un certificado real, puede ser MITM'd para oler la clave. Solo hazlo como se supone que debes hacerlo; genera el par de claves en la máquina del cliente, transfiere la clave pública al servidor y no olvides verificar una suma de verificación del archivo para asegurarte de que no se haya modificado en la transferencia.

Atsby
fuente