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

29

Lorsque j'essaie de définir rootle mot de passe de:

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 root?

Ma version OpenWrt:

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

Réponses:

35

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, de ma lecture, MD5en /etc/login.defsest en fait md5crypt (1 $), qui, bien qu'un peu dépassé et déclaré désapprouvée par son auteur , est encore loin supérieure à la crypte base-DES (et certainement bien mieux qu'une brute, hachage non salé comme plaine MD5! La plupart des hachages non salés peuvent être fissurés sur les GPU de base à des taux de milliards par seconde)

  • Il semble que SHA256(en fait sha256crypt) et SHA512(en fait sha512crypt) soient également là. Je choisirais l'un d'entre eux à la place.

  • Si vous définissez votre mot de passe passwordou quelque chose dans 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 des exemples de hachage hashcat , tous les 'hashcat', certains enveloppés pour lisibilité):

Non recommandé - 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)

Royce Williams
la source
20

J'ai modifié ceci 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.

Alan42
la source
16
Bon correctif, mais mauvais choix d'origine pour un système par défaut ...
HBruijn
8
Je suppose que vous avez changé votre mot de passe en quelque chose de plus de 8 caractères maintenant. Pouvez-vous essayer si la connexion avec seulement les 8 premiers caractères de votre mot de passe plus long fonctionne? Parce que ça pourrait ...
marcelm
9
Vous pourriez envisager de changer cela en SHA256 ou SHA512 ou ils sont pris en charge - MD5 est considéré comme défectueux de nos jours.
PhilippNagel
8
vraiment sha256 et sha512 en eux-mêmes ne sont pas beaucoup mieux que md5. vous avez besoin d'un sel et utilisez les versions cryptées de ces algorithmes.
SnakeDoc
4
@PhilippNagel Avec un mot de passe à haute entropie, ce n'est pas trop mal. Alors que MD5 doit certainement être considéré comme cassé, les faiblesses actuellement connues ne l'affectent pas pour le hachage de mot de passe. Ce qui est un problème pour le hachage de mot de passe est la vitesse; MD5 non itéré est si rapide que le forçage brutal est très faisable pour de nombreux mots de passe.
marcelm