# Role : docker_openldap ## Services fournis Installation de openldap sur un serveur docker_host ## Variables Fournir les variables suivantes. Par exemple : ```yaml docker_openldap_data_dir: /data1 docker_openldap_service_id: openldap ``` | Option | Valeur par défaut | Description | |--------------------------------|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------| | docker_openldap_data_dir | | L'emplacement dans lequel se trouvent les volumes de donnees docker pour le service | | docker_openldap_service_id | | Le nom de service souhaité : conditionne le nommage des volumes | | docker_openldap_port | 389 | Le numero de port local pour la connexion à openldap | | docker_openldap_version | | Version du conteneur docker souhaité | | docker_openldap_rootdn | | dn de la racine de l'annuaire (par exemple: dc=example,dc=com) | | docker_openldap_admin_password | | Mot de passe administrateur de l'annuaire ; le dn de l'administrateur est cn=admin suivi du rootdn, par exemple : cn=admin,dc=example,dc=com) | | docker_openldap_organization | | Le nom de l'organisation pour cet annuaire (attribut o de la racine) | # Poursuite de l'installation du serveur openldap ## Configuration de la strategie de mot de passe avec le module ppolicy ### Activation du module ppolicy ``` # docker exec -ti -u openldap 7520847e9e47 bash openldap@7520847e9e47:/$ cd /tmp openldap@7520847e9e47:/tmp$ slapcat -n 0 | grep olcModuleLoad | grep ppolicy openldap@7520847e9e47:/tmp$ cat > ppolicy-module.ldif dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModuleLoad: ppolicy ^D openldap@7520847e9e47:/tmp$ slapadd -n0 -l ppolicy-module.ldif _#################### 100.00% eta none elapsed none fast! Closing DB... openldap@7520847e9e47:/tmp$ slapcat -n 0 | grep olcModuleLoad | grep ppolicy olcModuleLoad: {0}ppolicy ``` et redémarrer le conteneur ### Ajout de la configuration du module ppolicy ``` # docker exec -ti d7f2803e5cfb bash root@d7f2803e5cfb:/# cd /tmp/ root@d7f2803e5cfb:/tmp# cat > ppolicyoverlay.ldif dn: olcOverlay={2}ppolicy,olcDatabase={1}mdb,cn=config changetype: add objectClass: olcPPolicyConfig objectClass: olcOverlayConfig olcOverlay: {2}ppolicy olcPPolicyDefault: cn=defaultPasswordPolicy,ou=policies,dc=libretic,dc=fr olcPPolicyForwardUpdates: TRUE olcPPolicyHashCleartext: TRUE olcPPolicyUseLockout: TRUE ^D root@d7f2803e5cfb:/tmp# ldapadd -Y EXTERNAL -H ldapi:// -f ppolicyoverlay.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "olcOverlay={2}ppolicy,olcDatabase={1}mdb,cn=config" ``` ### Ajout d'une stratégie de mot de passe par défaut Valeurs à adapter en fonction du besoin. ``` root@d7f2803e5cfb:/tmp# cat > defaultppolicy.ldif dn: ou=policies,dc=libretic,dc=fr objectClass: organizationalUnit ou: policies dn: cn=defaultPasswordPolicy,ou=policies,dc=libretic,dc=fr objectClass: top objectClass: device objectClass: pwdPolicyChecker objectClass: pwdPolicy cn: defaultPasswordPolicy pwdAttribute: userPassword pwdInHistory: 3 pwdMinLength: 8 pwdMaxFailure: 5 pwdFailureCountInterval: 600 pwdCheckQuality: 0 pwdMustChange: FALSE pwdGraceAuthNLimit: 0 pwdMaxAge: 0 pwdExpireWarning: 1209600 pwdLockoutDuration: 900 pwdLockout: TRUE root@d7f2803e5cfb:/tmp# ldapadd -Y EXTERNAL -H ldapi:// -f defaultppolicy.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "ou=policies,dc=libretic,dc=fr" adding new entry "cn=defaultPasswordPolicy,ou=policies,dc=libretic,dc=fr" ``` ## Accès à l'annuaire en tant qu'administrateur de config Permet par exemple une modification des acl pour une modification avec apache directory studio (pratique). ### Modifier le mdp de l'administrateur de config #### Créer la valeur chiffrée du mdp ``` root@docker-host:/# docker exec -ti 04a84d35f749 bash root@04a84d35f749:/# slappasswd New password: Re-enter new password: {SSHA}FqKYv/azMmj/tp2LTSWzOzJf65h/nRKp ``` #### Créer un fichier modify.ldif pour ``` root@04a84d35f749:/# cd /tmp/ root@04a84d35f749:/tmp# cat > modify.ldif dn: olcDatabase={0}config,cn=config changetype: modify delete: olcRootPW - add: olcRootPW olcRootPW: {SSHA}FqKYv/azMmj/tp2LTSWzOzJf65h/nRKp ^D root@04a84d35f749:/tmp# ldapmodify -Y EXTERNAL -H ldapi:// -f modify.ldif ``` ## Connection depuis apache directory studio Configurer ADS avec : - compte : cn=admin,cn=config - mdp : celui utilisé avec slappasswd - dn de base : olcDatabase={1}mdb,cn=config => pour configurer le serveur openldap - dn de base : cn=schema,cn=config => pour consulter les schemas connus par openldap