Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
informatique:reseau:ldap:ppolicy [2021/01/25 12:54] – [Installation] bn8 | informatique:reseau:ldap:ppolicy [2024/05/13 22:39] (Version actuelle) – [Installation] bn8 |
---|
===== 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 bash>cat << EOF > /tmp/load-module.ldif | |
dn: cn=module{0},cn=config | dn: cn=module{0},cn=config |
changetype: modify | changetype: modify |
olcModuleLoad: ppolicy | olcModuleLoad: ppolicy |
EOF</code> | EOF</code> |
* Jouer ce LDIF via //ldapmodify// : <code bash>ldapmodify -x -D cn=admin,cn=config -W -f /tmp/load-module.ldif | |
# 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 bash>cat << EOF > /tmp/config-module.ldif | dn: olcOverlay=ppolicy,olcDatabase={1}mdb,cn=config |
dn: olcOverlay={0}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 |
olcppolicyuselockout: FALSE | olcppolicyuselockout: FALSE |
EOF</code> | EOF</code> |
* Jouer ce LDIF avec //ldapadd// : <code bash>ldapadd -x -D cn=admin,cn=config -W -f /tmp/config-module.ldif | |
# Ou : | |
ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/config-module.ldif</code> | |
| |
**Paramètres de configuration au niveau de la database :** | **Paramètres de configuration au niveau de la database :** |
* **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). | * **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''. | * **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 sur le serveur seront transmis au serveur maître. **Note:** pour fonctionner, cette fonctionnalité nécessite que le paramètre ''olcUpdateRef'' et l'overlay ''chain'' soient configurés sur la database. | * **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. |
| |
Il faut ensuite ajouter l'objet LDAP dans votre base LDAP implémentant la politique par défaut des mots de passes : | <note important>Pour fonctionner, la fonctionnalité associée à l'attribut **olcPPolicyForwardUpdates** nécessite que : |
* Créer le fichier ///tmp/add-default-ppolicy.ldif// : <code bash>cat << EOF > /tmp/add-default-ppolicy.ldif | * le paramètre ''olcUpdateRef'' et le [[chain|chaining]] soient configurés sur la database |
| * 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'' indispensable, notamment pour la suppression de l'attribut ''pwdFailureTime'')**. |
| </note> |
| |
| 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 | dn: ou=ppolicies,dc=example,dc=com |
objectclass: organizationalUnit | objectclass: organizationalUnit |
EOF</code> | 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 warning>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> | |
| |
Pour plus d'informations, [[https://www.zytrax.com/books/ldap/ch6/ppolicy.html|consulter cette documentation du module]]. | Pour plus d'informations, [[https://www.zytrax.com/books/ldap/ch6/ppolicy.html|consulter cette documentation du module]]. |
* **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 à changer 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 |