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;
- Provedor LDAP – ldapmaster.computingforgeeks.com
- 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