¿Está bien usar la misma contraseña para un inicio de sesión en Linux y la clave privada SSH?

6

Quiero iniciar sesión de forma remota en mi servidor Linux con SSH. La autenticación de clave pública / privada es más segura que la autenticación de contraseña, por lo que deshabilité la autenticación basada en contraseña para SSH en mi servidor Linux.

Ahora todavía necesito proporcionar una frase de contraseña para desbloquear mi clave privada SSH. Para evitar tener que memorizar otra contraseña, ¿puedo usar la misma en la clave privada SSH y en el inicio de sesión del servidor Linux?

En mi caso, el cliente es Windows 7 en un volumen TrueCrypt. Indica si esto es importante para tu respuesta.

    
pregunta Jay Bazuzi 15.02.2012 - 03:46
fuente

4 respuestas

3

Resumen: usar la misma contraseña para diferentes cosas es generalmente una mala idea. Sin embargo, en este caso, donde los dos usos del acceso de control de contraseña al mismo activo, no es tan malo.

Entonces, si alguien puede escuchar a escondidas cuando desbloquea su clave ssh (por ejemplo, mirando por encima del hombro o si ha logrado instalar un keylogger), sabrán su contraseña en su servidor. Si la única forma de iniciar sesión en ese servidor es tener acceso físico o mediante ssh (que tiene las contraseñas deshabilitadas), no se considerará su contraseña comprometida.

Es decir, suponiendo que su contraseña es solo una contraseña de inicio de sesión. De hecho, es bastante común que su contraseña se duplique como un token de autenticación para convertirse en root a través de sudo . Si ese es el caso, entonces un atacante que obtenga la contraseña de su archivo clave ssh, así como el archivo clave, puede escalar inmediatamente su acceso a la cuenta raíz. Si usted es el único administrador en el servidor, no importa mucho, ya que el atacante puede inyectar malware en su cuenta, lo que le permitirá acumularse la próxima vez que se convierta en root. Si hay otros administradores (u otras formas de acceso a la cuenta raíz, como un panel de administración remota), esto elimina la oportunidad para que sus colegas desactiven su cuenta comprometida.

A la inversa, si alguien puede encontrar su contraseña en su servidor, puede desbloquear su archivo de clave ssh. Eso no es una preocupación si solo usa ese archivo de clave ssh (o más generalmente esa contraseña) para acceder a ese servidor. Pero si usa la misma clave ssh para otros servidores, entonces el atacante puede obtener acceso a estos otros servidores con su archivo de clave y la contraseña de ese servidor. Esto solo representa una ganancia si no está utilizando la misma contraseña en los otros servidores.

En general, el uso de la misma contraseña no supondrá una gran diferencia en las situaciones típicas, aparte de un servidor de administrador múltiple en el que puede realizar sudo a raíz.

  

La autenticación de clave pública / privada es más segura que la autenticación de contraseña

Eso es un poco simplista. La autenticación de clave pública utiliza dos factores (el archivo de clave y la contraseña del archivo de clave); Esto es bueno porque requiere más trabajo para que el atacante comprometa ambos factores. Sin embargo, también debe tener en cuenta el riesgo de un compromiso. Por ejemplo, para una clave ssh, un ataque activo en el cliente revelará ambos factores. Si el atacante obtiene una copia del archivo de clave, puede intentar forzar la contraseña sin conexión, por lo que la protección de contraseña en un archivo de clave requiere una contraseña segura, más fuerte que una contraseña que solo puede forzarse mediante ataques en línea (aunque tenga en cuenta que una contraseña solo en línea puede ser sin conexión forzada por la fuerza bruta en algunas circunstancias, por ejemplo, si el atacante obtiene una copia de seguridad del sistema).

Usar una contraseña para ssh no es incorrecto per se , si se puede garantizar que no se puede adivinar. Los usuarios típicos son malos en la elección de contraseñas que no se pueden adivinar, que no son una simple variación en su cumpleaños o el nombre de su novia. Si tiene una buena contraseña (generada aleatoriamente con una cantidad de entropía que puede evaluar y que le satisface), está bien habilitar la autenticación de la contraseña si no escribe su contraseña en un lugar donde será escuchada.

Entonces, si su contraseña de inicio de sesión es solo una contraseña de inicio de sesión, puede combinar una clave pública ssh para mayor comodidad y resistencia a la navegación por los hombros, con una contraseña segura que no recuerde guardar en un lugar seguro y que pueda usar en privado en emergencias (como la pérdida de la máquina de su cliente y la dificultad para acceder rápidamente a sus copias de seguridad). Si su contraseña de inicio de sesión se duplica como una contraseña sudo , deberá recordarla.

Si solo guarda el archivo de clave en un volumen cifrado (al que solo usted puede acceder), no necesita cifrar la clave en absoluto. Recuerda cifrar las copias de seguridad también.

    
respondido por el Gilles 15.02.2012 - 06:16
fuente
2

Responder a la pregunta que hiciste. Reutilizar la misma frase de contraseña para estos dos propósitos es razonable, dado que controlas tanto el servidor Linux (donde se usa como contraseña de inicio de sesión) como el Windows cliente (donde se usa para desbloquear la clave privada SSH), y suponiendo que mantenga ambas máquinas relativamente seguras.

Los puristas dirán que nunca se debe reutilizar una contraseña. En teoría, este es un buen consejo. Pero no tiene en cuenta las compensaciones y no tiene en cuenta la naturaleza humana. Somos humanos nuestra capacidad para memorizar contraseñas complejas y sin sentido es limitada. Una cosa es memorizar una sola frase de contraseña que sea larga y fuerte. Es más difícil memorizar dos e imposible memorizar 100. Si tomamos en serio el consejo de "nunca reutilizar una contraseña", entonces necesitaríamos tener docenas, posiblemente cientos, de contraseñas y, dada la naturaleza humana, la consecuencia sería que cada una de esas contraseñas sería inevitablemente más débil. Todos ellos pueden ser cortos, o predecibles, o ligeras variaciones en la misma frase. Y podría decirse que es una situación peor que elegir una sola frase de contraseña muy fuerte y reutilizarla en este escenario.

Entonces, si puedes encontrar una manera de memorizarlas con dos frases de contraseña diferentes sin comprometer su fuerza, ese es el curso más seguro. Si puede escribirlos en algún lugar donde nadie más tenga acceso (¿quizás en un papelito en su billetera?), Eso es perfectamente razonable.

Pero si te encuentras incapaz de memorizar dos frases de contraseña largas y fuertes, si te sientes torpe de las frases de contraseña, así que puedes recordarlas, no es irrazonable, en mi opinión, usar la misma frase de contraseña. para ambos fines. Sí abre algunos riesgos. Por ejemplo, si alguien ingresa a su servidor de Linux y rompe los hash de la contraseña, luego ingresa a su cliente de Windows y roba una copia encriptada de su clave privada, podrá descifrarla. O, si obtienen un keylogger en su cliente de Windows y pueden grabar su frase de contraseña SSH, podrán ingresar a su servidor SSH. Sin embargo, esos riesgos pueden ser aceptables, a cambio de tener una frase de contraseña fuerte.

Una respuesta aún mejor. Sin embargo, creo que hay una respuesta aún mejor que es posible que no hayas reconocido todavía. Si está utilizando SSH para iniciar sesión en su servidor Linux, ¡no necesita una contraseña para su servidor Linux! Puede agregar su clave pública SSH a su archivo ~/.ssh/authorized_keys y luego iniciar sesión usando la autenticación de clave pública. En ese momento, no necesita una contraseña para iniciar sesión en el servidor Linux. Ahora solo tiene una frase de contraseña que debe recordar: la que desbloquee su frase de contraseña SSH.

Personalmente, creo que esta es la mejor respuesta de todas. La autenticación de clave pública SSH es más segura que la autenticación basada en contraseña. Por lo tanto, esta es mi recomendación.

(OK, OK, es posible que necesite una contraseña para la cuenta raíz de su servidor Linux y otras cuentas, pero le sugiero que elija una muy larga y aleatoria, una que nunca intentará memorizar, y luego escríbalo, ciérrelo en un sobre y guárdelo en un lugar seguro. Nunca usará esa contraseña. Solo existe como una copia de seguridad, en caso de que quede bloqueado fuera del servidor. Ya que nunca planea usarla de manera ordinaria use, no necesita ser memorizable, puede ser tan largo y fuerte como desee, y puede ser totalmente diferente de todas las frases de contraseña que usa con frecuencia.)

    
respondido por el D.W. 20.02.2012 - 01:42
fuente
1

Los vectores de ataque son diferentes. Los ataques locales no tienen bloqueo automático, registro, informe o retraso. Debido a que una clave será atacada localmente, una clave debe ser protegida con una contraseña más compleja.

Utilizo KeePass para almacenar mis frases de contraseña, una contraseña única, larga y difícil para proteger KeePass, y una contraseña diferente única, larga y difícil para mi volumen de TrueCrypt.

Encripté mis claves privadas para proteger a las personas que obtienen la base de datos de claves a través de la red. TrueCrypt solo protege mi disco contra el acceso físico.

Compartir contraseñas es un mal hábito.

    
respondido por el mgjk 15.02.2012 - 18:24
fuente
0

Si tiene privilegios de administrador en el servidor de destino, es arriesgado reutilizar la contraseña de inicio de sesión para la frase clave de acceso. Ahora, dependiendo de la fortaleza de la contraseña / contraseña, el riesgo debido a la reutilización puede ser pequeño y vale la pena el beneficio, pero existe un riesgo adicional.

La intrusión exitosa del sistema incluye tanto el inicio de sesión como el acceso de raíz. Al mantener la contraseña de la clave privada separada de la contraseña del sistema, reduce el riesgo de que un intruso haga más daño si él / ella ingresa al sistema a través de una clave privada robada.

Tenga en cuenta que, incluso si usa una contraseña / contraseña idénticas, la frase de contraseña es más vulnerable que la contraseña del sistema, simplemente porque pueden ser atacadas sin conexión. Al descifrar su clave privada que usa contraseñas de sistema, los atacantes también tendrían privilegios de administrador para el servidor de destino. Con una clave privada robada, los atacantes tienen el tiempo y la privacidad de su lado.

Por otra parte, el inicio de sesión con una clave privada sin reutilizar la contraseña del sistema aún dejaría al intruso en la necesidad de atacar la contraseña del sistema desde el servidor de destino. Y se puede detectar un ataque de fuerza bruta o incluso diccionario de la contraseña / inicio de sesión del sistema, siempre que se implementen las herramientas de monitoreo.

    
respondido por el codechimp 13.12.2016 - 21:37
fuente

Lea otras preguntas en las etiquetas