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. On suppose, également, que le serveur OpenLDAP a été 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.
1. Activer le schéma ppolicy (OpenLDAP password policy)
A l’installation du serveur OpenLDAP sur un système Debian ou compatible, le schéma ppolicy est installé: /etc/ldap/schema/ppolicy.ldif, mais il n’est pas activé. Pour l’activer:ldapmodify -x -a -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -w admin -f /etc/ldap/schema/ppolicy.ldifPour 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}ppolicyRemarquer la présence du schéma ppolicy en plus des quatre schémas activés par défaut.
2. Activer le module ppolicy
Créer le fichier de commande LDIF: ppolicy-module.ldifvi ppolicy-module.ldifSaisir dans l’éditeur et enregistrer:
dn: cn=module{0},cn=config changeType: modify add: olcModuleLoad olcModuleLoad: ppolicyExé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.ldifPour 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}ppolicyRemarquez la présence du module ppolicy dans la liste. Initialement, il n’y avait que le module de gestion de la base de données back_hdb qui est activé.
3. Configurer le module ppolicy
Créer le fichier de commande LDIF: ppolicy-conf.ldifvi ppolicy-conf.ldifSaisir 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: TRUEAjouter l’entrée du fichier:
ldapmodify -x -a -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -w admin -f ppolicy-conf.ldifPour 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: FALSETrois paramètres de configuration:
- olcPPolicyDefault: Indique un DN de configuration utilisé par défaut (cf. paragraphe suivant).
- olcPPolicyHashCleartext: Indique si les mots de passe doivent être cryptés systématiquement. Ce paramètre devrait être à TRUE sauf cas exceptionnel.
- olcPPolicyUseLockout: Indique si le message d’erreur retourné en cas de tentative de connexion à un compte verrouillé est un message spécifique à cet état de verrouillage (TRUE), ou un message général d’echec de connexion (FALSE). FALSE est plus sécurisé (pas d’indication à un éventuel pirate), TRUE est plus pratique.
4. Configurer une politique de mots de passe
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.ldifSaisir 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: FALSEAjouter l’entrée:
ldapmodify -x -a -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -w admin -f ppolicy-defaut.ldifPour 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)" -LLL16 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-ppolicyA titre d’exemple, la valeur de pwdMinLength est 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 policyCette 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 duranLa 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)Le serveur n’a pas accepté l’ancien mot de passe. Si on utilise la même commande avec le nouveau mot de passe : duran, le serveur l’acceptera. 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.ldifSaisir dans l’éditeur et enregistrer:
dn: cn=ppolicy,dc=ldaptuto,dc=net changeType: modify add: pwdCheckModule pwdCheckModule: pqchecker.soExécuter la modification:
ldapmodify -x -a -H ldap://localhost -D cn=admin,dc=ldaptuto,dc=net -w admin -f modifpp.ldifpqchecker.so est la librairie de contrôle de la qualité du contenu des mots de passe. Cette librairie est installée par défaut 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.]]>