GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Konfigurieren Sie die OpenLDAP Multi-Master-Replikation unter Linux

In diesem Leitfaden konfigurieren wir die Multi-Master-Replikation des OpenLDAP-Servers auf CentOS 7 / RHEL 7 . Dieses Multi-Master-Replikations-Setup soll die Einschränkung der typischen Master-Slave-Replikation überwinden, bei der nur der Master-Server die Änderungen im LDAP-Verzeichnis vornimmt .

LESEN:So konfigurieren Sie die OpenLDAP-Master-Slave-Replikation

Bei der Multi-Master-Replikation fungieren zwei oder mehr Server als Master und alle diese sind maßgeblich für jede Änderung im LDAP-Verzeichnis. Anfragen von den Clients werden mit Hilfe der Replikation auf mehrere Server verteilt.

Umgebung

Für die Multi-Master-Replikation verwenden wir drei OpenLDAP Server. Einzelheiten finden Sie unten.

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

LDAP installieren

Installieren Sie LDAP-Pakete auf allen Ihren Servern.
yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel

Starten Sie den LDAP-Dienst und aktivieren Sie ihn für den automatischen Start beim Systemstart.

systemctl start slapd.service
systemctl enable slapd.service

LDAP-Protokollierung konfigurieren

Konfigurieren Sie Syslog, um die LDAP-Protokollierung zu aktivieren.

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

OpenLDAP Multi-Master-Replikation konfigurieren

Kopieren Sie die Konfigurationsdatei der Beispieldatenbank nach /var/lib/ldap Verzeichnis und aktualisieren Sie die Dateiberechtigungen. Sie müssten die folgenden Schritte auf allen Ihren OpenLDAP-Servern ausführen, sofern nicht anders angegeben.

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

Wir werden das syncprov-Modul aktivieren.

vi syncprov_mod.ldif

Kopieren Sie die folgenden Zeilen und fügen Sie sie in die obige syncprov_mod.ldif ein Datei.

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

Senden Sie nun die Konfiguration an den LDAP-Server.

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

Ausgabe:

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"

Konfigurationsreplikation aktivieren

Ändern Sie die olcServerID auf allen Servern . Setzen Sie beispielsweise für ldpsrv1 die olcServerID auf 1, für ldpsrv2 die olcServerID auf 2 und für ldpsrv3 auf 3.

vi olcserverid.ldif

Kopieren Sie den folgenden Text und fügen Sie ihn in die obige Datei ein.

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

Aktualisieren Sie die Konfiguration auf dem LDAP-Server.

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

Ausgabe:

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

Wir müssen ein Passwort für die Replikation der LDAP-Konfiguration generieren.

slappasswd

Ausgabe:

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

Sie sollten auf jedem Server ein Passwort generieren, indem Sie den Befehl slappasswd ausführen.

Legen Sie ein Passwort für die Konfigurationsdatenbank fest.

vi olcdatabase.ldif

Kopieren Sie den folgenden Text und fügen Sie ihn in die obige Datei ein. Sie müssen das Passwort, das Sie im vorherigen Schritt generiert haben, in diese Datei einfügen.

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

Aktualisieren Sie die Konfiguration auf dem LDAP-Server.

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

Ausgabe:

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"

Jetzt richten wir die Konfigurationsreplikation auf allen Servern ein.

vi configrep.ldif

Kopieren Sie den folgenden Text und fügen Sie ihn in die obige Datei ein.

### 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

Senden Sie nun die Konfiguration an den LDAP-Server.

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

Ausgabe:

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"

Datenbankreplikation aktivieren

Zu diesem Zeitpunkt sind alle Ihre LDAP-Konfigurationen repliziert. Jetzt aktivieren wir die Replikation der tatsächlichen Daten, d. h. der Benutzerdatenbank. Führen Sie die folgenden Schritte auf einem der Knoten aus, da sich die anderen Knoten in der Replikation befinden.

Wir müssten syncprov für die hdb-Datenbank aktivieren.

vi syncprov.ldif

Kopieren Sie den folgenden Text und fügen Sie ihn in die obige Datei ein.

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

Aktualisieren Sie die Konfiguration auf dem LDAP-Server.

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

Ausgabe:

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"

Richten Sie die Replikation für die hdb-Datenbank ein.

vi olcdatabasehdb.ldif

Kopieren Sie den folgenden Inhalt und fügen Sie ihn in die obige Datei ein. Sie erhalten möglicherweise eine Fehlermeldung für olcSuffix, olcRootDN und olcRootPW, wenn Sie diese bereits in Ihrer Konfiguration haben. Entfernen Sie die Einträge, falls nicht erforderlich.

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

Nachdem Sie die Datei aktualisiert haben, senden Sie die Konfiguration an den LDAP-Server.

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

Ausgabe:

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"

Nehmen Sie Änderungen an olcDatabase={1}monitor.ldif vor Datei, um den Überwachungszugriff nur auf das LDAP-Root (ldapadm ) Benutzer, nicht an andere.

# 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

Nachdem Sie die Datei aktualisiert haben, senden Sie die Konfiguration an den LDAP-Server.

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

Fügen Sie die LDAP-Schemata hinzu.

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

Generieren Sie base.ldif Datei für Ihre Domain.

# 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

Erstellen Sie die Verzeichnisstruktur.

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

Ausgabe:

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"

Testen Sie die LDAP-Replikation

Lassen Sie uns ein Benutzer-LDAP mit dem Namen „ldaptest“ erstellen “ Erstellen Sie dazu auf einem Ihrer Master-Server eine .ldif Datei auf der ldpsrv1.itzgeek.local (in meinem Fall).

[root@ldpsrv1 ~]# vi ldaptest.ldif

Aktualisieren Sie die obige Datei mit dem folgenden Inhalt.

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

Fügen Sie mit ldapadd einen Benutzer zum LDAP-Server hinzu Befehl.

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

Ausgabe:

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

Suchen Sie nach „ldaptest “ auf einem anderen Masterserver (ldpsrv2.itzgeek.local ).

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

Ausgabe:

# 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

Legen Sie nun ein Passwort für den auf ldpsrv1.itzgeek.local erstellten Benutzer fest indem Sie zu ldpsrv2.itzgeek.local gehen . Wenn Sie das Passwort festlegen können, bedeutet dies, dass die Replikation wie erwartet funktioniert.

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

Wo,

-s Geben Sie das Passwort für den Benutzernamen an

-x Benutzername, für den das Passwort geändert wird

-D Eindeutiger Name zur Authentifizierung beim LDAP-Server.

In der Master-Slave-Replikationstopologie können Sie das Kennwort für den LDAP-Benutzer auf dem Slave-Server nicht festlegen.

Extras

Konfigurieren Sie den LDAP-Client so, dass er sich auch an den neuen Master-Server bindet.

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

Das ist alles.


Cent OS
  1. So installieren und konfigurieren Sie Redis 6 unter Rocky Linux/Centos 8

  2. Konfigurieren Sie die MySQL-Quellreplikatreplikation

  3. Konfigurieren Sie die MySQL-Quell-Quell-Replikation

  4. So installieren und konfigurieren Sie OpenLDAP unter CentOS / RHEL Linux

  5. Linux-Betriebssystemdienst „ldap“

Installieren und konfigurieren Sie OpenLDAP unter Ubuntu 16.04 / Debian 8

Installieren und konfigurieren Sie Ansible unter Linux

So konfigurieren Sie ein VLAN unter Linux

3 Möglichkeiten, eine Netzwerkschnittstelle in Linux zu konfigurieren

So konfigurieren Sie die FreeIPA-Replikation unter Rocky Linux/Alma Linux/Centos 8

So konfigurieren Sie die PostgreSQL 12-Streaming-Replikation in CentOS 8