Ldap-replica » Historique » Version 1
Pierre-Arnaud Poudret, 05/06/2013 15:46
| 1 | 1 | Pierre-Arnaud Poudret | h1. Réplication LDAP |
|---|---|---|---|
| 2 | |||
| 3 | Configuration d'une première réplique du serveur LDAP maître. |
||
| 4 | |||
| 5 | * Attribution d'un identifiant au serveur esclave |
||
| 6 | * Création d'un utilisateur permettant au serveur esclave de se connecter au maître |
||
| 7 | * Configuration sur le serveur maître |
||
| 8 | * Configuration sur le serveur esclave |
||
| 9 | |||
| 10 | h1. Attribution d'un RID |
||
| 11 | |||
| 12 | Le RID est un identifiant numérique unique au sein des serveurs LDAP "esclaves". |
||
| 13 | |||
| 14 | La première réplique du LDAP aura le RID 1. C'est la valeur qui sera utilisé dans ce document. |
||
| 15 | La seconde réplique du LDAP aura le RID 2, etc... |
||
| 16 | |||
| 17 | On utilisera ce RID pour indexer également |
||
| 18 | * les noms DNS des serveurs LDAP |
||
| 19 | * les users dédiés à la réplication |
||
| 20 | |||
| 21 | => le serveur maître sera nommé ldap0.illyse.org |
||
| 22 | |||
| 23 | => 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 |
||
| 24 | |||
| 25 | => 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 |
||
| 26 | |||
| 27 | => etc |
||
| 28 | |||
| 29 | +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. |
||
| 30 | |||
| 31 | |||
| 32 | h1. Création d'un utilisateur pour la réplication |
||
| 33 | |||
| 34 | h2. Utilisateur du LDAP |
||
| 35 | |||
| 36 | Se connecter en tant que _cn=admin,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR_ sur le LDAP maître. |
||
| 37 | |||
| 38 | Sous _ou=services_, créer l'utilisateur _cn=ldaprep1_, dédié à la réplication. |
||
| 39 | (classe organizationalRole - choix un peu arbitraire) |
||
| 40 | <pre> |
||
| 41 | dn: cn=ldaprep1,ou=services,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR |
||
| 42 | objectClass: organizationalRole |
||
| 43 | objectClass: top |
||
| 44 | cn: ldaprep1 |
||
| 45 | </pre> |
||
| 46 | |||
| 47 | 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. |
||
| 48 | |||
| 49 | h2. Modification des ACL |
||
| 50 | |||
| 51 | Se connecter en tant que _cn=admin,cn=config_ sur le LDAP maître. |
||
| 52 | |||
| 53 | Pour permettre la réplication, cn=ldaprep1 a besoin de droits en lecture sur l'intégralité de l'annuaire. |
||
| 54 | |||
| 55 | 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_. |
||
| 56 | |||
| 57 | <pre> |
||
| 58 | olcAccess: {0}to attrs=userPassword,shadowLastChange by ssf=128 self write b |
||
| 59 | y anonymous auth by ssf=128 dn="cn=ldaprep1,ou=services,o=ILLYSE,l=Villeurb |
||
| 60 | anne,st=RHA,c=FR" read by users none by * none |
||
| 61 | olcAccess: {3}to dn.base="" by * read |
||
| 62 | olcAccess: {4}to * by ssf=128 self write by ssf=128 dn="cn=ldaprep1,ou=servi |
||
| 63 | ces,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR" read by users none by * none |
||
| 64 | </pre> |
||
| 65 | |||
| 66 | h2. Certificats et clés privée |
||
| 67 | |||
| 68 | On utilise la [[PKI]] pour générer un certificat serveur et une clé privée pour _ldap1.illyse.org_ (cf [[ldap-pki]]). |
||
| 69 | |||
| 70 | On utilise la [[PKI]] pour générer un certificat client et une clé privée pour _cn=ldaprep1_. |
||
| 71 | |||
| 72 | Les certificats et les clés sont placés sur le LDAP esclave dans /etc/ldap. (FIXME) |
||
| 73 | Ne pas oublier le certificat de la CA. |
||
| 74 | |||
| 75 | <pre> |
||
| 76 | root@kirkwood:/etc/ldap# ls -al *.crt *.key |
||
| 77 | -rw-r--r-- 1 openldap openldap 1797 Oct 16 23:08 ca.crt |
||
| 78 | -rw-r--r-- 1 openldap openldap 5649 Oct 17 13:36 ldap1.illyse.org.crt |
||
| 79 | -rw------- 1 openldap openldap 1675 Oct 17 13:36 ldap1.illyse.org.key |
||
| 80 | -rw-r--r-- 1 openldap openldap 5325 Oct 16 23:08 ldaprep1.crt |
||
| 81 | -rw------- 1 openldap openldap 1675 Oct 16 23:08 ldaprep1.key |
||
| 82 | </pre> |
||
| 83 | |||
| 84 | h1. Configuration sur le serveur maître |
||
| 85 | |||
| 86 | Se connecter en tant que cn=admin,cn=config sur le serveur maître. |
||
| 87 | |||
| 88 | Le serveur "maître" est dit _provider_. |
||
| 89 | |||
| 90 | Modifier _cn=module{0},cn=config_: ajouter un attribut olcModuleLoad de valeur {1}syncprov |
||
| 91 | |||
| 92 | LDIF |
||
| 93 | <pre> |
||
| 94 | dn: cn=module{0},cn=config |
||
| 95 | objectClass: olcModuleList |
||
| 96 | cn: module{0} |
||
| 97 | olcModuleLoad: {0}back_hdb |
||
| 98 | olcModuleLoad: {1}syncprov |
||
| 99 | olcModulePath: /usr/lib/ldap |
||
| 100 | </pre> |
||
| 101 | |||
| 102 | Ajouter une nouvelle entrée sous _olcDatabase={1}hdb,cn=config_: clic-droit sur olcDatabase={1}hdb,cn=config / Nouveau / Nouvelle entrée |
||
| 103 | * 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?) |
||
| 104 | * RDN=olcOverlay |
||
| 105 | * olcOverlay={0}syncprov |
||
| 106 | |||
| 107 | Le serveur est maintenant configuré en tant que provider. Les serveurs esclaves peuvent s'y connecter pour répliquer son contenu. |
||
| 108 | |||
| 109 | h1. Configuration sur les serveurs esclaves |
||
| 110 | |||
| 111 | Le serveur "esclave" est dit _consumer_. |
||
| 112 | |||
| 113 | Se connecter en tant que cn=config |
||
| 114 | |||
| 115 | Il suffit d'ajouter à l'objet _olcDatabase={1}hdb,cn=config_ un attribut indiquant comment contacter le provider: |
||
| 116 | |||
| 117 | <pre> |
||
| 118 | olcSyncrepl: {0}rid=1 provider=ldap://ldap0.illyse.org:389 type=refreshAndPe |
||
| 119 | rsist retry="60 10 300 +" searchbase="o=ILLYSE,l=Villeurbanne,st=RHA,c=FR" |
||
| 120 | schemachecking=on bindmethod=sasl saslmech=external starttls=critical tls_c |
||
| 121 | ert=/etc/ldap/ldaprep1.crt tls_key=/etc/ldap/ldaprep1.key tls_cacert=/etc/l |
||
| 122 | dap/ca.crt tls_reqcert=demand |
||
| 123 | </pre> |