Pam cracklib : Choisir la complexité des mots de passe

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

1 Introduction

Si vous aussi vous en avez marre des utilisateurs qui choisissent des mots de passe trop simple sur vos système et qui compromettent donc la sécurité de celui ci, il y a donc une solution. C'est pam_cracklib qui va vous permettre de spécifier la taille minimale des mots de passe, le nombre de minuscule, majuscules, chiffre etc...

Bref, le truc quasi indispensable surtout si vous vous reposez sur un backend de type LDAP.

2 Installation

Pour l'installer...easy move :

Command aptitude
aptitude install libpam-cracklib

3 Configuration

Nous n'avons qu'un fichier à éditer, ce qui va grandement simplifier les choses et en plus, vu qu'on est sous Debian, ces gentils monsieurs nous ont simplifier la vie puisqu'il n'y a que des commentaires de ligne à faire et en plus avec une explication....royale !

Configuration File /etc/pam.d/common-password
#
# /etc/pam.d/common-password - password-related modules common to all services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define the services to be
# used to change user passwords.  The default is pam_unix.
 
# Explanation of pam_unix options:
#
# The "sha512" option enables salted SHA512 passwords.  Without this option,
# the default is Unix crypt.  Prior releases used the option "md5".
#
# The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in
# login.defs.
#
# See the pam_unix manpage for other options.
 
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.
 
# here are the per-package modules (the "Primary" block)
password    requisite           pam_cracklib.so retry=3 minlen=10 difok=3 dcredit=-1 ucredit=-1 lcredit=-1
password    [success=1 default=ignore]  pam_unix.so obscure use_authtok try_first_pass sha512
# here's the fallback if no module succeeds
password    requisite           pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
password    required            pam_permit.so
# and here are more per-package modules (the "Additional" block)
# end of pam-auth-update config

J'ai donc commenté la première ligne en gras puis décommenté les 2 dernières.
Sur la dernière ligne, j'ai également retiré 'nullok' qui permet d'avoir des mots de passe vide. Tout compte avec des mots de passe vide sera rejetter (attention toute fois si dans votre cas un utilisateur système doit posséder ce type de compte pour des opérations de maintenance).

Passons maintenant aux explications de la ligne pam_cracklib.so :

  • retry : c'est le nombre de fois que l'utilisateur pourra réessayer s'il se trompe de mot de passe
  • minlen : la longueur minimale du mot de passe
  • difok : j'aime bien ce truc, c'est un peu vicieux, mais vu que certains utilisateurs le sont... ça permet qu'il se rappelle des anciens mots de passe que les utilisateurs ont mis. Ici un utilisateur ne pourra réutiliser un mot de passe qu'il avait précédemment mis qu'au bout de la 5ème fois.
  • dcredit : si le chiffre est négatif, c'est qu'il faut au moins x fois de nombre décimal pour que le mot de passe soit validé. (ici il faut au moins un décimal)
  • ucredit : si le chiffre est négatif, c'est qu'il faut au moins x fois de lettre majuscule pour que le mot de passe soit validé. (ici il faut au moins une majuscule)
  • lcredit : si le chiffre est négatif, c'est qu'il faut au moins x fois de lettre minuscule pour que le mot de passe soit validé. (ici il faut au moins une minuscule)

J'aurais pu mettre aussi ocredit qui permet de spécifier les caractères spéciaux. Il faut savoir que pour dcredit, ucredit, lcredit et ocredit, si ils sont égale à un nombre positif, ils se soustraient à minlen lorsqu'ils sont utilisés.

Je vous laisse regarder les références ci dessous si vous voulez plus d'infos :-)

4 Références

http://www.deer-run.com/~hal/sysadmin/pam_cracklib.html
http://linux.die.net/man/8/pam_cracklib