====== Réplication du LDAP ======
On réplique le LDAP en utilisant ldap-master et ldap-slave. Pour cela nous utilisons d'une part le module de réplication de LDAP : Syncrepl et Keepalived (déjà utilisé pour les [[wiki:wifi:nat:passerellewifi|Passerelle wifi]])
Ldap-master est en lecture/écriture, ldap-slave est en lecture seule.
On doit d'abord configurer le master (le seul qui peut modifier le contenu du LDAP), pour ajouter un User qui permettra de faire la synchronisation et le module qui sert à synchroniser.
On ajoute l'utilisateur :
dn: cn=synchro,dc=minet,dc=net
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: synchro
description: replication user
userPassword: changeme
On ajoute le module :
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib/ldap
olcModuleLoad: syncprov.la
Ensuite nous devons accorder les droits suffisants à l'utilisateur ''synchro'' pour qu'il puisse lire l'arborescence complète :
* Sur le contenu :
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=minet,dc=net" write by dn="cn=inspector,dc=minet,dc=net" read by dn="cn=synchro,dc=minet,dc=net" read by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by * read
* Sur le schéma :
dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to *
by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage
by dn.exact="cn=synchro,dc=minet,dc=net" read
by * break
Enfin on utilise le module //Syncprov// pour exposer l'arborescence :
* du schéma :
dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: {0}syncprov
olcSpCheckpoint: 100 10
olcSpSessionlog: 100
* du contenu :
dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: {0}syncprov
olcSpCheckpoint: 100 10
olcSpSessionlog: 100
Enfin on configure ldap-slave :
Une fois la dernière réplication configurée, il n'est plus possible de modifier le contenu de ldap-slave, y compris la configuration TLS. Pensez donc bien à configurer cela avant. L'ordre des modifications suivantes est donc à respecter.
On ajoute les droits (et oui ils ne sont pas synchronisés)
dn: olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=minet,dc=net" write by dn="cn=inspector,dc=minet,dc=net" read by dn="cn=synchro,dc=minet,dc=net" read by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by * read
On configure la réplication pour le contenu :
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=003
provider=ldaps://ldap-master.minet.net/
bindmethod=simple
binddn="cn=synchro,dc=minet,dc=net"
credentials=changeme
searchbase="dc=minet,dc=net"
schemachecking=on
type=refreshAndPersist
retry="60 +"
tls_cacert=/etc/ssl/certs/MiNET_private_CA.pem
Puis on configure celle du schéma (qui empêchera toutes les autres modifications):
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
provider=ldaps://ldap-master.minet.net/
bindmethod=simple
binddn="cn=synchro,dc=minet,dc=net"
credentials=changeme
searchbase="cn=schema,cn=config"
schemachecking=on
type=refreshAndPersist
retry="60 +"
tls_cacert=/etc/ssl/certs/MiNET_private_CA.pem
-
add: olcSyncRepl
olcSyncRepl: rid=002
provider=ldaps://ldap-master.minet.net/
bindmethod=simple
binddn="cn=synchro,dc=minet,dc=net"
credentials=changeme
searchbase="cn=config"
filter="(| (objectClass=olcModuleList) (objectClass=olcMemberOf))"
schemachecking=on
type=refreshAndPersist
retry="60 +"
tls_cacert=/etc/ssl/certs/MiNET_private_CA.pem
Le filtre de la dernière synchro permet de ne pas synchro tout sous cn=config mais seulement ce qui nous intéresse.