Estamos transfiriendo archivos a un servidor remoto en nuestra aplicación y el método de autenticación requerido es usar claves SSH.
Entonces, creé mi par de claves usando ssh-keygen y envié mi clave pública para su inserción en el archivo autorizado de claves del host remoto. Sin embargo, esto fue rechazado por IT Security, quien dijo que generarían el par de claves para mí y me enviarían la clave privada. Motivo: "Necesitamos que las claves SSH sean firmadas por el equipo de seguridad de TI. Esto es para garantizar que tengamos alguna ventaja en el seguimiento y la responsabilidad".
Obviamente, tengo problemas con esto. Tener la clave privada generada por otra persona significa que puedo hacer que esa persona se haga pasar por mí sin que yo lo sepa. Estoy tratando de encontrar formas de refutar este argumento.
Hasta donde puedo buscar en Google, no parece haber ninguna forma conocida de firmar las claves, de modo que ayude a rastrear a una persona que inició sesión. El hecho de que haya enviado mi clave pública significa que soy dueño de la clave y que cualquier persona que inicie sesión en el servidor remoto con esa clave se identifica por defecto como yo mismo. ¿Cómo ayudaría la firma? ¿Y cómo firmarían de todos modos?
Alguien por favor dame una pista si me equivoco, ¡gracias!
Ok, ahora que hemos determinado que no hay forma de que las claves SSH puedan firmarse, necesito mostrarle a IT Security cómo pueden realizar un seguimiento de quién ha estado iniciando sesión (supongo que debe ser constructivo, si no es que la alta presunción comienza) ) En mi propio servidor, configuré LogLevel de sshd en DEBUG. Entonces, cuando inicio sesión, puedo ver el siguiente fragmento:
Found matching DSA key: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
Esto parece ser un valor hash. ¿Cómo relaciono esto con la clave pública en el archivo autorizado_claves que se utilizó? Sé que hay otra línea que dice:
debug1: matching key found: file /home/bofh/.ssh/authorized_keys2, line 1
pero esto no es tan útil ya que los números de línea se pueden cambiar fácilmente si tuviera que insertar una clave en la parte superior del archivo, presionando las teclas originales hacia abajo.
¡Gracias!
Respuestas:
En el tiempo transcurrido desde que hizo su pregunta, el universo ha cambiado.
Openssh5.4 agregó soporte para exactamente el tipo de certificados que buscabas. Consulte las notas de la versión en http://www.openssh.org/txt/release-5.4 (y las páginas de manual) para obtener más información, o si realmente quiere estar loco, mire PROTOCOL.certkeys para obtener los detalles sangrientos
fuente
Mi primera impresión al leer su pregunta es que la persona de TI se mezcló con SSH y SSL (debe ser firmado por nosotros) y tampoco comprende cómo funciona realmente la firma SSL.
De todos modos, no hay forma de que se pueda firmar una clave SSH (que yo sepa).
fuente
Algo no está bien en esta solicitud.
Si está entregando archivos firmados al servidor,
esperaría que esto se haga al mínimo.
my-key-private
my-key-pub
para descifrar el archivoHay otras formas de hacer tales cosas.
Sin embargo, obtener un par de claves generado por otra persona es inútil como esquema de autenticación .
Tiene una fuerte implicación que confías en ellos tanto como confías en ti mismo.
Estas son las preguntas iniciales que puede hacerle a su TI.
Si la responsabilidad es una preocupación para la TI,
¿Por qué molestarse con pares de llaves en ese caso?
fuente
No hay ninguna razón por la que no pueda usar certificados X.509 para la autenticación SSH en lugar de claves desnudas; de hecho, ¡preferiría que OpenSSH funcionara de esta manera! Pero, la versión estándar de OpenSSH no lo hace, y es la implementación dominante en estos días.
He visto algunas versiones parcheadas de OpenSSH flotando alrededor, y la implementación comercial de SSH.com también parece admitir la autenticación X.509. Por lo tanto, si su organización está utilizando uno de estos, exigir que las claves estén firmadas por una autoridad central tendría mucho sentido.
Dicho esto, ¡no hay excusa para exigir que la clave privada sea generada por un tercero! Si van por la ruta X.509, deberían hacer que genere un par de claves y una solicitud de firma de certificado, tal como lo haría con cualquier otro certificado X.509 utilizado para SSL, etc.
fuente