GNU/Linux >> Linux Esercitazione >  >> Cent OS

Configura la replica multimaster OpenLDAP su Linux

In questa guida, configureremo la replica multi-master del server OpenLDAP su CentOS 7 / RHEL 7 . Questa configurazione della replica multi-master serve a superare i limiti della tipica replica master-slave in cui solo il server master esegue le modifiche nella directory LDAP .

LEGGI:​​Come configurare la replica master-slave OpenLDAP

Nella replica Multi-Master, due o più server agiscono come master e tutti questi sono autorevoli per qualsiasi modifica nella directory LDAP. Le query dei client vengono distribuite su più server con l'aiuto della replica.

Ambiente

Per la replica Multi-Master, utilizzeremo tre OpenLDAP server. I dettagli sono di seguito.

ldpsrv1.itzgeek.local (192.168.12.10)
ldpsrv2.itzgeek.local (192.168.12.20)
ldpsrv3.itzgeek.local (192.168.12.30)

Installa LDAP

Installa i pacchetti LDAP su tutti i tuoi server.
yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel

Avvia il servizio LDAP e abilitalo per l'avvio automatico all'avvio del sistema.

systemctl start slapd.service
systemctl enable slapd.service

Configura registrazione LDAP

Configura syslog per abilitare la registrazione LDAP.

echo "local4.* /var/log/ldap.log" >> /etc/rsyslog.conf
systemctl restart rsyslog

Configura la replica multimaster di OpenLDAP

Copia il file di configurazione del database di esempio in /var/lib/ldap directory e aggiornare i permessi del file. Dovresti eseguire i passaggi seguenti su tutti i tuoi server OpenLDAP se non diversamente indicato.

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/*

Abiliteremo il modulo syncprov.

vi syncprov_mod.ldif

Copia e incolla le righe sottostanti su syncprov_mod.ldif sopra file.

dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: syncprov.la

Ora invia la configurazione al server LDAP.

ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov_mod.ldif

Risultato:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=module,cn=config"

Abilita replica configurazione

Modifica olcServerID su tutti i server . Ad esempio, per ldpsrv1, imposta olcServerID su 1, per ldpsrv2, imposta olcServerID su 2 e per ldpsrv3, imposta su 3.

vi olcserverid.ldif

Copia e incolla il testo sottostante nel file sopra.

dn: cn=config
changetype: modify
add: olcServerID
olcServerID: 1

Aggiorna la configurazione sul server LDAP.

ldapmodify -Y EXTERNAL -H ldapi:/// -f olcserverid.ldif

Risultato:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

Dobbiamo generare una password per la replica della configurazione LDAP.

slappasswd

Risultato:

New password:
Re-enter new password:
{SSHA}MAfw/QNizKx4NxueW7CpCSN6jeDB5Z+C

Dovresti generare una password su ciascun server eseguendo il comando slappasswd.

Imposta una password per il database di configurazione.

vi olcdatabase.ldif

Copia e incolla il testo sottostante nel file sopra. Devi inserire la password che hai generato nel passaggio precedente su questo file.

dn: olcDatabase={0}config,cn=config
add: olcRootPW
olcRootPW: {SSHA}MAfw/QNizKx4NxueW7CpCSN6jeDB5Z+C

Aggiorna la configurazione sul server LDAP.

ldapmodify -Y EXTERNAL -H ldapi:/// -f olcdatabase.ldif

Risultato:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={0}config,cn=config"

Ora imposteremo la replica della configurazione su tutti i server.

vi configrep.ldif

Copia e incolla il testo sottostante nel file sopra.

### Update Server ID with LDAP URL ###

dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1 ldap://ldpsrv1.itzgeek.local
olcServerID: 2 ldap://ldpsrv2.itzgeek.local
olcServerID: 3 ldap://ldpsrv3.itzgeek.local

### Enable Config Replication###

dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov

### Adding config details for confDB replication ###

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001 provider=ldap://ldpsrv1.itzgeek.local binddn="cn=config"
  bindmethod=simple credentials=x searchbase="cn=config"
  type=refreshAndPersist retry="5 5 300 5" timeout=1
olcSyncRepl: rid=002 provider=ldap://ldpsrv2.itzgeek.local binddn="cn=config"
  bindmethod=simple credentials=x searchbase="cn=config"
  type=refreshAndPersist retry="5 5 300 5" timeout=1
olcSyncRepl: rid=003 provider=ldap://ldpsrv3.itzgeek.local binddn="cn=config"
  bindmethod=simple credentials=x searchbase="cn=config"
  type=refreshAndPersist retry="5 5 300 5" timeout=1
-
add: olcMirrorMode
olcMirrorMode: TRUE

Ora invia la configurazione al server LDAP.

ldapmodify -Y EXTERNAL -H ldapi:/// -f configrep.ldif

Risultato:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

adding new entry "olcOverlay=syncprov,olcDatabase={0}config,cn=config"

modifying entry "olcDatabase={0}config,cn=config"

Abilita la replica del database

A questo punto, tutte le tue configurazioni LDAP vengono replicate. Ora abiliteremo la replica dei dati effettivi, ovvero il database utente. Esegui i passaggi seguenti su uno qualsiasi dei nodi poiché gli altri nodi sono in replica.

Avremmo bisogno di abilitare syncprov per il database hdb.

vi syncprov.ldif

Copia e incolla il testo sottostante nel file sopra.

dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov

Aggiorna la configurazione sul server LDAP.

ldapmodify -Y EXTERNAL -H ldapi:/// -f syncprov.ldif

Risultato:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "olcOverlay=syncprov,olcDatabase={2}hdb,cn=config"

Imposta la replica per il database hdb.

vi olcdatabasehdb.ldif

Copia e incolla il contenuto seguente nel file sopra. Potresti ricevere un errore per olcSuffix, olcRootDN e olcRootPW se li hai già nella tua configurazione. Rimuovi le voci, se non richieste.

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=itzgeek,dc=local
-
replace: olcRootDN
olcRootDN: cn=ldapadm,dc=itzgeek,dc=local
-
replace: olcRootPW
olcRootPW: {SSHA}xtbbtC/1pJclCPzo1n3Szac9jqavSphk
-
add: olcSyncRepl
olcSyncRepl: rid=004 provider=ldap://ldpsrv1.itzgeek.local binddn="cn=ldapadm,dc=itzgeek,dc=local" bindmethod=simple
  credentials=x searchbase="dc=itzgeek,dc=local" type=refreshOnly
  interval=00:00:00:10 retry="5 5 300 5" timeout=1
olcSyncRepl: rid=005 provider=ldap://ldpsrv2.itzgeek.local binddn="cn=ldapadm,dc=itzgeek,dc=local" bindmethod=simple
  credentials=x searchbase="dc=itzgeek,dc=local" type=refreshOnly
  interval=00:00:00:10 retry="5 5 300 5" timeout=1
olcSyncRepl: rid=006 provider=ldap://ldpsrv3.itzgeek.local binddn="cn=ldapadm,dc=itzgeek,dc=local" bindmethod=simple
  credentials=x searchbase="dc=itzgeek,dc=local" type=refreshOnly
  interval=00:00:00:10 retry="5 5 300 5" timeout=1
-
add: olcDbIndex
olcDbIndex: entryUUID  eq
-
add: olcDbIndex
olcDbIndex: entryCSN  eq
-
add: olcMirrorMode
olcMirrorMode: TRUE

Dopo aver aggiornato il file, invia la configurazione al server LDAP.

ldapmodify -Y EXTERNAL  -H ldapi:/// -f olcdatabasehdb.ldif

Risultato:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={2}hdb,cn=config"

Apporta modifiche a olcDatabase={1}monitor.ldif per limitare l'accesso del monitor solo alla radice LDAP (ldapadm ) utente, non ad altri.

# vi monitor.ldif

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=ldapadm,dc=itzgeek,dc=local" read by * none

Dopo aver aggiornato il file, invia la configurazione al server LDAP.

ldapmodify -Y EXTERNAL  -H ldapi:/// -f monitor.ldif

Aggiungi gli schemi LDAP.

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif 
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

Genera base.ldif file per il tuo dominio.

# vi base.ldiff

dn: dc=itzgeek,dc=local
dc: itzgeek
objectClass: top
objectClass: domain

dn: cn=ldapadm ,dc=itzgeek,dc=local
objectClass: organizationalRole
cn: ldapadm
description: LDAP Manager

dn: ou=People,dc=itzgeek,dc=local
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=itzgeek,dc=local
objectClass: organizationalUnit
ou: Group

Costruisci la struttura della directory.

ldapadd -x -W -D "cn=ldapadm,dc=itzgeek,dc=local" -f base.ldif

Uscita:

Enter LDAP Password:
adding new entry "dc=itzgeek,dc=local"

adding new entry "cn=ldapadm ,dc=itzgeek,dc=local"

adding new entry "ou=People,dc=itzgeek,dc=local"

adding new entry "ou=Group,dc=itzgeek,dc=local"

Testare la replica LDAP

Creiamo un utente LDAP chiamato "ldaptest " in uno qualsiasi dei tuoi server principali, per farlo, crea un .ldif file su ldpsrv1.itzgeek.local (nel mio caso).

[root@ldpsrv1 ~]# vi ldaptest.ldif

Aggiorna il file sopra con i contenuti sottostanti.

dn: uid=ldaptest,ou=People,dc=itzgeek,dc=local
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: ldaptest
uid: ldaptest
uidNumber: 9988
gidNumber: 100
homeDirectory: /home/ldaptest
loginShell: /bin/bash
gecos: LDAP Replication Test User
userPassword: {crypt}x
shadowLastChange: 17058
shadowMin: 0
shadowMax: 99999
shadowWarning: 7

Aggiungi un utente al server LDAP utilizzando ldapadd comando.

[root@ldpsrv1 ~]# ldapadd -x -W -D "cn=ldapadm,dc=itzgeek,dc=local" -f ldaptest.ldif

Risultato:

Enter LDAP Password:
adding new entry "uid=ldaptest,ou=People,dc=itzgeek,dc=local"

Cerca "ldaptest ” su un altro server master (ldpsrv2.itzgeek.local ).

[root@ldpsrv2 ~]# ldapsearch -x cn=ldaptest -b dc=itzgeek,dc=local

Risultato:

# extended LDIF
#
# LDAPv3
# base <dc=itzgeek,dc=local> with scope subtree
# filter: cn=ldaptest
# requesting: ALL
#

# ldaptest, People, itzgeek.local
dn: uid=ldaptest,ou=People,dc=itzgeek,dc=local
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: ldaptest
uid: ldaptest
uidNumber: 9988
gidNumber: 100
homeDirectory: /home/ldaptest
loginShell: /bin/bash
gecos: LDAP Replication Test User
userPassword:: e2NyeXB0fXg=
shadowLastChange: 17058
shadowMin: 0
shadowMax: 99999
shadowWarning: 7

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

Ora, imposta una password per l'utente creato su ldpsrv1.itzgeek.local andando su ldpsrv2.itzgeek.local . Se riesci a impostare la password, significa che la replica funziona come previsto.

[root@ldpsrv2 ~]# ldappasswd -s password123 -W -D "cn=ldapadm,dc=itzgeek,dc=local" -x "uid=ldaptest,ou=People,dc=itzgeek,dc=local"

Dove,

-s specificare la password per il nome utente

-x nome utente per il quale è stata modificata la password

-D Nome distinto per l'autenticazione al server LDAP.

Nella topologia di replica master-slave, non è possibile impostare la password per l'utente LDAP nel server slave.

Extra

Configura anche il client LDAP in modo che si colleghi al nuovo server master.

authconfig --enableldap --enableldapauth --ldapserver=ldpsrv1.itzgeek.local,ldpsrv2.itzgeek.local,ldpsrv3.itzgeek.local --ldapbasedn="dc=itzgeek,dc=local" --enablemkhomedir --update

Questo è tutto.


Cent OS
  1. Configura il tuo server OpenVPN su Linux

  2. Come configurare MySQL Multi-Master Replication su Oracle Linux

  3. Configura la replica della replica sorgente di MySQL

  4. Configura la replica sorgente-origine MySQL

  5. Come installare e configurare OpenLDAP su CentOS / RHEL Linux

Installa e configura OpenLDAP su Ubuntu 16.04 / Debian 8

Installa e configura Ansible in Linux

Come configurare una VLAN in Linux

3 modi per configurare un'interfaccia di rete in Linux

Come configurare la replica FreeIPA su Rocky Linux/Alma Linux/Centos 8

Come configurare la replica in streaming di PostgreSQL 12 in CentOS 8