ansible-role-docker_openldap/README.md

163 lines
5.5 KiB
Markdown
Raw Normal View History

2022-08-05 14:18:44 +02:00
# 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