GNU/Linux >> Tutoriales Linux >  >> Cent OS

Configurar la replicación multimaestro de OpenLDAP en Linux

En esta guía, configuraremos la replicación multimaestro del servidor OpenLDAP en CentOS 7/RHEL 7 . Esta configuración de replicación Multi-Master es para superar la limitación de la típica replicación Master-Slave donde solo el servidor maestro realiza los cambios en el directorio LDAP .

LEER:Cómo configurar la replicación maestro-esclavo de OpenLDAP

En la replicación Multi-Master, dos o más servidores actúan como maestros y todos estos tienen autoridad para cualquier cambio en el directorio LDAP. Las consultas de los clientes se distribuyen entre varios servidores con la ayuda de la replicación.

Medio ambiente

Para la replicación Multi-Master, vamos a utilizar tres OpenLDAP servidores. Los detalles se encuentran a continuación.

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

Instalar LDAP

Instale paquetes LDAP en todos sus servidores.
yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel

Inicie el servicio LDAP y actívelo para el inicio automático al iniciar el sistema.

systemctl start slapd.service
systemctl enable slapd.service

Configurar registro LDAP

Configure syslog para habilitar el registro LDAP.

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

Configurar la replicación multimaestro de OpenLDAP

Copie el archivo de configuración de la base de datos de muestra en /var/lib/ldap directorio y actualice los permisos del archivo. Debería realizar los pasos a continuación en todos sus servidores OpenLDAP a menos que se indique lo contrario.

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

Habilitaremos el módulo syncprov.

vi syncprov_mod.ldif

Copie y pegue las siguientes líneas en el syncprov_mod.ldif anterior. archivo.

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

Ahora envíe la configuración al servidor LDAP.

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

Salida:

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"

Habilitar replicación de configuración

Cambiar el olcServerID en todos los servidores . Por ejemplo, para ldpsrv1, establezca olcServerID en 1, para ldpsrv2, establezca olcServerID en 2 y para ldpsrv3, establezca en 3.

vi olcserverid.ldif

Copie y pegue el siguiente texto en el archivo anterior.

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

Actualice la configuración en el servidor LDAP.

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

Salida:

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

Necesitamos generar una contraseña para la replicación de la configuración LDAP.

slappasswd

Salida:

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

Debe generar una contraseña en cada servidor ejecutando el comando slappasswd.

Establezca una contraseña para la base de datos de configuración.

vi olcdatabase.ldif

Copie y pegue el siguiente texto en el archivo anterior. Debes poner la contraseña que generaste en el paso anterior en este archivo.

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

Actualice la configuración en el servidor LDAP.

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

Salida:

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"

Ahora configuraremos la replicación de la configuración en todos los servidores.

vi configrep.ldif

Copie y pegue el siguiente texto en el archivo anterior.

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

Ahora envíe la configuración al servidor LDAP.

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

Salida:

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"

Habilitar la replicación de la base de datos

En este momento, todas sus configuraciones de LDAP están replicadas. Ahora, habilitaremos la replicación de los datos reales, es decir, la base de datos del usuario. Realice los pasos a continuación en cualquiera de los nodos ya que los otros nodos están en replicación.

Tendríamos que habilitar syncprov para la base de datos hdb.

vi syncprov.ldif

Copie y pegue el siguiente texto en el archivo anterior.

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

Actualice la configuración en el servidor LDAP.

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

Salida:

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"

Configure la replicación para la base de datos hdb.

vi olcdatabasehdb.ldif

Copie y pegue el contenido a continuación en el archivo anterior. Es posible que obtenga un error para olcSuffix, olcRootDN y olcRootPW si ya los tiene en su configuración. Elimine las entradas, si no es necesario.

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

Una vez que haya actualizado el archivo, envíe la configuración al servidor LDAP.

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

Salida:

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"

Realice cambios en olcDatabase={1}monitor.ldif archivo para restringir el acceso del monitor solo a la raíz LDAP (ldapadm ) usuario, no a otros.

# 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

Una vez que haya actualizado el archivo, envíe la configuración al servidor LDAP.

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

Agregue los esquemas 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 archivo para su 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

Cree la estructura de directorios.

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

Salida:

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"

Probar la replicación LDAP

Vamos a crear un LDAP de usuario llamado “ldaptest “ en cualquiera de sus servidores maestros, para hacer eso, cree un .ldif archivo en ldpsrv1.itzgeek.local (en mi caso).

[root@ldpsrv1 ~]# vi ldaptest.ldif

Actualice el archivo anterior con el contenido a continuación.

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

Agregue un usuario al servidor LDAP usando ldapadd comando.

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

Salida:

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

Busque “ldaptest ” en otro servidor maestro (ldpsrv2.itzgeek.local ).

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

Salida:

# 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

Ahora, establezca una contraseña para el usuario creado en ldpsrv1.itzgeek.local yendo a ldpsrv2.itzgeek.local . Si puede establecer la contraseña, eso significa que la replicación está funcionando como se esperaba.

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

donde,

-s especifique la contraseña para el nombre de usuario

-x nombre de usuario para el que se cambia la contraseña

-D Nombre distinguido para autenticarse en el servidor LDAP.

En la topología de replicación maestro-esclavo, no puede establecer la contraseña para el usuario LDAP en el servidor esclavo.

Accesorios

Configure el cliente LDAP para enlazar también con el nuevo servidor maestro.

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

Eso es todo.


Cent OS
  1. Cómo configurar la replicación multimaestro de MySQL en Oracle Linux

  2. Cómo instalar y configurar Redis 6 en Rocky Linux/Centos 8

  3. Configurar la replicación de la fuente de MySQL

  4. Configurar la replicación fuente-fuente de MySQL

  5. Servicio de sistema operativo Linux 'ldap'

Instalar y configurar OpenLDAP en Ubuntu 16.04 / Debian 8

Instalar y configurar Ansible en Linux

Cómo configurar una VLAN en Linux

3 formas de configurar una interfaz de red en Linux

Cómo configurar la replicación FreeIPA en Rocky Linux/Alma Linux/Centos 8

Cómo configurar la replicación de transmisión de PostgreSQL 12 en CentOS 8