Pesquisa de site

Configurar a replicação mestre-escravo OpenLDAP no CentOS 8


Neste guia, abordaremos como configurar a replicação OpenLDAP provedor-consumidor (formalmente replicação mestre-escravo) no CentOS 8. Nesse tipo de configuração, o servidor consumidor/secundário OpenLDAP replica alterações e atualizações de diretório do provedor/mestre.

Também existe a possibilidade de ter uma configuração do tipo provedor-provedor, o que basicamente significa que podemos ter uma configuração LDAP multimestre com mais de um servidor primário/provedor.

Para replicação Master-Master: Configure a replicação OpenLDAP Multi-Master no CentOS 8

Configure a replicação OpenLDAP no CentOS 8

Vamos saber como fazer isso. Precisaremos de dois servidores CentOS 8, um será o servidor primário/provedor e o outro será o servidor secundário/consumidor com os seguintes nomes de host;

  1. Provedor LDAP – ldapmaster.computingforgeeks.com
  2. Consumidor LDAP – consumer.computingforgeeks.com

Adicione os nomes de host estáticos a cada servidor para garantir que eles possam ser resolvidos.

$ sudo vim /etc/hosts
172.20.5.209 ldapmaster.computingforgeeks.com
172.20.5.210 consumer.computingforgeeks.com

A próxima etapa é instalar e configurar o servidor OpenLDAP básico em ambos os hosts. Abordamos as etapas para configuração do OpenLDAP no CentOS 8 no guia abaixo:

  • Instale e configure o servidor OpenLDAP no CentOS 8

Para configuração do consumidor, pare na etapa Criar esquema OpenLDAP SUDO no tutorial Instalar e configurar o servidor OpenLDAP no CentOS 8.

Sincronização NTP

É importante ter sincronização de horário entre o servidor do Provedor e do Consumidor.

RHEL/CentOS 8 usa Chrony para sincronização de horário.

Definir fuso horário:

sudo timedatectl set-timezone Africa/Nairobi

Instale o pacote do servidor Chrony NTP.

sudo yum -y install chrony

Configure a sincronização NTP adicionando os servidores NTP relevantes no arquivo /etc/chrony.conf.

$ sudo vi /etc/chrony.conf
server 0.africa.pool.ntp.org iburst
server 1.africa.pool.ntp.org iburst
server 2.africa.pool.ntp.org iburst
server 3.africa.pool.ntp.org iburst

Você também pode usar um servidor NTP personalizado com as etapas destacadas no artigo abaixo:

  • Configure o servidor NTP usando Chrony no RHEL 8/CentOS 8

Copiar arquivos de configuração

Copie dados e arquivos de configuração do servidor primário para o servidor secundário.

Execute o seguinte no servidor primário para criar uma cópia do banco de dados OpenLDAP:

slapcat -b cn=config -l openldap-config.ldif

ou

slapcat -n 0 -l openldap-config.ldif

Crie um backup dos dados OpenLDAP:

slapcat -n 1 -l openldap-data.ldif

ou

slapcat -l openldap-data.ldif

Copie os arquivos de configuração para o servidor consumidor

scp {openldap-data.ldif, openldap-config.ldif} [email :/opt

Copie certificados SSL do mestre para o consumidor:

scp /etc/pki/tls/ldapserver.{crt,key} [email :/etc/pki/tls

Restaurar arquivos de configuração no servidor consumidor

Com o banco de dados LDAP e os dados copiados para o consumidor, é hora de restaurá-los. Certifique-se de que os diretórios de configuração LDAP estejam vazios.

sudo rm -rf /etc/openldap/slapd.d/*
sudo rm -rf /var/lib/openldap/*

Restaure o banco de dados LDAP:

cd /opt && sudo slapadd -b cn=config -l openldap-config.ldif -F /etc/openldap/slapd.d/
#or 
cd /opt && sudo slapadd -n 0 -l openldap-config.ldif -F /etc/openldap/slapd.d/

Restaurar dados OpenLDAP:

cd /opt && sudo slapadd -n 1 -l openldap-data.ldif -F /etc/openldap/slapd.d/

Configure a propriedade correta do arquivo para os arquivos de configuração:

sudo chown -R ldap:ldap /etc/openldap/slapd.d/ /var/lib/openldap/
sudo chown ldap:ldap /etc/pki/tls/ldapserver.{crt,key}

Criar serviço LDAP

Crie o serviço Systemd para OpenLDAP:

$ sudo vim /etc/systemd/system/slapd.service
[Unit]
Description=OpenLDAP Server Daemon
After=syslog.target network-online.target
Documentation=man:slapd
Documentation=man:slapd-mdb

[Service]
Type=forking
PIDFile=/var/lib/openldap/slapd.pid
Environment="SLAPD_URLS=ldap:/// ldapi:/// ldaps:///"
Environment="SLAPD_OPTIONS=-F /etc/openldap/slapd.d"
ExecStart=/usr/libexec/slapd -u ldap -g ldap -h ${SLAPD_URLS} $SLAPD_OPTIONS

[Install]
WantedBy=multi-user.target

Reinicie o Daemon:

sudo systemctl daemon-reload

Iniciar e ativar o serviço

sudo systemctl enable --now slapd

Permitir serviço OpenLDAP através do Firewall

Precisamos permitir conexões ao serviço LDAP através do firewall para consultas de clientes.

sudo firewall-cmd --add-service={ldap,ldaps} --permanent
sudo firewall-cmd --reload

Configurar a replicação LDAP no provedor/mestre

Precisamos alertar nosso servidor Master sobre a replicação. Portanto, precisamos habilitar a sincronização de conteúdo LDAP (replicação syncrepl) no mestre habilitando o Módulo Syncprov Overlay.

$ vim enable-syncprov.ldif
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: syncprov.la

Confirme se o módulo está disponível:

sudo slapcat -n 0 | grep -i modulepath

Saída desejada:

olcModulePath: /usr/libexec/openldap

Atualize o banco de dados OpenLDAP:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f enable-syncprov.ldif

Defina as configurações de replicação do syncprov conforme abaixo:

$ vim syncprov-options.ldif
dn: olcOverlay=syncprov,olcDatabase={1}mdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpNoPresent: TRUE
olcSpCheckpoint: 100 10
olcSpSessionlog: 100

Aplicar alterações ao banco de dados:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov-options.ldif

Habilitar indexação de banco de dados

Habilite os índices entryUID e entryCSN para melhorar o desempenho do banco de dados e a velocidade de varredura.

$ vim indexing.ldif
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: entryCSN eq
-
add: olcDbIndex
olcDbIndex: entryUUID eq

Aplique a configuração:

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

Configurar a replicação OpenLDAP no consumidor

Em seguida, precisamos configurar o servidor consumidor para obter atualizações do servidor do Provedor ativando olcSyncrepl e configurando-o com a configuração correta.

vim enable-syncrepl.ldif

Aqui está o conteúdo:

dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcSyncrepl
olcSyncrepl: 
  rid=001 
  provider=ldap://ldapmaster.computingforgeeks.com
  binddn="cn=readonly,ou=system,dc=ldapmaster,dc=computingforgeeks,dc=com" 
  bindmethod=simple
  credentials="Y0urP@ssW0rd" 
  searchbase="dc=ldapmaster,dc=computingforgeeks,dc=com" 
  type=refreshAndPersist 
  timeout=0 
  network-timeout=0 
  retry="60 +"

Substitua Provedor, binddn, credenciais de binddn e base de pesquisa pelos seus detalhes. Observe que as credenciais binddn são obtidas na etapa Criar usuário de ligação LDAP em Instalar e configurar o servidor OpenLDAP no CentOS 8.

Atualize o banco de dados:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f enable-syncrepl.ldif

Reinicie o serviço LDAP para aplicar estas alterações:

sudo systemctl restart slapd

Testar replicação OpenLDAP

Com nossa replicação configurada e pronta, podemos testar se a configuração está realmente funcionando adicionando um novo usuário no Provedor e ver se os detalhes do usuário serão atualizados no servidor consumidor.

vim test-user.ldif

Modifique abaixo nas configurações

dn: uid=usertest,ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com
cn: usertest
gidnumber: 10050
homedirectory: /home/usertest
loginshell: /bin/bash
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: shadowAccount
shadowinactive: 7
shadowlastchange: 0
shadowmax: 60
shadowmin: 1
shadowwarning: 7
sn: Doe
uid: usertest
uidnumber: 10050
userpassword: {SSHA}vg5PjAkA2mKNjrxAg5hgrwm06yf87ybfu

dn: cn=usertest,ou=groups,dc=ldapmaster,dc=computingforgeeks,dc=com
cn: usertest
gidnumber: 10050
memberuid: usertest
objectclass: posixGroup

Adicione a entrada:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f test-user.ldif

Agora verifique no consumidor se a nova entrada foi adicionada:

sudo ldapsearch -Y EXTERNAL -H ldapi:/// -b "ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com" dn -Q -LLL

Minha saída:

dn: uid=vshamallah,ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com
dn: uid=usertest,ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com

Podemos confirmar que o usuário usertest foi replicado no servidor consumidor.

Também podemos tentar redefinir a senha do usuário e verificar se podemos autenticar no servidor do consumidor.

No mestre:

[root@ldapmaster ~]# ldappasswd -x -h ldapmaster.computingforgeeks.com \
-D "cn=admin,dc=ldapmaster,dc=computingforgeeks,dc=com" \
-S "uid=usertest,ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com" -W

Use o comando ldapwhoami no servidor consumidor para determinar a resposta do usuário que acabamos de redefinir a senha:

[root@consumer ~]# ldapwhoami -x -h consumer.computingforgeeks.com -D "uid=usertest,ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com" -W -vvv
ldap_initialize( ldap://consumer.computingforgeeks.com )
Enter LDAP Password: 
dn:uid=usertest,ou=people,dc=ldapmaster,dc=computingforgeeks,dc=com
Result: Success (0)

A saída do comando acima deve retornar Resultado: Sucesso (0) para uma solicitação bem-sucedida. Isso significa que a atualização de alteração de senha do provedor foi replicada no servidor consumidor.

Isso, portanto, confirma que nossa replicação Provedor-Consumidor está funcionando conforme necessário.

Verifique outros guias relacionados abaixo:

Configure o cliente LDAP no Ubuntu

Instale o gerenciador de contas LDAP no CentOS 8

Artigos relacionados: