Niveau :      
Résumé : libpam-cracklib ; passwd -e

Vos mots de passes sont nazes ? Vous avez des utilisateurs qui ont des mots de passe faibles ? Alors c'est que vous avez oublié cracklib lors de votre installation.

Cracklib

Cracklib est une bibliothèque qui permet de vérifier la force ou la faiblesse d'un mot de passe (paquet libcrack2 et cracklib-runtime). Ceci se fait avec quelques tests basiques, ainsi qu'un dictionnaire de mots de passe.

Par défaut, le dictionnaire n'est pas compilé, pour l'utiliser, tapez en root :

$ update-cracklib # exécuté tous les jours en cron par l'installeur

Pour tester si cracklib considère un mot de passe comme faible, utilisez crack_testlib :

$ echo "azerty" | cracklib-check
> azerty: ok

Bon ça commence mal, la base est un peu légère. Donc commençons par un petit dictionnaire. Téléchargez http://prdownloads.sourceforge.net/cracklib/cracklib-words.gz et décompressez.

Sous debian, modifiez /etc/cracklib/cracklib.conf et ajoutez votre fichier dans cracklib_dictpath_src. Enfin tapez :

$ update-cracklib

Si vous n'êtes pas sous debian, vous n'avez probablement pas update-cracklib, dans ce cas :

$ cracklib-packer /var/cache/cracklib/cracklib_dict < votrefichier

Ou si votre fichier n'est pas au bon format :

$ cracklib-format votrefichier | crack_packer /var/cache/cracklib/cracklib_dict

Et on recommence :

$ echo "azerty" | cracklib-check
> azerty: it is based on a dictionary word

C'est mieux ! Maintenant vous trouverez bien d'autres fichiers de mot de passe sur le web. Par exemple http://lastbit.com/dict.asp ou http://www.cotse.com/tools/wordlists.htm à vous de les choisir.

PAM

Utilisée conjointement avec passwd, cracklib permet d'empêcher les utilisateurs de changer leur mot de passe pour toto. Comment faire ?

$ apt-get install libpam-cracklib
# ou yum ou ...

Éditez /etc/pam.d/passwd et remplacez votre ancien :

password   required   pam_unix.so nullok obscure min=4 max=8 md5

ou équivalent, par :

password required         pam_cracklib.so retry=3 minlen=6 difok=3
password required         pam_unix.so use_authtok nullok md5

Les paramètres sont :

  • retry : nombre d'essais autorisés
  • minlen : taille minimale du mot de passe
  • difok : nombre de caractères minimal qui doivent différer entre 2 mots de passe

Et voila ! Maintenant changez votre mot de passe pour azerty pour voir. Attention, root a seulement droit à un warning, rien ne lui est interdit :-)

Oui, mais vous débarquez trop tard et tout le monde a déjà un mot de passe disponible au marché aux puces. Qu'à cela ne tienne, vous allez les forcer à changer. Il suffit de faire expirer leur mot de passe. Et au prochain login, le changement se fera. Pour cela, rien de plus simple :

$ passwd -e user

A vous de jouer !

Mais encore

Notez que cracklib ne sert pas qu'au système. Elle peut être utilisée partout où on peut trouver des mots de passe.

Par exemple pour vos sites en PHP, utilisez simplement http://fr.php.net/crack

Pour vos application en C -> lisez /usr/share/doc/libcrack2/README.gz

En perl http://search.cpan.org/~daniel/Crypt-Cracklib-1.7/Cracklib.pm

En shell crack_testlib

...