Projet

Général

Profil

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>