web-dev-qa-db-fra.com

Pourquoi la longueur maximale du mot de passe root d'OpenWrt est-elle de 8 caractères?

Lorsque j'essaie de définir le mot de passe de root:

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.

Il semble que la longueur maximale soit de 8. Si j'essaie de définir un mot de passe supérieur à 8, seuls les 8 premiers caractères sont valides. Comment puis-je définir un mot de passe plus long pour root?

Ma version OpenWrt:

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

Cela est dû au fait que le cryptage basé sur DES (AKA "descrypt") tronque les mots de passe à 8 octets et vérifie uniquement les 8 premiers à des fins de vérification du mot de passe.

C'est la réponse à votre question directe, mais voici quelques conseils généraux impliqués par votre contexte:

  • Heureusement, d'après ma lecture, MD5 dans /etc/login.defs est en fait md5crypt ($ 1 $), qui, bien qu'un peu dépassé et déclaré obsolète par son auteur , est toujours de loin supérieur à la cryptographie basée sur DES (et certainement bien mieux qu'un hachage brut et non salé comme le MD5 ordinaire! La plupart des hachages non salés peuvent être fissurés sur les GPU de base à des taux de milliards par seconde)

  • On dirait SHA256 (en fait sha256crypt) et SHA512 (en fait sha512crypt) sont également là. Je choisirais l'un d'entre eux à la place.

  • Si vous définissez votre mot de passe sur password ou quelque chose sous chaque schéma, vous pouvez vérifier visuellement si ma conclusion selon laquelle ce sont les variantes -crypt est correcte (les exemples ici sont tirés de l'exemple hashcat hashes , tous 'hashcat', certains enveloppés pour plus de lisibilité):

Déconseillé - types de hachage non salés ou hérités, beaucoup trop "rapides" (taux de craquage) pour le stockage des mots de passe:

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

OK - bien mieux que non salé, pas de troncature, mais plus suffisamment résistant à la force brute sur le matériel moderne:

md5crypt    - $1$28772684$iEwNOgGugqO9.bIz5sk8k/

Mieux - hachages relativement modernes avec de gros sels et facteurs de travail:

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

Parmi ceux-ci, seulement déchiffrer tronque à 8. Les deux derniers sont votre meilleur pari.

(Remarque: les sels à chiffres uniquement dans les exemples md5crypt et sha512crypt ci-dessus ne sont que des effets secondaires de la façon dont hashcat crée des exemples de hachages; les sels réels et sains sont généralement extraits d'un espace de clés beaucoup plus grand).

Notez également que je ne répertorie que les types de hachage pris en charge par /etc/login.defs sur cette plate-forme. Pour une utilisation générale, même sha256crypt et sha512crypt ont été remplacés - d'abord par bcrypt, puis par des hachages véritablement résistants aux attaques parallèles comme scrypt et la famille Argon2. (Notez cependant que pour les connexions interactives qui devraient se terminer en moins d'une seconde, bcrypt est en fait plus résistant aux attaques que ce dernier)

35
Royce Williams

J'ai modifié cela dans /etc/login.defs:

PASS_MAX_LEN            8

problème résolu.


Ajouts importants:

Après avoir modifié les paramètres ci-dessus, bien que je puisse définir un mot de passe supérieur à 8 chiffres, il n'est toujours pas valide car le vrai mot de passe n'est que les huit premiers chiffres. Je ne sais pas si c'est mon problème.

Ma dernière solution est de définir

# ENCRYPT_METHOD DES

à

ENCRYPT_METHOD MD5

dans /etc/login.defs.

Maintenant, je peux enfin définir un mot de passe root qui est vraiment supérieur à huit.

20
Alan42