OpenLDAP como Multi-Master MirrorMode

O que é OpenLDAP?

LDAP é uma sigla para Lightweight Directory Access Protocol. Este serviço é usado essencialmente para armazenar informações de usuários, grupos, sistemas etc.

O que não é OpenLDAP?

O OpenLDAP não é um serviço de autenticação. Este serviço é usado apenas para consultar as informações de usuário, como nome, senha etc. O mecanismo de autenticação de sistemas operacionais ou de sistemas, consultam essas informações para validar o acesso do usuário. Em outras palavras, o OpenLDAP apenas armazena estas informações e disponibiliza para os sistemas que vão decidir se liberam o acesso ou não.

Proposta de laboratório

Neste artigo criaremos um ambiente com 2 servidores OpenLDAP.  Ambos os servidores têm as mesmas funções, que é receber tanto requisições de escrita e leitura. Sendo eles:

– Servidor Master Primário que aceita Leitura e Escrita e;

– Servidor Master Secundário, que ficará em standby caso o primário fique indisponível.

Pré-Requisitos

Para execução do laboratório proposto, é necessário:

  • 2 Máquinas virtuais com Debian 10
  • Acesso à internet a partir das VMs
  • Os servidores devem ser acessíveis através da rede pela porta 389
  • Para a resolução dos nomes dos servidores, adicionamos os IPs manualmente em /etc/hosts.

Instalação:

Para instalação do OpenLDAP é necessário executar os comandos abaixo. Os passos baixos serão executados no servidor lab01.4linux e depois em lab02.4linux.

# apt update

# apt install -y slapd ldap-utils

– slapd – é o daemon do serviço OpenLDAP

– ldap-utils – é um pacote de utilitários para administração do serviço.

Na instalação será solicitada a senha de administração do Ldap. No nosso caso usamos 4linux 

 

Ao término da instalação, a saída no terminal será semelhante à tela abaixo:

instalacao_openldap

Após a instalação, automaticamente é criada uma base com o FQDN da máquina, que no nosso caso é lab01.4linux (dc=4linux) e um usuário de administração (cn=admin,dc=4linux).

Com as configurações realizadas até este ponto, já temos o OpenLDAP funcional.

Para realizar a configuração de replicação entre os servidores serão necessários os seguintes passos:

1 – Habilitar o módulo de replicação

Crie um arquivo chamado syncmod.ldif com o seguinte conteúdo:

dn: cn=module{0},cn=config

changeType: modify

add: olcModuleLoad

olcModuleLoad: syncprov.la

O conteúdo acima irá adicionar na árvore de configuração do LDAP o módulo syncprov.la.

Salve o arquivo e execute o comando abaixo para importar o módulo

# ldapmodify -Y EXTERNAL -H ldapi:/// -f syncmod.ldif

A saída será parecida com abaixo:

2 – Vamos informar ao LDAP qual tipo de sincronização vamos utilizar, no nosso caso syncprov.

Crie o arquivo sync.ldif com o conteúdo:

dn: olcOverLay=syncprov,olcDatabase={1}mdb,cn=config

changetype: add

objectClass: olcOverlayConfig

objectClass: olcSyncProvConfig

olcOverlay: syncprov

Execute o comando:

# ldapmodify -Y EXTERNAL -H ldapi:/// -f sync.ldif

3 – Configurar a indexação da base LDAP.

Crie o arquivo index.ldif com o conteúdo:

dn: olcDatabase={1}mdb,cn=config

changeType: modify

add: olcDbIndex

olcDbIndex: entryUUID,entryCSN eq

Execute:

# ldapmodify -Y EXTERNAL -H ldapi:/// -f index.ldif

Até o momento, estas configurações são idênticas para ambos os servidores. A partir da próxima etapa será necessário realizar alguns ajustes específicos para cada servidor.

4 – Configurando o syncrepl para replicação entre os hosts.

E por fim adicionamos no arquivo syncrepl.ldif o conteúdo abaixo. Este arquivo está separado em 3 blocos: No primeiro bloco é configurado o ID do servidor, no segundo  informamos ao ldap onde este deve espelhar os dados e por fim,  no terceiro bloco ativamos a propriedade de espelhamento (MirrorMode).

obs: Algumas entradas deste arquivo requer alteração para cada servidor específico. Leia os comentários e altere conforme necessidade

#Bloco 1: Configura o ID do servidor.

dn: cn=config

changetype: modify

add: olcServerID

olcServerID: 1 # Cada servidor deve ter um ID diferente. Lab01 adicionamos ID=1 e lab02 ID=2

dn: olcDatabase={1}mdb,cn=config

 

 

# Bloco 2: Configura o apontamento para o Master Securandário

changetype: modify

add: olcSyncrepl

olcSyncrepl: rid=001   # ID da replicação. Este número será o mesmo para todos os servidores.

provider=ldap://lab02.4linux   # Como um servidor será espelho do outro, aqui o lab02 será o provider do servidor lab01 e vise e versa.

bindmethod=simple

binddn=”cn=admin,dc=4linux”   # usuário de administração

credentials=4linux   # senha usuário de administração

searchbase=”dc=4linux”   # Base onde será feita as consultas para replicação

schemachecking=on

type=refreshAndPersist

retry=”60 +”

 

#Bloco 3: atribui ao LDAP a propriedade de espelhamento.

dn: olcDatabase={1}mdb,cn=config

changetype: modify

add: olcMirrorMode

olcMirrorMode: TRUE

Salve o arquivo syncrepl.ldif  contendo os 3 blocos acima e execute o comando abaixo:

# ldapmodify -Y EXTERNAL -H ldapi:/// -f syncrepl.ldif

Se as configurações expostas até aqui foram executadas com sucesso, o resultado será a replicação dos dados entre os servidores, portanto, qualquer modificação na base dc=4linux (adição ou remoção) em lab01, esta deve ser replicado instantaneamente para o host lab02.

Para testar a replicação, vamos adicionar uma Unidade Organizacional à base dc=4linux. Crie um arquivo chamado user.ldif com o conteúdo abaixo:

dn: ou=usuarios,dc=4linux
changeType: add
objectClass: OrganizationalUnit
ou: usuarios

Para adicionar a OrganizationalUnit à base execute:

ldapmodify -x -H ldap://lab01 -D ‘cn=admin,dc=4linux’ -f user.ldif -w 4linux

 

Após inserção na base do lab01, com o comando slapcat vamos ao servidor lab02 verificar se a replicação de fato ocorreu:

Obs: A inserção de dados pode ser realizada em qualquer um dos masters que a replicação deve ocorrer.

Conclusão

Neste laboratório configuramos o LDAP para espelhar os dados de ambos os servidores. Esse tipo de configuração é muito útil para aumentar a disponibilidade e resiliência do ambiente.

Com essa configuração, pode-se adicionar inclusive mais servidores, configurá-los em datacenters diferentes etc. Um item interessante para LDAP em MirrorMode é a configuração de um balanceador para orquestrar a virada automática em caso de falha em um dos nós.

 

Referências

Guia de Administração OpenLDAP

https://www.openldap.org/doc/admin24/OpenLDAP-Admin-Guide.pdf

 

 

Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:

CURSOSCONSULTORIA

Anterior Vim - Uma ferramenta poderosa de edição de texto e scripts
Próxima Colações não determinísticas no PostgreSQL

About author

Leonardo Torres
Leonardo Torres 1 posts

Profissional de T.I. desde 2010, Leonardo Torres é formado em Redes de Computadores pela UNICEPLAC e é certificado Red Hat. Atua na área de infraestrutura de tecnologia em ambientes críticos.

View all posts by this author →

Você pode gostar também

Infraestrutura TI

Dica da semana convertendo um shell script em binário.

Na dica da semana de hoje, aprenderemos como converter um shell script em binário, uma prática muito utilizada quando queremos esconder o código fonte de um determinado shell script. Vamos

Infraestrutura TI

Forecast e timeleft: faça previsões no Zabbix

A partir da versão 3.0 do Zabbix dois novos recursos, o forecast e timeleft, permitem fazer previsões sobre análise de dados coletados e criar alertas que antecipem problemas em potenciais.

Infraestrutura TI

Upgrade no curso gratuito de Auditoria de Logs da 4Linux

Olá para você que trabalha ou tem interesse no gerenciamento de Logs! A 4Linux acaba de atualizar e ampliar seu curso de Logs totalmente gratuito, que agora conta com novas