Objectif: « OpenLDAP password policy » est un module (overlay) qui permet de mettre en place une gestion efficace des comptes d’authentification des personnes référencées dans l’annuaire OpenLDAP. Cette gestion concerne notamment les mots de passe de ces personnes. Cet article montrera la manière de configurer le serveur OpenLDAP pour activer le module « password policy » et mettre en place cette gestion.
Pré-requis: L’article Ajouter des données à l’annuaire ainsi que ses pré-requis sont lus. Le serveur OpenLDAP est installé et alimenté avec les données de l’article.
Pour aller plus loin à ce sujet: La démarche présentée ici constitue le volet système de bas niveau de cette fonctionnalité. L’expiration d’un compte (mot de passe), par exemple, nécessite la mise à disposition des utilisateurs finaux une interface pour modifier leurs mots de passe facilement. Un système en cours de construction permettra d’offrir ce type d’interfaces pour ce type de fonctionnalités.
Par défaut le schéma ppolicy est installé: /etc/ldap/schema/ppolicy.ldif, mais non activé. Pour l’activer:
ldapmodify -x -a -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -w admin -f /etc/ldap/schema/ppolicy.ldif
Pour vérifier le chargement effectif du schéma:
ldapsearch -x -s one -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -w admin -b cn=schema,cn=config cn -LLL
dn: cn={0}core,cn=schema,cn=config
cn: {0}core
dn: cn={1}cosine,cn=schema,cn=config
cn: {1}cosine
dn: cn={2}nis,cn=schema,cn=config
cn: {2}nis
dn: cn={3}inetorgperson,cn=schema,cn=config
cn: {3}inetorgperson
dn: cn={4}ppolicy,cn=schema,cn=config
cn: {4}ppolicy
Remarquer la présence du schéma ppolicy en plus des quatre schémas activés par défaut.
Créer le fichier de commande LDIF: ppolicy-module.ldif
vi ppolicy-module.ldif
Saisir dans l’éditeur et enregistrer:
dn: cn=module{0},cn=config
changeType: modify
add: olcModuleLoad
olcModuleLoad: ppolicy
Exécuter la commande de modification contenue dans le fichier:
ldapmodify -x -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -w admin -f ppolicy-module.ldif
Pour vérifier l’activation effective du module:
ldapsearch -x -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -w admin -b cn=config "(objectClass=olcModuleList)" olcModuleLoad -LLL
dn: cn=module{0},cn=config
olcModuleLoad: {0}back_hdb
olcModuleLoad: {1}ppolicy
Remarquer la présence du module ppolicy dans la liste alors que par défaut seul back_hdb (module de gestion de la base de données) est activé.
Créer le fichier de commande LDIF: ppolicy-conf.ldif
vi ppolicy-conf.ldif
Saisir dans l’éditeur et enregistrer:
dn: olcOverlay=ppolicy,olcDatabase={1}hdb,cn=config
objectClass: olcPpolicyConfig
olcOverlay: ppolicy
olcPPolicyDefault: cn=ppolicy,dc=ldaptuto,dc=net
olcPPolicyUseLockout: FALSE
olcPPolicyHashCleartext: TRUE
Ajouter l’entrée du fichier:
ldapmodify -x -a -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -w admin -f ppolicy-conf.ldif
Pour vérifier la prise en compte effective de la configuration:
ldapsearch -x -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -w admin -b cn=config "(objectClass=olcPpolicyConfig)" -LLL
dn: olcOverlay={0}ppolicy,olcDatabase={1}hdb,cn=config
objectClass: olcPPolicyConfig
olcOverlay: {0}ppolicy
olcPPolicyDefault: cn=ppolicy,dc=ldaptuto,dc=net
olcPPolicyHashCleartext: TRUE
olcPPolicyUseLockout: FALSE
Trois paramètres de configuration:
Il s’agit de configurer l’entrée indiquée dans le paramètre olcPPolicyDefault de la configuration du module ppolicy, c’est à dire: cn=ppolicy,dc=ldaptuto,dc=net. Pour cela on va créer un fichier LDIF qui permettra d’ajouter cette entrée.
vi ppolicy-defaut.ldif
Saisir dans l’éditeur et enregistrer:
dn: cn=ppolicy,dc=ldaptuto,dc=net
objectClass: device
objectClass: pwdPolicyChecker
objectClass: pwdPolicy
cn: ppolicy
pwdAllowUserChange: TRUE
pwdAttribute: userPassword
pwdCheckQuality: 1
pwdExpireWarning: 600
pwdFailureCountInterval: 30
pwdGraceAuthNLimit: 5
pwdInHistory: 5
pwdLockout: TRUE
pwdLockoutDuration: 0
pwdMaxAge: 0
pwdMaxFailure: 5
pwdMinAge: 0
pwdMinLength: 5
pwdMustChange: FALSE
pwdSafeModify: FALSE
Ajouter l’entrée:
ldapmodify -x -a -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -w admin -f ppolicy-defaut.ldif
Pour vérifier la prise en compte de cet ajout:
ldapsearch -x -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -w admin -b dc=ldaptuto,dc=net "(objectClass=pwdPolicy)" -LLL
16 Paramètres (tous les attributs listés) permettent de configurer une politique efficace et performante de mots de passe et de gestion des comptes utilisateurs. La commande suivante permet d’avoir tous les détails à propos de ces paramètres:
man slapo-ppolicy
A titre d’exemple pwdMinLength a été paramétré à 5, ce qui signifie qu’un mot de passe ne peut pas avoir une longueur inférieure à 5 caractères. Testons:
ldappasswd -x -H ldap://localhost -D uid=durand,ou=people,dc=ldaptuto,dc=net -w durand -s dura
Result: Constraint violation (19)
Additional info: Password fails quality checking policy
Cette commande permet à Alain Durand de se connecter avec son identifiant et mot de passe (-D uid=durand,ou=people,dc=ldaptuto,dc=net et -w durand) et modifier ce mot de passe avec la nouvelle valeur fournie (-s dura). La commande échoue car le nouveau mot de passe comporte 4 caractères.
ldappasswd -x -H ldap://localhost -D uid=durand,ou=people,dc=ldaptuto,dc=net -w durand -s duran
La commande réussit car le nouveau mot de passe comporte 5 caractères. Pour vérifier la prise en compte de cette modification:
ldapsearch -x -H ldap://localhost -D uid=durand,ou=people,dc=ldaptuto,dc=net -w durand -b dc=ldaptuto,dc=net
ldap_bind: Invalid credentials (49)
L’ancien mot de passe n’est pas accepté et la même commande avec le nouveau mot de passe : duran, devrait réussir.
Un autre paramètre: pwdCheckModule permet de contrôler la qualité du contenu des mots de passe. Ce paramètre indique le nom du fichier d’une librairie dynamique partagée native qui se charge de cette fonction. Avant de le renseigner il faudra d’abord s’assurer que cette librairie est présente.
Une telle librairie est disponible à l’installation à partir de son site Internet. Il convient de l’installer et ensuite renseigner ce paramètre en modifiant le paramétrage de la politique de mots de passe par défaut:
vi modifpp.ldif
Saisir dans l’éditeur et enregistrer:
dn: cn=ppolicy,dc=ldaptuto,dc=net
changeType: modify
add: pwdCheckModule
pwdCheckModule: pqchecker.so
Exécuter la modification:
ldapmodify -x -a -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -w admin -f modifpp.ldif
pqchecker.so est la librairie de contrôle de la qualité du contenu des mots de passe. Par défaut elle est installée dans /usr/lib/ldap. Par défaut également elle oblige à utiliser un mot de passe avec au minimum 1 caractère majuscule, 1 minuscule, 1 chiffre et 1 caractère spécial (non alphabétique). Plus de renseignements à ce propos peuvent être trouvés sur http://www.meddeb.net/pqchecker.