¿Existe algún riesgo al intentar la autenticación ssh en un servidor no autorizado?

6

Supongamos que estoy a punto de conectarme a un servidor nuevo (no autenticado para mí). Anteriormente proporcioné mi clave pública ssh al propietario del servidor (quien la llena en el archivo authorized_keys apropiado). El propietario del servidor no puede proporcionarme de forma segura la información de la clave pública del host por adelantado y dice que siempre que mi clave pública sea conocida solo nosotros, la seguridad se mantendrá .

Además del caso en el que un servidor no autorizado también / ya tiene mi clave pública, existe la posibilidad de que divulgue mis credenciales (o comprometa la seguridad) si mi sesión ssh a este servidor no autenticado está dirigida (desde el principio) a ¿Un servidor malicioso (por ejemplo, uno que actúa como MiTM)? Algunas de las respuestas aquí parecen sugerir que existe un problema potencial, quizás dependiendo de la versión de SSH utilizada ?

    
pregunta jhfrontz 06.09.2018 - 16:55
fuente

3 respuestas

5

En los comentarios, OP separó su pregunta original en dos preguntas diferentes, la primera de las cuales ya fue respondida, como se señaló en los comentarios.

Pregunta 1:

  

la clave pública del cliente puede usarse para autenticar el servidor

La respuesta es no. (Consulte, ¿Git usa las claves de usuario ssh o las claves de implementación del repositorio para el cifrado? ).

Pregunta 2:

  

¿Hay algún daño en ser promiscuo con sus intentos de autenticación (por ejemplo, intentar autenticarse en un servidor conocido pero potencialmente hostil usando las credenciales de cliente destinadas a otro servidor)?

El daño puede significar varias cosas. Pero, creo que OP pregunta si simplemente intentar autenticar utilizando las claves ssh en un servidor no autorizado filtrará de alguna manera información sobre su clave privada (almacenada solo en su máquina cliente).

Con esta definición de "daño" la respuesta es no.

Cuando intente autenticarse en un servidor no autorizado, recibirá la clave pública de ese servidor (en su certificado). Esto le permitirá autenticar el servidor y verá que está malicioso y no se conecta. Por lo tanto, esto no expone su clave privada de ninguna manera.

Pero, ¿qué pasa con el caso en el que intentas conectarte al servidor rogue? Supongamos que el servidor rogue tiene su clave pública. En este caso, aún no pierde su clave privada al intentar conectarse, ya que es la clave pública (ssh) que utiliza el servidor malintencionado para autenticar usted . El servidor malintencionado puede enviarle a usted un desafío cifrado con su clave pública. Luego puedes descifrarlo con tu clave privada y probar que eres quien dices que eres. Solo devuelve el desafío descifrado, no envía su clave privada ni ninguna información sobre su clave privada. Y esto no debería filtrar ninguna información sobre su clave privada (con la advertencia de que asumo que la clave pública moderna encriptada como RSA y / o ssh no está rota).

También me gustaría enfatizar el hecho de que asumo que la pregunta solo está dirigida a los intentos de conexión. No estoy considerando el hecho de que un servidor no autorizado pueda falsificar a un usuario / pasar el inicio de sesión y cosechar sus credenciales de esa manera, o algún otro comportamiento malicioso, como registrar su IP para un ataque de represalia posterior, etc.

    
respondido por el hft 06.09.2018 - 20:05
fuente
3

Si no tiene la clave de host, otro servidor puede pretender ser el servidor en el que está intentando iniciar sesión. Esto podría ser un problema si envía información confidencial a través del enlace antes de darse cuenta de que ha iniciado sesión en el servidor incorrecto.

También debes tener cuidado de tener habilitado el reenvío X11 o, peor aún, reenvío ssh-agent. Con el reenvío de ssh-agent habilitado (y un agente en ejecución), un servidor no autorizado puede realizar un ataque MitM completo al iniciar sesión en el servidor real con su propia clave y supervisar todo lo que haga allí.

Lo ideal sería utilizar cualquier mecanismo en el que confiara para obtener su clave para que el administrador del sistema también incluya la clave de host en sus hosts conocidos antes de intentar una conexión.

    
respondido por el William Hay 07.09.2018 - 00:04
fuente
1

Por su pregunta, parece que está usando si el servidor conoce su clave pública como parte de la autenticación o no. Estás utilizando una clave pública como secreto privado . El punto obvio es "¿Qué sucede si se conecta a un servidor ssh que está configurado para aceptar (y registrar) cualquier clave pública?".

Más en general, cada vez que utilice un mecanismo de seguridad de una forma diferente a la prevista, esto debería provocar una señal de alerta. Ampliaré la cita de @ AndrolGenhald de esta respuesta :

  

Las claves públicas se llaman públicas por una razón, nunca debe asumir que son privadas, incluso si las generó para agregarlas a GitLab a través de HTTPS y no utilízalo en cualquier otro lugar.

Hay formas en que su clave pública podría filtrarse:

  • Podría conectarse al servidor ssh incorrecto por accidente, enviando así su clave pública.
  • Al conectarse al servidor real, el hardware de red intermedio podría estar registrando el tráfico y, por lo tanto, registrando su clave pública.
  • En el disco, las claves privadas ssh suelen estar cifradas con contraseña, pero las claves públicas no lo están, lo que aumenta el riesgo de que su clave pública se retire.
respondido por el Mike Ounsworth 07.09.2018 - 00:22
fuente

Lea otras preguntas en las etiquetas