Réplication LDAP¶
Configuration d'une première réplique du serveur LDAP maître.
- Attribution d'un identifiant au serveur esclave
- Création d'un utilisateur permettant au serveur esclave de se connecter au maître
- Configuration sur le serveur maître
- Configuration sur le serveur esclave
Attribution d'un RID¶
Le RID est un identifiant numérique unique au sein des serveurs LDAP "esclaves".
La première réplique du LDAP aura le RID 1. C'est la valeur qui sera utilisé dans ce document.
La seconde réplique du LDAP aura le RID 2, etc...
- les noms DNS des serveurs LDAP
- les users dédiés à la réplication
=> le serveur maître sera nommé ldap0.illyse.org
=> la première réplique aura le RID 1, sera nommée ldap1.illyse.org, et se connectera au serveur maître en tant que cn=ldaprep1,ou=services,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR
=> la seconde réplique aura le RID 2, sera nommée ldap2.illyse.org, et se connectera au serveur maître en tant que cn=ldaprep2,ou=services,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR
=> etc
Note: un nom "global" ldap.illyse.org sera également défini sur le DNS, et possèdera des enregistrement A pointant sur les IP de tous les serveurs LDAP (ldap0.illyse.org, ldap1.illyse.org, ldap2.illyse.org...). Les services seront paramétrés pour attaquer ldap.illyse.org, et utiliseront donc indifféremment l'un des serveurs LDAP disponibles.
Création d'un utilisateur pour la réplication¶
Utilisateur du LDAP¶
Se connecter en tant que cn=admin,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR sur le LDAP maître.
Sous ou=services, créer l'utilisateur cn=ldaprep1, dédié à la réplication.
(classe organizationalRole - choix un peu arbitraire)
dn: cn=ldaprep1,ou=services,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR objectClass: organizationalRole objectClass: top cn: ldaprep1
Note: on ne définit volontairement pas de mot de passe pour cet utilisateur. Un certificat sera nécessaire pour se connecter en tant que cn=ldaprep1.
Modification des ACL¶
Se connecter en tant que cn=admin,cn=config sur le LDAP maître.
Pour permettre la réplication, cn=ldaprep1 a besoin de droits en lecture sur l'intégralité de l'annuaire.
On ajoute aux différentes clauses la règle by ssf=128 dn="cn=ldaprep1,ou=services,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR" read.
olcAccess: {0}to attrs=userPassword,shadowLastChange by ssf=128 self write b y anonymous auth by ssf=128 dn="cn=ldaprep1,ou=services,o=ILLYSE,l=Villeurb anne,st=RHA,c=FR" read by users none by * none olcAccess: {3}to dn.base="" by * read olcAccess: {4}to * by ssf=128 self write by ssf=128 dn="cn=ldaprep1,ou=servi ces,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR" read by users none by * none
Certificats et clés privée¶
On utilise la PKI pour générer un certificat serveur et une clé privée pour ldap1.illyse.org (cf ldap-pki).
On utilise la PKI pour générer un certificat client et une clé privée pour cn=ldaprep1.
Les certificats et les clés sont placés sur le LDAP esclave dans /etc/ldap. (FIXME)
Ne pas oublier le certificat de la CA.
root@kirkwood:/etc/ldap# ls -al *.crt *.key -rw-r--r-- 1 openldap openldap 1797 Oct 16 23:08 ca.crt -rw-r--r-- 1 openldap openldap 5649 Oct 17 13:36 ldap1.illyse.org.crt -rw------- 1 openldap openldap 1675 Oct 17 13:36 ldap1.illyse.org.key -rw-r--r-- 1 openldap openldap 5325 Oct 16 23:08 ldaprep1.crt -rw------- 1 openldap openldap 1675 Oct 16 23:08 ldaprep1.key
Configuration sur le serveur maître¶
Se connecter en tant que cn=admin,cn=config sur le serveur maître.
Le serveur "maître" est dit provider.
Modifier cn=module{0},cn=config: ajouter un attribut olcModuleLoad de valeur {1}syncprov
LDIF
dn: cn=module{0},cn=config objectClass: olcModuleList cn: module{0} olcModuleLoad: {0}back_hdb olcModuleLoad: {1}syncprov olcModulePath: /usr/lib/ldapAjouter une nouvelle entrée sous olcDatabase={1}hdb,cn=config: clic-droit sur olcDatabase={1}hdb,cn=config / Nouveau / Nouvelle entrée
- classe olcSyncProvConfig (Note: dans la fenêtre de sélection de classes d'ADS, j'ai du jouer avec le bouton de rafraichissement pour faire apparaître cette classe - bug dans ADS?)
- RDN=olcOverlay
- olcOverlay={0}syncprov
Le serveur est maintenant configuré en tant que provider. Les serveurs esclaves peuvent s'y connecter pour répliquer son contenu.
Configuration sur les serveurs esclaves¶
Le serveur "esclave" est dit consumer.
Se connecter en tant que cn=config
Il suffit d'ajouter à l'objet olcDatabase={1}hdb,cn=config un attribut indiquant comment contacter le provider:
olcSyncrepl: {0}rid=1 provider=ldap://ldap0.illyse.org:389 type=refreshAndPe rsist retry="60 10 300 +" searchbase="o=ILLYSE,l=Villeurbanne,st=RHA,c=FR" schemachecking=on bindmethod=sasl saslmech=external starttls=critical tls_c ert=/etc/ldap/ldaprep1.crt tls_key=/etc/ldap/ldaprep1.key tls_cacert=/etc/l dap/ca.crt tls_reqcert=demand
Mis à jour par Pierre-Arnaud Poudret il y a plus de 11 ans · 1 révisions