GNU/Linux >> Tutoriels Linux >  >> Cent OS

Configurer la réplication multi-maître OpenLDAP sous Linux

Dans ce guide, nous allons configurer la réplication multi-maître du serveur OpenLDAP sur CentOS 7 / RHEL 7 . Cette configuration de réplication multi-maître vise à surmonter la limitation de la réplication maître-esclave typique où seul le serveur maître effectue les modifications dans le répertoire LDAP .

LIRE :Comment configurer la réplication maître-esclave OpenLDAP

Dans la réplication multi-maître, deux serveurs ou plus agissent en tant que maître et tous font autorité pour tout changement dans l'annuaire LDAP. Les requêtes des clients sont réparties sur les multiples serveurs à l'aide de la réplication.

Environnement

Pour la réplication multi-maître, nous allons utiliser trois OpenLDAP les serveurs. Les détails sont ci-dessous.

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

Installer LDAP

Installez les packages LDAP sur tous vos serveurs.
yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel

Démarrez le service LDAP et activez-le pour le démarrage automatique au démarrage du système.

systemctl start slapd.service
systemctl enable slapd.service

Configurer la journalisation LDAP

Configurez syslog pour activer la journalisation LDAP.

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

Configurer la réplication multi-maître OpenLDAP

Copiez l'exemple de fichier de configuration de la base de données dans /var/lib/ldap répertoire et mettre à jour les autorisations de fichier. Vous devrez effectuer les étapes ci-dessous sur tous vos serveurs OpenLDAP, sauf indication contraire.

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

Nous allons activer le module syncprov.

vi syncprov_mod.ldif

Copiez et collez les lignes ci-dessous dans le syncprov_mod.ldif ci-dessus fichier.

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

Envoyez maintenant la configuration au serveur LDAP.

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

Sortie :

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"

Activer la réplication de configuration

Changer l'olcServerID sur tous les serveurs . Par exemple, pour ldpsrv1, définissez olcServerID sur 1, pour ldpsrv2, définissez olcServerID sur 2 et pour ldpsrv3, définissez sur 3.

vi olcserverid.ldif

Copiez et collez le texte ci-dessous dans le fichier ci-dessus.

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

Mettez à jour la configuration sur le serveur LDAP.

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

Sortie :

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

Nous devons générer un mot de passe pour la réplication de la configuration LDAP.

slappasswd

Sortie :

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

Vous devez générer un mot de passe sur chaque serveur en exécutant la commande slappasswd.

Définissez un mot de passe pour la base de données de configuration.

vi olcdatabase.ldif

Copiez et collez le texte ci-dessous dans le fichier ci-dessus. Vous devez mettre le mot de passe que vous avez généré à l'étape précédente sur ce fichier.

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

Mettez à jour la configuration sur le serveur LDAP.

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

Sortie :

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"

Nous allons maintenant mettre en place la réplication de configuration sur tous les serveurs.

vi configrep.ldif

Copiez et collez le texte ci-dessous dans le fichier ci-dessus.

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

Envoyez maintenant la configuration au serveur LDAP.

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

Sortie :

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"

Activer la réplication de la base de données

À ce stade, toutes vos configurations LDAP sont répliquées. Maintenant, nous allons activer la réplication des données réelles, c'est-à-dire la base de données utilisateur. Effectuez les étapes ci-dessous sur l'un des nœuds puisque les autres nœuds sont en réplication.

Nous aurions besoin d'activer syncprov pour la base de données hdb.

vi syncprov.ldif

Copiez et collez le texte ci-dessous dans le fichier ci-dessus.

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

Mettez à jour la configuration sur le serveur LDAP.

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

Sortie :

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"

Configurer la réplication pour la base de données hdb.

vi olcdatabasehdb.ldif

Copiez et collez le contenu ci-dessous dans le fichier ci-dessus. Vous pouvez obtenir une erreur pour olcSuffix, olcRootDN et olcRootPW si vous les avez déjà sur votre configuration. Supprimez les entrées, si elles ne sont pas nécessaires.

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

Une fois que vous avez mis à jour le fichier, envoyez la configuration au serveur LDAP.

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

Sortie :

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"

Apportez des modifications à olcDatabase={1}monitor.ldif fichier pour restreindre l'accès du moniteur uniquement à la racine LDAP (ldapadm ) utilisateur, pas aux autres.

# 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

Une fois que vous avez mis à jour le fichier, envoyez la configuration au serveur LDAP.

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

Ajoutez les schémas 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

Générer base.ldif fichier pour votre domaine.

# 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

Construisez la structure de répertoires.

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

Sortie :

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"

Tester la réplication LDAP

Créons un utilisateur LDAP appelé "ldaptest " dans l'un de vos serveurs maîtres, pour ce faire, créez un .ldif fichier sur ldpsrv1.itzgeek.local (dans mon cas).

[root@ldpsrv1 ~]# vi ldaptest.ldif

Mettez à jour le fichier ci-dessus avec le contenu ci-dessous.

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

Ajouter un utilisateur au serveur LDAP à l'aide de ldapadd commande.

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

Sortie :

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

Recherchez "ldaptest ” sur un autre serveur maître (ldpsrv2.itzgeek.local ).

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

Sortie :

# 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

Maintenant, définissez un mot de passe pour l'utilisateur créé sur ldpsrv1.itzgeek.local en allant sur ldpsrv2.itzgeek.local . Si vous pouvez définir le mot de passe, cela signifie que la réplication fonctionne comme prévu.

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

Où,

-s spécifiez le mot de passe pour le nom d'utilisateur

-x nom d'utilisateur dont le mot de passe est modifié

-D Nom distinctif pour s'authentifier auprès du serveur LDAP.

Dans la topologie de réplication maître-esclave, vous ne pouvez pas définir le mot de passe de l'utilisateur LDAP sur le serveur esclave.

Extras

Configurez également le client LDAP pour qu'il se lie au nouveau serveur maître.

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

C'est tout.


Cent OS
  1. Configurez votre serveur OpenVPN sous Linux

  2. Comment configurer MySQL Multi-Master Replication sur Oracle Linux

  3. Configurer la réplication source-réplica MySQL

  4. Configurer la réplication source-source MySQL

  5. Service de système d'exploitation Linux « ldap »

Installer et configurer OpenLDAP sur Ubuntu 16.04 / Debian 8

Installer et configurer Ansible sous Linux

Comment configurer un VLAN sous Linux

3 façons de configurer une interface réseau sous Linux

Comment configurer la réplication FreeIPA sur Rocky Linux/Alma Linux/Centos 8

Comment configurer la réplication en continu PostgreSQL 12 dans CentOS 8