“pam_cracklib” est un module PAM qui permet de vérifier la robustesse du mot de passe Linux. Il peut être ajouté avec les autres modules pour former une pile de module pour le composant “password”, mais il est possible d’utiliser sur les autres composant PAM . Sous RHEL, sa configuration se trouve dans /etc/pam.d/system-auth mais il peut être aussi dans /etc/pam.d/passwd pour les autres distributions. Ci- dessous un extrait de ce fichier .
[pastacode lang=”bash” message=”” highlight=”” provider=”manual”]
password requisite pam_cracklib.so dcredit=-1 ucredit=-1 ocredit=-1 lcredit=0 minlen=12 try_first_pass retry=3
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password required pam_deny.so
[/pastacode]
Sa première action est de demander à l’utilisateur un mot de passe, vérifier sa robustesse et si c’est robuste, demander de rentrer une deuxième fois pour vérification puis transmis au module suivant pour être considéré comme le “token” d’authentification.
La vérification de la robustesse du mot de passe se fait de manière suivant : d’abord la routine Cracklib est appelé pour vérifier si le mot de passe est dans le dictionnaire. Si ce n’est pas le cas alors d’autres tests seront ralisés à savoir si :
- Palindrome: si le nouveau mot de passe est un palindrome
- Case Change Only : si pareille avec l’ancien mais de forme différent (majuscule ou minuscule).
- Similar : si le mot de passe ressemble avec l’ancien. Contrôlé par l’argument. difok qui définie le nombre de caractère qui change entre l’ancien et le nouveau mote de passe.
- Simple : si c’est simple, contrôlé par les arguments : minlen, maxclassrepeat, dcredit, ucredit, lcredit, et ocredit.
- Rotated : si juste une rotation de l’ancien.
- Contains user name : contient le nom de l’utilisateur.
Configuration
Dans /etc/sysconfig/system-auth, on ajoute sur le composant “password” :
pam_cracklib.so <option> <option> <option> …
Ci-dessous quelques exemples d’option :
- dcredit=N : nombre max de caractère numérique dans le mot de passe (par défaut c’est 1).
- ucredit=N : nombre max de lettre en majuscule. N<0 est la valeur minimale
- lcredit=: nombre max de lettre en minuscule . N<0 est la valeur minimale
- ocredit=N : nombre max pour les autres caractères. N<0 est la valeur minimale
- minlen=N: longueur minimale acceptable du mot de passe.
- try_first_pass=N:
- retry=N : nombre de tentative possible pour entrer le mot de passe avant de retourner une erreur.