informatique:reseau:ldap:ppolicy

Ceci est une ancienne révision du document !


Module PPolicy

Il faut d'abord charger le module ppolicy :

  • Créer le fichier /tmp/load-module.ldif :
    dn: cn=module{0},cn=config
    changetype: modify
    add: olcModuleLoad
    olcModuleLoad: ppolicy
  • Jouer ce LDIF via ldapmodify :
    ldapmodify -x -D cn=admin,cn=config -W -f /tmp/load-module.ldif
    # Ou :
    ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/load-module.ldif

Il faut ensuite ajouter le schéma ppolicy :

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/ppolicy.ldif

Il faut ensuite activer ce module pour votre database :

  • Créer le fichier /tmp/config-module.ldif :
    dn: olcOverlay={0}ppolicy,olcDatabase={1}hdb,cn=config
    objectclass: olcOverlayConfig
    objectclass: olcPPolicyConfig
    olcoverlay: {0}ppolicy
    olcppolicydefault: cn=default,ou=ppolicies,dc=example,dc=com
    olcppolicyforwardupdates: FALSE
    olcppolicyhashcleartext: TRUE
    olcppolicyuselockout: FALSE
  • Jouer ce LDIF avec ldapadd :
    ldapadd -x -D cn=admin,cn=config -W -f /tmp/config-module.ldif
    # Ou :
    ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/config-module.ldif

Il faut ensuite ajouter l'objet LDAP dans votre base LDAP implémentant la politique par défaut des mots de passes :

  • Créer le fichier /tmp/add-default-ppolicy.ldif :
    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
  • Jouer ce LDIF avec ldapadd :
    ldapadd -x -D cn=admin,dc=example,dc=com -W -f /tmp/add-default-ppolicy.ldif
La configuration de la politique par défaut proposée ci-dessus n'active pour ainsi dire aucune protection fourni par cette overlay. Il est conseillé d'ajuster les différents paramètres de la politique en fonction du besoin (voir ci-dessous).

La politique de mot de passe est définie au travers des objets pwdPolicy stockés dans l'arbre LDAP.

  • Classe d'objet : pwdPolicy
  • Attributs :
    • pwdAllowUserChange : booléen définissant si l'utilisateur peut changer son mot de passe (défaut: TRUE)
    • pwdAttribute : nom de l'attribut stockant le mot de passe (défaut : userPassword, seul attribut supporté actuellement)
    • pwdCheckModule : nom du module OpenLDAP se chargeant de la vérification de la qualité d'un mot de passe
    • pwdCheckQuality : politique de vérification de la qualité du mot de passe
      • 0 (par défaut) : pas de vérification de la qualité du mot de pasee
      • 1 : 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é.
    • pwdExpireWarning : délai d'affichage du message d'alerte d'expiration du mot de passe
      • 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).
    • pwdFailureCountInterval : durée après laquelle le nombre de tentatives d'authentification consécutive en échecs est réinitialisé.
      • 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.
    • pwdGraceAuthNLimit : délai de grâce après expiration du mot de passe
      • 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é.
    • pwdInHistory : nombre d'anciens mots de passe conservés dans l'historique d'un utilisateur. Par défaut: 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.
    • pwdLockout : booléen définissant l'action faite après un trop grand nombre de connexion en échec (défini par pwdMaxFailure):
      • TRUE (par défaut) : le compte est bloqué et seul un administrateur pourra le débloquer
      • FALSE : le compte n'est pas bloqué et l'utilisateur peut toujours tenter de se connecter (=fonctionnalité désactivée)
    • pwdLockoutDuration : durée de blocage d'un compte (si 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é.
    • pwdMaxAge : durée maximum en secondes de validité d'un mot de passe. Passé ce délai, le mot de passe est expiré et doit être changé. Par défaut: 0, c'est à dire que le mot de passe n'expire jamais.
    • pwdMaxFailure : nombre maximum de tentatives de connexion consécutive en échec avant que l'action définie par pwdLockout est déclenchée. Par défaut: 0, c'est à dire à pas de limite.
    • pwdMaxTotalAttempts : nombre maximum de tentatives de connexions consécutives en échec en incluant les essais avec un même mot de passe, avant que l'action définie par pwdLockout est déclenchée. Note : dans tous les cas, le nombre d'échec avec des mots de passe uniques est contrôllé par rapport à la limite fixée par pwdMaxFailure.
      • 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.
    • pwdMinAge : durée minimale en secondes entre deux changements de mot de passe. Par défaut : 0, c'est à dire qu'il n'y a pas de durée minimale.
    • pwdMinLength : longeur minimale d'un mot de passe. Par défaut : 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.
    • pwdMustChange : booléen définissant si l'utilisateur doit changer son mot de passe après qu'un administrateur est débloqué son compte (utile uniquement si 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 passe
      • TRUE : l'utilisateur doit changer son mot de passe
    • pwdSafeModify : Booléen définissant si l'utilisateur doit fournir son mot de passe actuel lors d'une opération de modification du mot de passe. Par défaut : FALSE.
  • pwdAccountLockedTime : date et heure du blocage du compte (lorsque pwdLockout==TRUE).
  • pwdChangedTime : date et heure du dernier changement du mot de passe
  • pwdFailureTime : attribut multivalué listant les dates et heures des tentatives de connexion en échec.
  • pwdGraceUseTime : attribut multivalué listant les dates et heures des connexions réussies durant la période de grace accordé après expiration du mot de passe (présent uniquement si pwdGraceAuthNLimit>0).
  • pwdHistory : attribut accessible en lecture uniquement et contenant la liste des derniers mots de passe utilisé par l'utilisateur. Le nombre de mots de passe présent dans cette liste dépend du nombre de changeant du mot de passe du compte et de la limite fixée par pwdInHistory.
  • pwdPolicySubentry : DN d'un objet pwdPolicy à utiliser spécifiquement pour ce compte. À défaut, la politique par défaut s'applique. Note : attribut monovalué.
  • pwdReset : cet attribut peut être utilisé par un administrateur pour débloquer le compte:
    • si TRUE : l'utilisateur doit changer son mot de passe avant la prochaine connexion (opération de BIND LDAP)
    • si FALSE : le compte est débloqué et l'utilisateur n'a pas à changer son mot de passe
  • pwdUniqueAttempts : attribut multivalué, accessible en lecture uniquement, listant le mot de passe haché et la date et heure de chaque tentative de connexion consécutive en échec avec un même mot de passe. Cet attribut n'est présent et utilisé que si pwdMaxTotalAttempts>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:

  1. Supprimez l'attribut pwdAccountLockedTime : Cette procédure permet à l'utilisateur de continuer à utiliser le mot de passe actuel et n'est efficace que si le mot de passe n'a pas expiré.
  2. Ajoutez l'attribut pwdReset avec la valeur 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.
  • informatique/reseau/ldap/ppolicy.1602238903.txt.gz
  • Dernière modification : 2020/10/09 10:21
  • de bn8