¿De qué manera aumenta la seguridad de la clave de host SSH?

8

He leído en algunas guías sobre "cómo proteger servidores SSH" que es bueno aumentar ServerKeyBits del valor predeterminado de 768 a 2048.

La mayoría de estas guías parecen ser para el administrador de nivel de principiante / principiante (que soy) para protegerse rápidamente de los intentos de inicio de sesión ssh de la fuerza bruta con guión y cosas así, y estoy tratando de entender el punto de cada medida de seguridad.

He estado leyendo sobre cómo funciona la autenticación basada en clave pública, específicamente para SSH v2. No he visto nada sobre el uso de la clave de host del servidor SSH en el proceso de autenticación del cliente, por lo que quiero decir que se demuestra que el cliente es de confianza.

Parece que solo se utiliza para garantizar que el host al que se está conectando un cliente sea el mismo al que está conectado en el pasado, que no sea un impostor.

Me pregunto, en términos prácticos, por qué es tan importante aumentar la clave de host a 2048. ¿Hace que sea más difícil para un atacante forzar de algún modo la clave de host privada? Incluso si un atacante pudiera descubrir la clave del host privado, para que un cliente o el administrador puedan iniciar sesión en el host falso, ¿cómo beneficiaría eso al atacante?

También se incluye en estas guías la configuración

PasswordAuthentication no

por lo que el usuario ni siquiera debería esperar ingresar una contraseña de todos modos. Si no fueran conscientes de las cosas para ingresar una contraseña cuando normalmente no tienen que hacerlo, ¿no aceptarían ciegamente una clave de host diferente de todos modos? Entonces, si el atacante tenía la contraseña, ¿entonces qué? La autenticación de contraseña está deshabilitada en el servidor de todos modos, por lo que aún no podrían iniciar sesión. Por lo que leí, el atacante no podría obtener ninguna información útil del cliente en el proceso de autenticación, incluso si el cliente confía en el Identidad de los servidores.

Siento que me estoy perdiendo algo importante acerca de cómo funciona la autenticación de clave pública SSH, porque no entiendo por qué es tan importante tener una clave de host larga. ¿Hace que sea más difícil comprometer las credenciales de los clientes de alguna manera? ¿Qué podría suceder realmente si la clave del host privado se ve comprometida?

Gracias

    
pregunta user2726974 09.11.2013 - 04:09
fuente

3 respuestas

10

Hay una pieza crucial de confusión en su pregunta, que las respuestas aquí no indicaron: ServerKeyBits no tiene nada que ver con la clave de host. De hecho, hoy en día es casi irrelevante, ya que solo se aplica a la versión 1 del protocolo SSH, que ha estado obsoleto durante muchos años y ya no debería usarse.

Si está familiarizado con la configuración de un servidor OpenSSH, también debe quedar claro desde el punto de vista operacional que una configuración de configuración sshd no puede aumentar el tamaño de la clave de host, que se encuentra en un archivo en el disco (por ejemplo, / etc / ssh /ssh_host_rsa_key{.pub}) y se genera una vez y por separado.

La "clave de servidor" en el protocolo 1 es una segunda clave RSA, distinta de la clave de host, utilizada para lograr el secreto hacia adelante. Es efímero, generado por el servidor en el inicio, se reemplaza periódicamente (una vez por hora de forma predeterminada) y nunca se escribe en el disco. El cliente cifra la clave de sesión simétrica con la clave del servidor y la envía al servidor; este mensaje se autentica firmándolo con la tecla host. En el protocolo 2, el secreto de reenvío se implementa con Diffie-Hellman en su lugar.

Por lo tanto, una clave de servidor suficientemente fuerte es importante porque si un atacante puede recuperarla, puede leer las sesiones SSH grabadas o manipular las actuales (ya que tiene el cifrado de sesión y las claves MAC). Y como señaló una respuesta anterior, 768 bits para una clave RSA es demasiado corto para los estándares de hoy.

    
respondido por el Richard E. Silverman 08.03.2014 - 08:46
fuente
3

Respuesta corta: La clave de host es la clave pública del servidor, y esta clave se utiliza para establecer un secreto compartido (clave de cifrado simétrico) y, por lo tanto, es importante que sea lo suficientemente fuerte como para estar de pie. Contra el ataque de fuerza bruta.

En detalle: En primer lugar, debe comprender cómo funciona el cifrado asimétrico o el cifrado de clave pública-privada. Cada sistema tiene un par de claves que comprende una clave privada y una pública. Como su nombre lo indica, la clave pública debe publicarse o, en otras palabras, puede distribuirse al mundo sin ninguna implicación de seguridad, mientras que la clave privada debe mantenerse en secreto y solo el sistema puede usarla. El concepto matemático subyacente con esta configuración es, si un mensaje está cifrado con una clave pública, entonces solo se puede descifrar con la clave privada correspondiente y viceversa.

Este cifrado asimétrico se utiliza en el caso de SSH para establecer una sesión segura, que utiliza un cifrado simétrico. La clave de este cifrado simétrico ( K_sys ) se intercambia mediante una clave pública-privada criptográfica. Además, toda la comunicación entre el cliente y el servidor se cifra mediante este K_sys.

Dado que todo el secreto de la comunicación depende del secreto de K_sys , es de suma importancia que el cifrado de la clave pública-privada sea seguro, ya que se utiliza para compartir la clave secreta. Y para garantizar un secreto suficiente, la fortaleza de la clave es uno de los parámetros importantes a considerar. Teniendo

Información adicional: La clave RSA de 768 bits fue Bruteforced con éxito en 2010 y se predijo que con los avances computacionales 1024 bit se debilitará en las próximas década. Por lo tanto, es aconsejable aumentar la fuerza clave a 2048 en un futuro próximo.

    
respondido por el Jor-el 09.11.2013 - 06:25
fuente
0
  

También se incluye en estas guías la configuración

PasswordAuthentication no
     

por lo que el usuario ni siquiera debería esperar ingresar una contraseña de todos modos. Si   eran tan inconscientes de las cosas para ingresar una contraseña cuando usualmente   no tienen que hacerlo, ¿no aceptarían ciegamente una clave de host diferente?   ¿de todas formas? Entonces, si el atacante tenía la contraseña, ¿entonces qué? La autenticación de contraseña está deshabilitada en el servidor de todos modos, por lo que aún no podrían iniciar sesión.

Ese es precisamente el punto de deshabilitar la autenticación de contraseña, por lo que un atacante no puede iniciar sesión si tiene una contraseña de usuario. En particular, está tratando de evitar permitir el acceso a su máquina a través de cuentas de usuario con contraseñas inseguras, por ejemplo. cuentas de prueba.

    
respondido por el Xiong Chiamiov 10.12.2013 - 23:50
fuente

Lea otras preguntas en las etiquetas