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