Hash (maestro + nombre de host) esquema de contraseña para un grupo de servidores

8

Administro más de 20 servidores Linux y estoy considerando usar un esquema md5 similar al siguiente para generar las contraseñas de administrador:

echo 'masterpassword' 'serverhostname' | md5sum

Lo que devuelve 4db2430f9b5f788077fd36636002e391 utilizando el ejemplo anterior.

Mi pregunta es: dado que siempre coloco un espacio antes del comando para mantener el comando fuera de mi historial de bash, ¿ves algún problema con este esquema?

No recuerdo dónde leí acerca de cómo hacerlo de esta manera, pero suena como una buena idea y quería un comentario antes de hacerlo oficial y agregarlo a mi plan de DR.

Nota: tenga en cuenta que esto es solo un esquema para generar una contraseña. por ejemplo, echo -n 'M4M@st3rPa$$W0rd' 'www.domain.com.1' | md5 genera a7c2dc2a7a2a1d277353e1fb814f57f1 , que sería la contraseña real. Uno de mis desafíos es que recibo ayuda de un proveedor de servicios administrados y, en caso de emergencias, es posible que tenga que darles el acceso de ssh a un servidor y necesitaba una manera de recordar fácilmente las contraseñas seguras mientras estoy en la carretera.

    
pregunta InChargeOfIT 23.02.2012 - 20:57
fuente

4 respuestas

8

Algunas ideas:

  • Use un esquema que le permita "cambiar" fácilmente las contraseñas a un valor sucesivo para cuando se deben cambiar las contraseñas. Si alguna vez necesita darle a alguien su contraseña de servidor (lo que ocurre en ciertos tipos de emergencias), entonces querrá cambiar la contraseña para revocar el acceso. No te bloquees para mantener una contraseña que no puedas cambiar fácilmente.

  • No use contraseñas para las interacciones diarias con el servidor. Las claves SSH son categóricamente mejores, especialmente cuando tienes muchos servidores para administrar. Aprenda a usar un agente de clave ssh ( ssh-add en * nix, y pageant en windows), que le ayuda a simplificar la administración de claves y no le da ninguna excusa para no cifrar su clave privada.

  • También, LastPass. No es realmente relevante para ssh y las contraseñas de root, pero si está administrando muchos servidores, probablemente estará poniendo muchas contraseñas en los navegadores. Esto es seguro y reduce su incentivo para reutilizar las contraseñas.

Como nota de implementación, solo quería señalar que la entrada de hash tiene un \n implícito al final que se pone ahí por echo . Entonces, si alguna vez intentas replicar la contraseña en Perl o usar alguna otra herramienta, tenlo en cuenta. Alternativamente: echo -n 'foo' 'bar' | md5sum . Ver también: echo $(</root/secret.txt) "hostname" | md5sum

    
respondido por el tylerl 24.02.2012 - 07:21
fuente
4
  • El nombre de host del servidor no es un secreto
  • MD5 está esencialmente comprometido (https://en.wikipedia.org/wiki/MD5#Security). No estoy seguro de si las debilidades particulares de MD5 se pueden explotar en este escenario, ya que son en su mayoría vulnerabilidades de colisión.

El problema que está tratando de resolver, recordando más de 20 contraseñas de root, se puede resolver de manera más segura usando una de las siguientes rutinas:

  • Use la autenticación de clave ssh en lugar de contraseñas (pero asegúrese de tener una buena frase de contraseña para sus claves); Esto no solo es más seguro, sino que también puede revocar el acceso a cualquier clave en cualquier momento simplemente eliminando la clave de acceso del servidor. Este es, de lejos, el mejor método que se me ocurre.
  • Genere contraseñas aleatorias (cat algunos bytes de / dev / random, masajee en el material de la contraseña) y guárdelas en un archivo cifrado que lleva consigo. El cifrado GPG con una buena clave y frase de contraseña debe hacer el truco; dado que GPG por defecto descifra a stdout, el riesgo de dejar las contraseñas en un archivo no cifrado accidentalmente o su historial es pequeño; Por supuesto, permanecerá en el buffer de línea de su terminal. Obviamente, esto significa que debe tener su clave privada a mano cuando necesite descifrar ese archivo.
  • Utilice una solución de contraseña única de terceros como LastPass. Sin embargo, esta es solo una opción si confía en la solución de terceros.
respondido por el tdammers 24.02.2012 - 12:42
fuente
1

Este riesgo principal que veo es este. Los 'nombres de servidor' no son (muy probablemente) información secreta, por lo que si la contraseña maestra está comprometida, entonces todos lo son.

EDIT : además, parece que tu 'contraseña maestra' no es aleatoria. No menciona si tiene alguna regla para elegirla (como la longitud, los tipos de caracteres, etc.)

Si usa contraseñas, debe hacerlas de alta entropía y resistentes a los ataques de adivinación de contraseñas y diccionarios. Lo mejor sería generar una contraseña aleatoria de longitud máxima sobre el conjunto de caracteres completo, y seguir las directrices NIST para crear un contraseña de alta entropía.

    
respondido por el Mark Beadles 24.02.2012 - 00:52
fuente
-3

El primer "problema brillante" que veo aquí es que este esquema no utiliza el conjunto completo de caracteres ASCII. La entropía no es tan buena como podría ser (consulte fortaleza de la contraseña ).

Esto lleva directamente a la segunda cuestión. passwordmeter me dice que la clave de hash para "1234" ( e7df7cd2ca07f4f1ab415d457a6e1c13 ) tiene la misma fuerza que para "Hasta ahora, y gracias Para todos los peces "( 8121c5d059fd0a23dc7a436c56085188 ). Por lo tanto, su contraseña maestra puede ser simple, como una fecha de nacimiento o un código PIN de tarjeta chip, o compleja, sin ganar más entropía.

EDITAR:

Entiendo a los críticos y los downvotes. Lo siento, mi publicación no estaba completa. El malentendido es que no quise decir la clave hash para ser utilizada directamente como contraseña, sino como la contraseña para los volúmenes TrueCrypt, o GnuPG. Como TrueCrypt usa PBKDF-2 para almacenar claves internamente, por ejemplo, debería ser imposible para un atacante encontrar esta clave. Tenga en cuenta también que es imposible calcular previamente y almacenar todas las sumas MD5, incluso las primeras 2 ^ 64. Y MD5 es solo un ejemplo; en la práctica, prefiere usar SHA-1 o SHA-256.

Por otra parte, usted (y solo usted) puede reproducir fácilmente la clave. Incluso puede darle la contraseña simple a un amigo: siempre que nadie sepa el algoritmo / sal que aplica, la contraseña debería ser inútil. Una contraseña simple que ya figura en Internet puede incluso proteger a usted.

    
respondido por el Andreas Spindler 02.07.2013 - 09:10
fuente

Lea otras preguntas en las etiquetas