Implementare un'architettura ridondante master/slave OpenLDAP: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
m
nessun oggetto della modifica
mNessun oggetto della modifica
Riga 5: Riga 5:
Debian Etch 4.0 installa OpenLDAP 2.3, che supporta entrambi i moduli, ma dalla versione 2.4 OpenLDAP eliminerà il supporto al modulo <code>slurpd</code> (come si legge nella documentazione ufficiale di OpenLDAP 2.4). Pertanto in questa guida verrà preso in considerazione l'approccio <code>syncrepl</code> alla replicazione di LDAP, in modo da garantirci possibilità di aggiornamento dell'infrastruttura.
Debian Etch 4.0 installa OpenLDAP 2.3, che supporta entrambi i moduli, ma dalla versione 2.4 OpenLDAP eliminerà il supporto al modulo <code>slurpd</code> (come si legge nella documentazione ufficiale di OpenLDAP 2.4). Pertanto in questa guida verrà preso in considerazione l'approccio <code>syncrepl</code> alla replicazione di LDAP, in modo da garantirci possibilità di aggiornamento dell'infrastruttura.
== Il master server LDAP ==
== Il master server LDAP ==
Il master server LDAP su cui ci baseremo viene usato per fornire servizi di autenticazione centralizzata agli utenti Samba e Unix così come indicato da [[Samba e OpenLDAP: creare un controller di dominio con Debian Etch | questa guida]]. I file di configurazione di OpenLDAP sono perciò gli stessi presenti nella guida indicata; sono state evidenziate in '''grassetto''' le modifiche e/o le aggiunte rispetto ai file originali di partenza della guida, modifiche necessarie per convertire il master server LDAP in un provider (il termine usato da OpenLDAP per indicare il server che fornisce i dati a <code>syncrepl</code> affinchè vengano trasferiti a un consumer o slave server LDAP).<br/>
Il master server LDAP su cui ci baseremo viene usato per fornire servizi di autenticazione centralizzata agli utenti Samba e Unix così come indicato da [[Samba e OpenLDAP: creare un controller di dominio con Debian Etch | questa guida]]. I file di configurazione di OpenLDAP sono perciò gli stessi presenti nella guida indicata; sono state evidenziate in '''grassetto''' le modifiche e/o le aggiunte rispetto ai file originali di partenza della guida, modifiche necessarie per convertire il master server LDAP in un provider (il termine usato da OpenLDAP per indicare il server che fornisce i dati a <code>syncrepl</code> affinché vengano trasferiti a un consumer o slave server LDAP).<br/>
<br/>
<br/>
'''File <code>/etc/ldap/slapd.conf</code>''':<br/><br/>
'''File <code>/etc/ldap/slapd.conf</code>''':<br/>
<code>
: # Allow LDAPv2 binds
: allow bind_v2


: # Schema and objectClass definitions
# Allow LDAPv2 binds
: include /etc/ldap/schema/core.schema
allow bind_v2 <br/>
: include /etc/ldap/schema/cosine.schema
# Schema and objectClass definitions
: include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/core.schema
: include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/cosine.schema
: include /etc/ldap/schema/samba.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/samba.schema <br/>
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
'''loglevel sync'''
modulepath /usr/lib/ldap
moduleload back_bdb
sizelimit 500
tool-threads 1
backend bdb
checkpoint 512 30
database bdb <br/>
suffix "dc=dominio,dc=local"
rootdn "cn=admin,dc=dominio,dc=local"
rootpw "password"
'''moduleload syncprov'''
'''index entryCSN,entryUUID eq'''
'''overlay syncprov'''
'''syncprov-checkpoint 100 10'''
'''syncprov-sessionlog 200''' <br/>
directory "/var/lib/ldap"
dbconfig set_cachesize 0 2097152 0
dbconfig set_lk_max_objects 1500
dbconfig set_lk_max_locks 1500
dbconfig set_lk_max_lockers 1500 <br/>
index objectClass eq
index uid,uidNumber,gidNumber,memberUid eq
index cn,mail,surname,givenname eq,subinitial
index sambaSID eq
index sambaPrimaryGroupSID eq
index sambaDomainName eq <br/>
lastmod on
access to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword
by dn="cn=admin,dc=dominio,dc=local" write <br/>
'''by dn=”uid=replicant,ou=Users,dc=dominio,dc=local” read''' <br/>
by anonymous auth
by self write
by * none
access to dn.base="" by * read
access to *
by dn="cn=admin,dc=dominio,dc=local" write
by * read


: pidfile /var/run/slapd/slapd.pid
: argsfile /var/run/slapd/slapd.args
: '''loglevel sync'''
: modulepath /usr/lib/ldap
: moduleload back_bdb
: sizelimit 500
: tool-threads 1
: backend bdb
: checkpoint 512 30
: database bdb
: suffix "dc=dominio,dc=local"
: rootdn "cn=admin,dc=dominio,dc=local"
: rootpw "password"
: '''moduleload syncprov'''
: '''index entryCSN,entryUUID eq'''
: '''overlay syncprov'''
: '''syncprov-checkpoint 100 10'''
: '''syncprov-sessionlog 200'''
: directory "/var/lib/ldap"
: dbconfig set_cachesize 0 2097152 0
: dbconfig set_lk_max_objects 1500
: dbconfig set_lk_max_locks 1500
: dbconfig set_lk_max_lockers 1500
: index objectClass eq
: index uid,uidNumber,gidNumber,memberUid eq
: index cn,mail,surname,givenname eq,subinitial
: index sambaSID eq
: index sambaPrimaryGroupSID eq
: index sambaDomainName eq
: lastmod on
: access to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword
: by dn="cn=admin,dc=dominio,dc=local" write
: '''by dn=”uid=replicant,ou=Users,dc=dominio,dc=local” read'''
: by anonymous auth
: by self write
: by * none
: access to dn.base="" by * read
: access to *
: by dn="cn=admin,dc=dominio,dc=local" write
: by * read
</code>
<br/>
<br/>
Da notare che la configurazione prevede che venga aggiunto al database LDAP un nuovo utente (<code>uid=replicant,ou=Users,dc=dominio,dc=local</code>) per le operazioni di sincronizzazione tra i due server. Creiamo quindi il nuovo utente, utilizzando i soliti smbldap-tools:
Da notare che la configurazione prevede che venga aggiunto al database LDAP un nuovo utente (<code>uid=replicant,ou=Users,dc=dominio,dc=local</code>) per le operazioni di sincronizzazione tra i due server. Creiamo quindi il nuovo utente, utilizzando i soliti smbldap-tools:
Riga 72: Riga 64:
</pre>
</pre>
All'interno del file di configurazione <code>/etc/ldap/slapd.conf</code> sono state poi inserite le direttive:
All'interno del file di configurazione <code>/etc/ldap/slapd.conf</code> sono state poi inserite le direttive:
<code>
<pre>
: moduleload syncprov
moduleload syncprov
: index entryCSN,entryUUID eq
index entryCSN,entryUUID eq
: overlay syncprov
overlay syncprov
: syncprov-checkpoint 100 10
syncprov-checkpoint 100 10
: syncprov-sessionlog 200
syncprov-sessionlog 200
</code>
</pre>
Queste direttive servono per configurare il modulo <code>syncprov</code> che ha il compito di tracciare i cambiamenti nel database LDAP e di marcarli per renderli identificabili dallo slave server LDAP, affinché vengano replicati.<br/>
Queste direttive servono per configurare il modulo <code>syncprov</code> che ha il compito di tracciare i cambiamenti nel database LDAP e di marcarli per renderli identificabili dallo slave server LDAP, affinché vengano replicati.<br/>
Per il master server LDAP questo è tutto. Per rendere valide le modifiche basta riavviare il demone:
Per il master server LDAP questo è tutto. Per rendere valide le modifiche basta riavviare il demone:
Riga 87: Riga 79:
== Lo slave server LDAP ==
== Lo slave server LDAP ==
Per lo slave server LDAP è sufficiente prendere il file originale di configurazione e aggiungere la sezione in '''grassetto''':
Per lo slave server LDAP è sufficiente prendere il file originale di configurazione e aggiungere la sezione in '''grassetto''':
<br/><br/>
'''File <code>/etc/ldap/slapd.conf</code>''':<br/><br/>
<code>
: # Allow LDAPv2 binds
: allow bind_v2
: # Schema and objectClass definitions
: include /etc/ldap/schema/core.schema
: include /etc/ldap/schema/cosine.schema
: include /etc/ldap/schema/nis.schema
: include /etc/ldap/schema/inetorgperson.schema
: include /etc/ldap/schema/samba.schema
: pidfile /var/run/slapd/slapd.pid
: argsfile /var/run/slapd/slapd.args
: '''loglevel sync'''
: modulepath /usr/lib/ldap
: moduleload back_bdb
: sizelimit 500
: tool-threads 1
: backend bdb
: checkpoint 512 30
: database bdb
: suffix "dc=dominio,dc=local"
: rootdn          "cn=admin,dc=dominio,dc=local"
: rootpw          "password"
: directory "/var/lib/ldap"
: dbconfig set_cachesize 0 2097152 0
: dbconfig set_lk_max_objects 1500
: dbconfig set_lk_max_locks 1500
: dbconfig set_lk_max_lockers 1500
: index objectClass eq
: index uid,uidNumber,gidNumber,memberUid eq
: index cn,mail,surname,givenname eq,subinitial
: index sambaSID eq
: index sambaPrimaryGroupSID eq
: index sambaDomainName eq
: lastmod on
: access to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword
: by dn="cn=admin,dc=dominio,dc=local" write
: by anonymous auth
: by self write
: by * none
: access to dn.base="" by * read
: access to *
: by dn="cn=admin,dc=dominio,dc=local" write
: by * read


: '''syncrepl rid=1'''
'''File <code>/etc/ldap/slapd.conf</code>''':<br/>
: '''provider=ldap://INDIRIZZO.IP.DEL.MASTER:389'''
 
: '''type=refreshAndPersist'''
# Allow LDAPv2 binds
: '''searchbase=”dc=dominio,dc=local”
allow bind_v2
: '''filter=”(objectClass=*)”'''
# Schema and objectClass definitions
: '''scope=sub'''
include /etc/ldap/schema/core.schema
: '''schemachecking=off'''
include /etc/ldap/schema/cosine.schema
: '''bindmethod=simple'''
include /etc/ldap/schema/nis.schema
: '''binddn=”uid=replicant,ou=Users,dc=dominio,dc=local”'''
include /etc/ldap/schema/inetorgperson.schema
: '''credentials=Password_Impostata_per_Utente_Replicant'''
include /etc/ldap/schema/samba.schema
</code><br/>
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
'''loglevel sync'''
modulepath /usr/lib/ldap
moduleload back_bdb
sizelimit 500
tool-threads 1
backend bdb
checkpoint 512 30
database bdb
suffix "dc=dominio,dc=local"
rootdn          "cn=admin,dc=dominio,dc=local"
rootpw          "password"
directory "/var/lib/ldap"
dbconfig set_cachesize 0 2097152 0
dbconfig set_lk_max_objects 1500
dbconfig set_lk_max_locks 1500
dbconfig set_lk_max_lockers 1500
index objectClass eq
index uid,uidNumber,gidNumber,memberUid eq
index cn,mail,surname,givenname eq,subinitial
index sambaSID eq
index sambaPrimaryGroupSID eq
index sambaDomainName eq
lastmod on
access to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword
by dn="cn=admin,dc=dominio,dc=local" write
by anonymous auth
by self write
by * none
access to dn.base="" by * read
access to *
by dn="cn=admin,dc=dominio,dc=local" write
by * read<br/>
'''syncrepl rid=1'''
'''provider=ldap://INDIRIZZO.IP.DEL.MASTER:389'''
'''type=refreshAndPersist'''
'''searchbase=”dc=dominio,dc=local”
'''filter=”(objectClass=*)”'''
'''scope=sub'''
'''schemachecking=off'''
'''bindmethod=simple'''
'''binddn=”uid=replicant,ou=Users,dc=dominio,dc=local”'''
'''credentials=Password_Impostata_per_Utente_Replicant'''
 
Il server slave LDAP è configurato per connettersi al server master avente indirizzo IP INDIRIZZO.IP.DEL.MASTER e in ascolto sulla porta 389. Le direttive <code>searchbase=”dc=dominio,dc=local”</code> e <code>filter=”(objectClass=*)”</code> assicurano che tutti i dati del dominio saranno replicati. Il server slave, infine, si connette al master utilizzando le credenziali dell'utente <code>replicant</code> che abbiamo creato in precedenza e a cui già abbiamo dato permessi di completa lettura sul database LDAP del server master.<br/>
Il server slave LDAP è configurato per connettersi al server master avente indirizzo IP INDIRIZZO.IP.DEL.MASTER e in ascolto sulla porta 389. Le direttive <code>searchbase=”dc=dominio,dc=local”</code> e <code>filter=”(objectClass=*)”</code> assicurano che tutti i dati del dominio saranno replicati. Il server slave, infine, si connette al master utilizzando le credenziali dell'utente <code>replicant</code> che abbiamo creato in precedenza e a cui già abbiamo dato permessi di completa lettura sul database LDAP del server master.<br/>
Su entrambi i server è stata impostata la direttiva <code>loglevel sync</code>, che avrà come risultato un logging dettagliato delle attività di OpenLDAP sul server Syslog di default.<br/>
Su entrambi i server è stata impostata la direttiva <code>loglevel sync</code>, che avrà come risultato un logging dettagliato delle attività di OpenLDAP sul server Syslog di default.<br/>
Riga 157: Riga 148:
Vanno modificati i file:
Vanno modificati i file:
* <code>'''/etc/smbldap-tools/smbldap.conf'''</code><br/>
* <code>'''/etc/smbldap-tools/smbldap.conf'''</code><br/>
<code>
<pre>
: slaveLDAP="127.0.0.1"
slaveLDAP="127.0.0.1"
: slavePort="389"
slavePort="389"
: masterLDAP="127.0.0.1"
masterLDAP="127.0.0.1"
: masterPort="389"
masterPort="389"
</code>
</pre>
Gli indirizzi IP vanno modificati con quelli dei due server LDAP.
Gli indirizzi IP vanno modificati con quelli dei due server LDAP.
* <code>'''/etc/samba/smb.conf''''</code><br/>
* <code>'''/etc/samba/smb.conf'''</code><br/>
La direttiva:
La direttiva:
<code>
<pre>
: passdb backend = ldapsam:ldap://127.0.0.1
passdb backend = ldapsam:ldap://127.0.0.1
</code>
</pre>
va sostituita con:
va sostituita con:
<code>
<pre>
: passdb backend = ldapsam:"ldap://IP.MASTER ldap://IP.SLAVE"
passdb backend = ldapsam:"ldap://IP.MASTER ldap://IP.SLAVE"
</code>
</pre>


=== Client LDAP ===
=== Client LDAP ===
* <code>'''/etc/ldap/ldap.conf'''</code>
* <code>'''/etc/ldap/ldap.conf'''</code>
<code>
<pre>
: URI ldap://localhost
URI ldap://localhost
</code>
</pre>
va sostituito con:
va sostituito con:
<code>
<pre>
: URI ldap://IP.MASTER ldap://IP.SLAVE
URI ldap://IP.MASTER ldap://IP.SLAVE
</code>
</pre>
=== Autenticazione Unix ===
=== Autenticazione Unix ===
* <code>'''/etc/libnss-ldap.conf'''</code>
* <code>'''/etc/libnss-ldap.conf'''</code>
<code>
<pre>
: URI ldap://localhost
URI ldap://localhost
</code>
</pre>
va sostituito con:
va sostituito con:
<code>
<pre>
: URI ldap://IP.MASTER ldap://IP.SLAVE
URI ldap://IP.MASTER ldap://IP.SLAVE
</code>
</pre>
== Verifiche Finali ==
== Verifiche Finali ==
Dopo qualche tempo i due server LDAP dovrebbero essersi sincronizzati e una ricerca effettuata con <code>ldapsearch</code> sul master server dovrebbe dare gli stessi risultati di una effettuata sullo slave server:
Dopo qualche tempo i due server LDAP dovrebbero essersi sincronizzati e una ricerca effettuata con <code>ldapsearch</code> sul master server dovrebbe dare gli stessi risultati di una effettuata sullo slave server:
Riga 200: Riga 191:
<pre>
<pre>
# ldapsearch -H ldap://IP.SLAVE.SERVER -b "dc=dominio,dc=local" -LLL "cn=nome.utente*" -x
# ldapsearch -H ldap://IP.SLAVE.SERVER -b "dc=dominio,dc=local" -LLL "cn=nome.utente*" -x
</pre>.
</pre>
Se si rende necessaria una risincronizzazione completa dello slave server, è possibile riavviare il demone <code>slapd</code> dopo aver inserito la riga seguente nel suo file di configurazione <code>/etc/default/slapd</code>:
Se si rende necessaria una risincronizzazione completa dello slave server, è possibile riavviare il demone <code>slapd</code> dopo aver inserito la riga seguente nel suo file di configurazione <code>/etc/default/slapd</code>:
<pre>
<pre>
Riga 224: Riga 215:
|Numero_revisori=1
|Numero_revisori=1
}}
}}


[[Categoria:Reti con Windows]][[Categoria:Samba]]
[[Categoria:Reti con Windows]][[Categoria:Samba]]
6 999

contributi

Menu di navigazione