No description
Find a file
2024-11-10 12:28:38 +01:00
defaults Migration vers l'image bitnami/openldap + documentation + prise en compte de plusieurs schemas dès l'installation 2023-12-31 12:54:21 +01:00
files Migration vers l'image bitnami/openldap + documentation + prise en compte de plusieurs schemas dès l'installation 2023-12-31 12:54:21 +01:00
handlers Correction handler docker compose 2023-12-10 18:07:46 +01:00
meta Ajout des metadonnees pour ansible-galaxy 2022-08-05 17:22:16 +02:00
tasks Migration vers l'image bitnami/openldap + documentation + prise en compte de plusieurs schemas dès l'installation 2023-12-31 12:54:21 +01:00
templates Correction template docker-compose 2024-11-10 12:28:38 +01:00
README.md Migration vers l'image bitnami/openldap + documentation + prise en compte de plusieurs schemas dès l'installation 2023-12-31 12:54:21 +01:00

Role : docker_openldap

Services fournis

Installation de l'image bitnami openldap sur un serveur docker_host avec schemas rfc2307bis, owncloud (pour quotas) et postfix-book.

Variables

Fournir les variables suivantes. Par exemple :

docker_openldap_data_dir: /data1
docker_openldap_service_id: ldap_example_com
docker_openldap_version: latest
docker_openldap_rootdn: "dc=example,dc=com"
docker_openldap_admin_password: "pwdAdmin"
docker_openldap_config_password: "pwdConfig"
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_version Version du conteneur docker souhaité
docker_openldap_port 389 Le numero de port local pour la connexion à openldap non chiffré
docker_openldap_port_tls 636 Le numero de port local pour la connexion à openldap via tls
docker_openldap_rootdn dn de la racine de l'annuaire (par exemple: dc=example,dc=com)
docker_openldap_admin_username ldapadmin Nom de l'administrateur de l'annuaire
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_config_username configadmin Nom de l'administrateur de configuration de l'annuaire
docker_openldap_config_password Mot de passe administrateur de configuration de l'annuaire ; le dn de l'administrateur est cn=admin suivi du rootdn, par exemple : cn=admin,dc=example,dc=com)
docker_openldap_configure_ppolicy yes Permet d'activer la configuration du module openldap ppolicy permettant de définir un stratégie applicable aux mots de passe
docker_openldap_ppolicy_hash_cleartext yes Si le module ppolicy est activé, configure le hachage des mots de passe si ces derniers sont définis par le client en clair
docker_openldap_enable_tls no Permet d'activer la configuration de tls. Lire la section TLS ci-dessous.
docker_openldap_require_tls no Permet d'exiger tls même sur le port non chiffré
docker_openldap_allow_anon_binding: no Permet d'exiger une authentification pour se connecter à l'annuaire

Configuration TLS

Si la configuration TLS est activée, le dossier certs, présent dans le même dossier que docker-compose.yml, devra contenir :

  • pubcert.pem : le certificat présenté par le serveur
  • privkey.pem : la clé privée relative à la clé publique du certificat ci-dessus
  • chain.pem : la chaine de certification permettant aux clients de vérifier la validité du certificat présenté.

Poursuite de l'installation du serveur openldap

Vérification de la bonne connexion à l'annuaire

  • Connexion à l'annuaire en tant qu'administrateur
ldapvi -h ldap://fqdn:389 -b "dc=example,dc=org" -D cn=ldapadmin,dc=example,dc=org
  • Connexion à l'annuaire en tant qu'administrateur de configuration (pour modification des acl ou autre)
ldapvi -h ldap://fqdn:389 -b "cn=config" -D cn=configadmin,cn=config
  • dn de base : cn=config => pour configurer le serveur openldap
  • dn de base : cn=schema,cn=config => pour consulter les schemas connus par openldap

Configuration de la strategie de mot de passe avec le module ppolicy

Vérification que le module ppolicy est bien activé

# docker compose exec -i openldap slapcat -n 0 -F /bitnami/openldap/slapd.d/ | grep olcModuleLoad | grep ppolicy
olcModuleLoad: {0}ppolicy.so

Configuration du module ppolicy

Repérer l'overlay ppolicy et le modifier comme suit :

# ldapvi -h ldap://fqdn:389 -b "cn=config" -D cn=configadmin,cn=config
[...]
dn: olcOverlay={0}ppolicy,olcDatabase={2}mdb,cn=config
objectClass: olcPPolicyConfig
objectClass: olcOverlayConfig
olcOverlay: {0}ppolicy
olcPPolicyDefault: cn=defaultPasswordPolicy,ou=policies,dc=example,dc=org
olcPPolicyForwardUpdates: TRUE
olcPPolicyHashCleartext: TRUE
olcPPolicyUseLockout: TRUE
[...]

Ajout d'une stratégie de mot de passe par défaut

Valeurs à adapter en fonction du besoin.

# ldapvi -h ldap://fqdn:389 -b "dc=example,dc=org" -D cn=ldapadmin,dc=example,org
[...]
add: ou=policies,dc=example,dc=org
objectClass: organizationalUnit
ou: policies

add: cn=defaultPasswordPolicy,ou=policies,dc=example,dc=org
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
[...]

Ajout des overlays memberOf et refint

Ces overlays permettent d'avoir des attributs "virtuels" memberof dans les utilisateurs qui contiennent les groupes auxquels un utilisateur appartient.

Adapter les valeurs si besoin.

Ne s'applique qu'aux groupes créés postérieurement à la configuration.

# ldapvi -h ldap://fqdn:389 -b "cn=config" -D cn=configadmin,cn=config
[...]
add cn=module{2},cn=config
objectClass: olcModuleList
cn: module{2}
olcModulePath: /opt/bitnami/openldap/lib/openldap
olcModuleLoad: {0}memberof.so

add cn=module{3},cn=config
objectClass: olcModuleList
cn: module{3}
olcModulePath: /opt/bitnami/openldap/lib/openldap
olcModuleLoad: {0}refint.so

add olcOverlay={0}memberof,olcDatabase={2}mdb,cn=config
objectClass: olcConfig
objectClass: olcMemberOfConfig
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: {0}memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfUniqueNames
olcMemberOfMemberAD: uniqueMember
olcMemberOfMemberOfAD: memberOf

add olcOverlay={1}refint,olcDatabase={2}mdb,cn=config
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcRefintConfig
objectClass: top
olcOverlay: {1}refint
olcRefintAttribute: manager
olcRefintAttribute: member
olcRefintAttribute: memberof
olcRefintAttribute: owner
olcRefintAttribute: uniqueMember
[...]

Changer un mot de passe admin

  • Obtenir le mot de passe chiffré
# docker compose exec -i openldap slappasswd
New password:
Re-enter new password:
{SSHA}FqKYv/azMmj/tp2LTSWzOzJf65h/nRKp
  • Se connecter avec le compte administrateur approprié et editer l'attribut userPassword pour remplacer l'ancien mot de passe chiffré par le nouveau

Configuration TLS

Le conteneur prend en charge la configuration de TLS dans OpenLDAP si cette configuration est présente dans les variables d'environnement lors du premier démarrage. Il est donc préférable de disposer des certificats avant le premier démarrage.

Dans le cas contraire, l'ajout des directives TLS dans la configuration sera sans effet. Pour configurer TLS à posteriori :

# ldapvi -h ldap://fqdn:389 -b "cn=config" -D cn=configadmin,cn=config
0 cn=config
objectClass: olcGlobal
cn: config
[...]
olcTLSCACertificateFile: /bitnami/certs/chain.pem
olcTLSCertificateFile: /bitnami/certs/pubcert.pem
olcTLSCertificateKeyFile: /bitnami/certs/privkey.pem
olcTLSVerifyClient: never
[...]

Pour tester et deboguer :

ldapsearch -d 1 -LLL -H ldaps://fqdn:636 -x "dc=example,dc=org" -D cn=ldapadmin,dc=example,org

Pour tester la chaine de certification :

openssl s_client -connect fqdn:636 -msg -verify 1

Et en, cas de problème tel que :

ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

vérifier que le fichier de configuration du client LDAP contient bien un trousseau de certificats contenant la racine, par exemple :

# cat /etc/ldap/ldap.conf 
TLS_CACERTDIR /etc/ssl/certs/

Ajout de schemas supplémentaires

Si des schémas supplémentaires sont présents dans le dossier custom-schemas avant le premier démarrage, ils seront intégrés à l'annuaire. Dans le cas contraire, pour en ajouter, placer le fichier ldif du schema à ajouter dans le dossier custom-schemas puis faire :

ldapadd -H ldap://fqdn:389 -x -W -D "cn=configadmin,cn=config" -f custom-schemas/monschema.ldif