Project

General

Profile

Actions

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...

On utilisera ce RID pour indexer également
  • 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/ldap

Ajouter 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

Updated by Pierre-Arnaud Poudret over 7 years ago · 1 revisions