Détecter les mots de passe faibleBibliothèque qui fume
Jul 30Niveau :
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
...
Comments