informatique:reseau:ldap:ppolicy

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
informatique:reseau:ldap:ppolicy [2020/10/09 09:58] – [Installation] bn8informatique:reseau:ldap:ppolicy [2024/04/23 10:48] (Version actuelle) bn8
Ligne 3: Ligne 3:
 ===== Installation ===== ===== Installation =====
  
-Il faut d'abord charger le module //ppolicy// : +Il faut d'abord charger le module //ppolicy// : <code bash>ldapmodify -Y EXTERNAL -H ldapi:/// << EOF 
-  * Créer le fichier ///tmp/load-module.ldif// <code ldif>dn: cn=module{0},cn=config+dn: cn=module{0},cn=config
 changetype: modify changetype: modify
 add: olcModuleLoad add: olcModuleLoad
-olcModuleLoad: ppolicy</code> +olcModuleLoad: ppolicy 
-  * Jouer ce LDIF via //ldapmodify// : <code bash>ldapmodify -x -D cn=admin,cn=config -W -f /tmp/load-module.ldif +EOF</code>
-# Ou : +
-ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/load-module.ldif</code>+
  
-Il faut ensuite ajouter le schéma //ppolicy// : <code bash>ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/ppolicy.ldif</code>+Il faut ensuite ajouter le schéma //ppolicy// **(uniquement avant OpenLDAP 2.5, Debian Bookworm ou Bullseye backports)** : <code bash>ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/ppolicy.ldif</code>
  
-Il faut ensuite activer ce module pour votre //database// : +Il faut ensuite activer ce module pour votre //database//<code bash>ldapadd -Y EXTERNAL -H ldapi:/// << EOF 
-  * Créer le fichier ///tmp/config-module.ldif//<code ldif>dn: olcOverlay={0}ppolicy,olcDatabase={1}hdb,cn=config+dn: olcOverlay=ppolicy,olcDatabase={1}mdb,cn=config
 objectclass: olcOverlayConfig objectclass: olcOverlayConfig
 objectclass: olcPPolicyConfig objectclass: olcPPolicyConfig
-olcoverlay: {0}ppolicy+olcoverlay: ppolicy
 olcppolicydefault: cn=default,ou=ppolicies,dc=example,dc=com olcppolicydefault: cn=default,ou=ppolicies,dc=example,dc=com
 olcppolicyforwardupdates: FALSE olcppolicyforwardupdates: FALSE
 olcppolicyhashcleartext: TRUE olcppolicyhashcleartext: TRUE
-olcppolicyuselockout: FALSE</code> +olcppolicyuselockout: FALSE 
-  * Jouer ce LDIF avec //ldapadd// : <code bash>ldapadd -x -D cn=admin,cn=config -W -f /tmp/config-module.ldif +EOF</code>
-# Ou : +
-ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/config-module.ldif</code>+
  
-Il faut ensuite ajouter l'objet LDAP dans votre base LDAP implémentant la politique par défaut des mots de passes : +**Paramètres de configuration au niveau de la database :** 
-  * Créer le fichier ///tmp/add-default-ppolicy.ldif// <code ldif>dn: ou=ppolicies,dc=example,dc=com+  * **olcPPolicyHashCleartext :** si ''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). 
 +  * **olcPPolicyUseLockout :** Bien que le serveur refusera toujours la connexion avec un compte bloqué (erreur //AccountLocked//), si ce paramètre vaut ''TRUE'', le serveur retournera le code d'erreur spécifique ''AccountLocked''
 +  * **olcPPolicyForwardUpdates (serveur esclave uniquement) :** si ''TRUE'', les échecs de connexions (et autres modifications d'attributs opérationnels) sur le serveur seront transmis au serveur maître. **Note:** pour fonctionner, cette fonctionnalité nécessite que le paramètre ''olcUpdateRef'' et le [[chain|chaining]] soient configurés sur la database. Par ailleurs, les modifications des attributs opérationnels seront faites avec l'utilisateur LDAP configuré dans le [[chain|chaining]] et il est important que les ACLs lui autorisent la modification de ces attributs (droit ''manage''). 
 + 
 +Il faut ensuite ajouter l'objet LDAP dans votre base LDAP implémentant la politique par défaut des mots de passes : <code bash>ldapadd -Y EXTERNAL -H ldapi:/// << EOF 
 +dn: ou=ppolicies,dc=example,dc=com
 objectclass: organizationalUnit objectclass: organizationalUnit
 ou: ppolicies ou: ppolicies
Ligne 53: Ligne 54:
 pwdMustChange: FALSE pwdMustChange: FALSE
 pwdAllowUserChange: FALSE pwdAllowUserChange: FALSE
-pwdSafeModify: FALSE</code> +pwdSafeModify: FALSE 
- +EOF</code>
-  * Jouer ce LDIF avec //ldapadd// : <code bash>ldapadd -x -D cn=admin,dc=example,dc=com -W -f /tmp/add-default-ppolicy.ldif</code>+
  
 <note important>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).</note> <note important>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).</note>
  
-===== Configuration ===== +Pour plus d'informations, [[https://www.zytrax.com/books/ldap/ch6/ppolicy.html|consulter cette documentation du module]]. 
-==== Politique(s) de mot de passe ====+===== Configuration de la politique de mot de passe =====
  
 La politique de mot de passe est définie au travers des objets **pwdPolicy** stockés dans l'arbre LDAP. La politique de mot de passe est définie au travers des objets **pwdPolicy** stockés dans l'arbre LDAP.
 +
 +<note tip>Plusieurs politiques de mots de passe peuvent être configurées avec plusieurs objets **pwdPolicy**. La politique de mot de passe utilisée pour un compte donné est alors celle ciblée explicitement par l'attribut **pwdPolicySubentry** du compte ou à défaut, la politique par défaut définie par l'attribut **olcPPolicyDefault** dans la configuration OpenLDAP de la //database//.</note>
  
   * Classe d'objet : **pwdPolicy**   * Classe d'objet : **pwdPolicy**
Ligne 97: Ligne 99:
     * **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.     * **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.     * **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. +    * **pwdMustChange :** booléen définissant si l'utilisateur doit changer son mot de passe après qu'un administrateur ait 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 a changé son mot de passe+      * ''FALSE'' (par défaut) : l'utilisateur n'a pas à changer son mot de passe
       * ''TRUE'' : l'utilisateur doit 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''.     * **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''.
  
 +===== Attributs d'état d'un compte =====
 +
 +  * **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''
 +
 +===== Déblocage d'un compte =====
 +
 +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:
 +
 +  - 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é.
 +  - 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.1602237528.txt.gz
  • Dernière modification : 2020/10/09 09:58
  • de bn8