Solaris m'a laissé entrer avec un mot de passe différent avec les mêmes 8 premiers caractères

42

Je ne sais pas si c'est normal, mais le problème est que, disons, j'ai un utilisateur Solaris appelé gloaiza et que son mot de passe est password2getin

Je me connecte au serveur avec PuTTY, je viens de mettre 192.168.224.100 et une fenêtre demandant un utilisateur, je tape donc gloaiza , puis il demande un mot de passe et disons que je tape password2geti par erreur, et cela a fonctionné! Je suis dans le serveur!

Est-ce normal? Cela fonctionne aussi si je mets quelque chose comme password2getin2 .

Je ne parle pas anglais, donc, si vous ne comprenez pas quelque chose, demandez-le-moi.

Système d'exploitation: Oracle Solaris 10 1/13

gloaiza
la source
4
Qu'est-ce qui se passe sous huit caractères? Est-ce passworkque vous entrez?
Thrig
@thrig Ok, mon mot de passe réel est de 9 caractères long, donc disons que le mot de passe est pass2word, il travaille avec pass2wor, pass2word1, pass2worr1et ainsi de suite ... Je pense que cela fonctionne avec tout une fois que vous tapez pass2wor je ne pense pas que ce soit un grand problème, mais ce n’est pas bon non plus.
Gloaiza
3
Tant que les 8 premiers caractères sont corrects, il vous laissera entrer. Malheureusement, la génération d'un mot de passe utilise encrypt dans les versions précédentes de Solaris, sans tenir compte du caractère 9, et des suivants.
MelBurslan
14
Rappel doux pour tous les développeurs embarqués, pensant que "cela ne pourrait jamais arriver sur mon système:" busyboxretombera en silence sur DES si vous n’avez pas toutes les bonnes options de crypto activées dans son .config et votre libc. Peut-être prenez une minute aujourd'hui pour vérifier vos fichiers passwd/ shadow? ;)
11
@drewbenn - qui diable a pensé que dégrader la sécurité en silence est une bonne idée? Jésus Christ.
Davor

Réponses:

65

Le système d'exploitation stocke un hachage du mot de passe dans /etc/shadow(ou, historiquement /etc/passwd; ou à un emplacement différent sur certaines autres variantes Unix). Historiquement, le premier hachage de mot de passe répandu était un schéma basé sur DES, avec la limitation qu'il ne tenait compte que des 8 premiers caractères du mot de passe. De plus, un algorithme de hachage de mot de passe doit être lent; le système basé sur le DES était un peu lent quand il a été inventé mais est insuffisant par rapport aux normes actuelles.

Depuis lors, de meilleurs algorithmes ont été conçus. Mais Solaris 10 utilise par défaut le schéma historique basé sur DES. Solaris 11 utilise par défaut un algorithme basé sur le SHA-256 itéré, conforme aux normes en vigueur.

Sauf si vous avez besoin de la compatibilité historique avec les anciens systèmes, passez au schéma SHA-256 itéré. Éditez le fichier /etc/security/policy.confet changez le CRYPT_DEFAULTréglage à 5 qui correspond à crypt_sha256. Vous pouvez également vouloir définir CRYPT_ALGORITHMS_ALLOWet CRYPT_ALGORITHMS_DEPRECATE.

Une fois que vous avez modifié la configuration, exécutez passwdpour changer votre mot de passe. Ceci mettra à jour le hachage du mot de passe avec le schéma actuellement configuré.

Gilles, arrête de faire le mal
la source
1
Merci pour la réponse. Quand vous dites " Sauf si vous avez besoin de la compatibilité historique avec les systèmes anciens ", vous entendez cela de toute façon. Ce que je veux dire, c'est ... Est-il possible d'avoir vraiment besoin du schéma basé sur le DES et de ne pas pouvoir passer à SHA-256, pour certains? raison?
Gloaiza
11
@gloaiza Vous pourriez peut-être si votre fichier de hachage de mot de passe est partagé avec NIS ou une autre méthode avec une machine exécutant un système d'exploitation vraiment ancien (tel que Solaris 2.x). Sinon, non.
Gilles, arrête de faire le mal '
21

Cela est prévu, du moins sur une configuration Solaris 10 et plus ancienne par défaut.

Votre système utilise l' crypt_unixalgorithme Unix hérité , qui limite en effet le nombre de caractères utilisés à huit.

Ceci est documenté dans la passwdpage de manuel :

Les mots de passe doivent être construits pour répondre aux exigences suivantes:

  Chaque mot de passe doit comporter des caractères PASSLENGTH, PASSLENGTH étant défini dans
  / etc / default / passwd et a la valeur 6. Définition de PASSLENGTH sur plus de huit
  caractères nécessite de configurer policy.conf (4) avec un algorithme prenant en charge
  plus de huit caractères .

Comme cet algorithme est essentiellement obsolète. Vous devriez passer à quelque chose de mieux (valeurs disponibles répertoriées dans la crypt.confpage de manuel) en définissant les entrées CRYPT_ALGORITHMS_DEPRECATEet CRYPT_DEFAULTdu /etc/security/policy.conffichier.

Voir http://docs.oracle.com/cd/E19253-01/816-4557/concept-63/index.html

jlliagre
la source
1
Ce n'est pas vrai que "le plus haut le mieux". L'algorithme 2a(bcrypt) peut être le meilleur .
Stop Harming Monica
@OrangeDog Point pris, avis supprimé
jlliagre
7

Voir ce fil sur les forums Oracle :

Le comportement que vous décrivez est attendu lorsque vous utilisez le schéma de chiffrement de mot de passe "crypt_unix" par défaut. Ce schéma ne chiffrera que les huit premiers caractères d'un mot de passe. Par conséquent, seuls les huit premiers caractères doivent correspondre lorsque le mot de passe est saisi à nouveau. Ce n'est pas un "bogue", mais une limitation connue de l'algorithme - il est en grande partie conservé pour des raisons de compatibilité, et est malheureusement défini par défaut sur les systèmes Solaris une fois installé.

Pour résoudre ce problème, configurez votre système d'exploitation de manière à utiliser les algorithmes MD5 ou Blowfish au lieu de crypt_unix.

Cela peut être changé dans le fichier /etc/security/policy.conf. Vous pouvez définir des algorithmes de cryptage pour autoriser. Il existe également un paramètre permettant de déconseiller (interdire) l'utilisation de l'algorithme "crypt_unix" et de remplacer le paramètre par défaut par un algorithme plus sécurisé.

Consultez le "Guide d’administration du système Solaris 10: Services de sécurité" pour plus d’informations.

Voir aussi Modification de l'algorithme de mot de passe (liste des tâches) et en particulier Procédure de spécification d'un algorithme pour le chiffrement de mot de passe :

Spécifiez l'identifiant de l'algorithme de chiffrement choisi.

...

Tapez l'identifiant comme valeur pour la variable CRYPT_DEFAULT dans le fichier /etc/security/policy.conf.

...

Pour plus d'informations sur la configuration des choix d'algorithmes, reportez-vous à la policy.conf(4)page de manuel.

Andrew Henle
la source
2

Juste pour votre information, cela se produit également sur les systèmes IBM AIX jusqu'à la version 7.1.

Il est drôle, parce que ce système j'ai travaillé avec a un « ne peut pas réutiliser l' un des 10 derniers mots de passe » politique qui ne prennent en compte l'ensemble mot de passe longueur, mais ne vérifie que les 8 premiers caractères lors de la connexion. Vous pouvez définir vos mots de passe comme easypass_%$xZ!01, easypass_%&ssY!02, easypass_%$33zoi@@, ... pour chaque changement de mot de passe obligatoire, en gardant efficacement easypassque votre mot de passe depuis des années.

Walen
la source