¿Por qué la longitud máxima de la contraseña de root de OpenWrt es de 8 caracteres?

29

Cuando intento configurar rootla contraseña:

root@OpenWrt:~# passwd
Changing password for root
Enter the new password (minimum of 5, maximum of 8 characters)
Please use a combination of upper and lower case letters and numbers.

Parece que la longitud máxima es 8. Si trato de establecer una contraseña más larga que 8, solo los primeros 8 caracteres son válidos. ¿Cómo puedo configurar una contraseña más larga root?

Mi versión de OpenWrt:

Linux OpenWrt 4.14.108 #0 SMP Wed Mar 27 21:59:03 2019 x86_64 GNU/Linux
Alan42
fuente

Respuestas:

35

Esto se debe a que la cripta basada en DES (AKA 'descifrar') trunca las contraseñas a 8 bytes y solo verifica las primeras 8 para verificar la contraseña.

Esa es la respuesta a su pregunta directa, pero aquí hay algunos consejos generales implicados por su contexto:

  • Afortunadamente, según mi lectura, MD5en /etc/login.defsrealidad está md5crypt ($ 1 $), que, aunque está un poco desactualizado y declarado en desuso por su autor , sigue siendo muy superior a la cripta basada en DES (y definitivamente mucho mejor que un hash crudo y sin sal como simple MD5: la mayoría de los hashes sin sal se pueden descifrar en las GPU de productos básicos a tasas de miles de millones por segundo)

  • Parece que SHA256(en realidad sha256crypt) y SHA512(en realidad sha512crypt) también están allí. Elegiría uno de esos en su lugar.

  • Si establece su contraseña passwordo algo en cada esquema, puede verificar visualmente si mi conclusión de que son las variantes -crypt es correcta (los ejemplos aquí se toman de los hashcat de hashcat , todos 'hashcat', algunos envueltos para legibilidad):

No recomendado: tipos de hash sin sal o heredados, demasiado "rápidos" (tasas de descifrado) para el almacenamiento de contraseñas:

MD5         - 8743b52063cd84097a65d1633f5c74f5
SHA256      - 127e6fbfe24a750e72930c220a8e138275656b8e5d8f48a98c3c92df2caba935
SHA512      - 82a9dda829eb7f8ffe9fbe49e45d47d2dad9664fbb7adf72492e3c81ebd3e2 \
              9134d9bc12212bf83c6840f10e8246b9db54a4859b7ccd0123d86e5872c1e5082f
descrypt    - 48c/R8JAv757A

OK, mucho mejor que sin sal, sin truncamiento, pero ya no lo suficientemente resistente a la fuerza bruta en el hardware moderno:

md5crypt    - $1$28772684$iEwNOgGugqO9.bIz5sk8k/

Mejor: hashes relativamente modernos con grandes sales y factores de trabajo:

sha256crypt - $5$rounds=5000$GX7BopJZJxPc/KEK$le16UF8I2Anb.rOrn22AUPWvzUETDGefUmAV8AZkGcD
sha512crypt - $6$52450745$k5ka2p8bFuSmoVT1tzOyyuaREkkKBcCNqoDKzYiJL9RaE8yMnPgh2XzzF0NDrUhgrcLwg78xs1w5pJiypEdFX/

De estos, solo descifrar se trunca en 8. Los dos últimos son su mejor apuesta.

(Nota al margen: las sales de solo dígitos en los ejemplos de md5crypt y sha512crypt anteriores son solo efectos secundarios de cómo hashcat crea ejemplos de hashes; las sales reales y saludables generalmente se obtienen de un espacio de teclas mucho más grande).

Tenga en cuenta también que solo enumero los tipos de hash que son compatibles con /etc/login.defs en esta plataforma. Para uso general, incluso sha256crypt y sha512crypt han sido reemplazados, primero por bcrypt, y luego por hashes verdaderamente resistentes a ataques paralelos como scrypt y la familia Argon2. (Sin embargo, tenga en cuenta que para los inicios de sesión interactivos que deberían completarse en menos de un segundo, bcrypt es en realidad más resistente al ataque que este último)

Royce Williams
fuente
20

Modifiqué esto en /etc/login.defs:

PASS_MAX_LEN            8

problema fijo.


Adiciones importantes:

Después de cambiar los parámetros anteriores, aunque puedo establecer una contraseña de más de 8 dígitos, todavía no es válida porque la contraseña real es solo los primeros ocho dígitos. No sé si este es mi problema.

Mi solución final es establecer

# ENCRYPT_METHOD DES

a

ENCRYPT_METHOD MD5

en /etc/login.defs.

Ahora, finalmente puedo establecer una contraseña de root que sea realmente mayor que ocho.

Alan42
fuente
16
Buena solución, pero mala elección original para un sistema predeterminado ...
HBruijn
8
Supongo que ha cambiado su contraseña a algo más de 8 caracteres ahora. ¿Puedes probar si iniciar sesión con solo los primeros 8 caracteres de tu contraseña más larga funciona? Porque simplemente podría ...
marcelm
9
Puede considerar cambiarlo a SHA256 o SHA512 o son compatibles: MD5 se considera roto actualmente.
PhilippNagel
8
Realmente sha256 y sha512 por sí mismos no son mucho mejores que md5. necesita una sal y use las versiones de cripta de estos algoritmos.
SnakeDoc
44
@PhilippNagel Con una contraseña de alta entropía, no está tan mal. Si bien MD5 ciertamente debe considerarse roto, las debilidades conocidas actualmente no lo afectan para el hash de contraseña. Lo que es un problema para el hash de contraseña es la velocidad; MD5 no iterado es tan rápido que el forzado bruto es muy factible para muchas contraseñas.
marcelm