Il faut d'abord charger le module ppolicy :
ldapmodify -Y EXTERNAL -H ldapi:/// << EOF dn: cn=module{0},cn=config changetype: modify add: olcModuleLoad olcModuleLoad: ppolicy EOF
Il faut ensuite ajouter le schéma ppolicy (uniquement avant OpenLDAP 2.5, Debian Bookworm ou Bullseye backports) :
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/ppolicy.ldif
Il faut ensuite activer ce module pour votre database :
ldapadd -Y EXTERNAL -H ldapi:/// << EOF dn: olcOverlay=ppolicy,olcDatabase={1}mdb,cn=config objectclass: olcOverlayConfig objectclass: olcPPolicyConfig olcoverlay: ppolicy olcppolicydefault: cn=default,ou=ppolicies,dc=example,dc=com olcppolicyforwardupdates: FALSE olcppolicyhashcleartext: TRUE olcppolicyuselockout: FALSE EOF
Paramètres de configuration au niveau de la database :
TRUE
, les mots de passes soumis en clair lors d'une opération d'ajout ou de modification seront hâché (avec le type par défaut du serveur).TRUE
, le serveur retournera le code d'erreur spécifique AccountLocked
.TRUE
, les échecs de connexions (et autres modifications d'attributs opérationnels) sur le serveur seront transmis au serveur maître.olcUpdateRef
et le chaining soient configurés sur la databasemanage
indispensable, notamment pour la suppression de l'attribut pwdFailureTime
).Il faut ensuite ajouter l'objet LDAP dans votre base LDAP implémentant la politique par défaut des mots de passes :
ldapadd -Y EXTERNAL -H ldapi:/// << EOF dn: ou=ppolicies,dc=example,dc=com objectclass: organizationalUnit ou: ppolicies dn: cn=default,ou=ppolicies,dc=example,dc=com cn: default objectclass: top objectclass: device objectclass: pwdPolicy objectclass: pwdPolicyChecker pwdAttribute: userPassword pwdMinAge: 0 pwdMaxAge: 0 pwdInHistory: 0 pwdCheckQuality: 1 pwdMinLength: 8 pwdExpireWarning: 0 pwdGraceAuthnLimit: 0 pwdLockout: FALSE pwdLockoutDuration: 0 pwdMaxFailure: 0 pwdMaxRecordedFailure: 0 pwdFailureCountInterval: 0 pwdMustChange: FALSE pwdAllowUserChange: FALSE pwdSafeModify: FALSE EOF
Pour plus d'informations, consulter cette documentation du module.
La politique de mot de passe est définie au travers des objets pwdPolicy stockés dans l'arbre LDAP.
TRUE
)userPassword
, seul attribut supporté actuellement)0
(par défaut) : pas de vérification de la qualité du mot de pasee1
: si le mot de passe fourni est en clair, il est vérifié, sinon (ou si la méthode de vérification est indisponible) le mot de passe est accepté.2
: si le mot de passe fourni est en clair, il est vérifié, sinon (ou si la méthode de vérification est indisponible) le mot de passe est refusé.0
(par défaut) : pas de message d'alerte>0
: durée en secondes avant l'expiration du mot de passe pendant laquelle un message d'alerte sera retourné au sujet de l'expiration du mot de passe à chaque connexion (opération de bind
LDAP).0
(par défaut) : réinitialisé qu'après une connexion réussie>0
: durée en secondes après laquelle le nombre de tentatives en échec sera réinitialisé si aucun échec n'a lieu entre-temps.0
(par défaut) : après expiration du mot de passe, l'utilisateur ne peut plus se connecter.>0
: nombre de fois ou l'utilisateur peut se connecter avec son mot de passe expiré.0
. Note : les mots de passe sont stockés hachés dans l'historique. Par conséquence, seule une vérification d'égalité parfaite peut être faite.TRUE
(par défaut) : le compte est bloqué et seul un administrateur pourra le débloquerFALSE
: le compte n'est pas bloqué et l'utilisateur peut toujours tenter de se connecter (=fonctionnalité désactivée)pwdLockout==TRUE
)0
(par défaut) : blocage sans date de fin, c'est à dire jusqu'à déblocage par un administrateur>0
: durée en secondes du blocage. Passé ce délai, le compte sera automatiquement débloqué.0
, c'est à dire que le mot de passe n'expire jamais.0
, c'est à dire à pas de limite.0
(par défaut) : pas de détection de connexion consécutives en échec avec un même mot de passe>0
: limite du nombre de connexion consécutives en échec avec des mots de passe différents. Un même mot de passe ne sera contabilisé qu'une seule fois, quelques soits l'ordre dans lequel il arrive dans la suite d'échec.-1
: aucune limite du nombre de tentatives en échec avec un même mot de passe.0
, c'est à dire qu'il n'y a pas de durée minimale.0
, c'est à dire qu'il n'y a pas de longeur minimale. Note : Si le mot de passe est fourni hashé lors du changement, ce test ne peut être réalisé et la politique définie par pwdCheckQuality s'applique alors.pwdLockout==TRUE
). Note : si l'attribut pwdReset est défini sur le compte, sa valeur outrepasse ce paramètre.FALSE
(par défaut) : l'utilisateur n'a pas à changer son mot de passeTRUE
: l'utilisateur doit changer son mot de passeFALSE
.pwdLockout==TRUE
).pwdGraceAuthNLimit>0
).TRUE
: l'utilisateur doit changer son mot de passe avant la prochaine connexion (opération de BIND LDAP)FALSE
: le compte est débloqué et l'utilisateur n'a pas à changer son mot de passepwdMaxTotalAttempts>0
Si un compte d'utilisateur est verrouillé (lorsque pwdLockout==TRUE
dans la politique de mot de passe), il peut être déverrouillé par un administrateur en utilisant l'une des procédures suivantes:
TRUE
ou FALSE
. FALSE
n'est efficace que si le mot de passe n'a pas expiré et a le même effet que la suppression de pwdAccountLockedTime
.