OpenLDAP: Instalando um servidor de diretórios com replicação (SyncRepl)

Este tutorial mostrará como criar um servidor OpenLDAP 2.4.x com replicação no Debian Squeeze (6.0.3), ao final teremos um servidor Mestre e uma cópia Shadow (Slave) deste.

[ Hits: 18.605 ]

Por: Marcelo Soares Souza em 25/01/2012 | Blog: https://gitlab.com/marcelo-soares-souza


Tutorial Instalando um Servidor de Diretórios OpenLDAP com replicação (SyncRepl)



Tutorial OpenLDAP com replicação no Debian Squeeze.

Este tutorial mostrará como criar um servidor OpenLDAP com replicação no Debian Squeeze (6.0.3). Ao final teremos um servidor Master e um Shadow (Slave).

Obs.: Para realizar os passos deste tutorial, esteja logado como 'root'.

1) Instalando o OpenLDAP no servidor Master.

Edite o "sources.list":

# nano /etc/apt/sources.list

Acrescente as seguintes linhas e salve:

deb http://ftp.br.debian.org/debian squeeze main contrib
deb-src http://ftp.br.debian.org/debian squeeze main contrib


Atualize a lista de pacotes:

# apt-get update

Instale o OpenLDAP e o ldap-utils:

# apt-get install slapd ldap-utils

1.1) Configurando OpenLDAP Master

Nas últimas versões do OpenLDAP, é utilizado um esquema de configuração onde você pode alterar as configurações em tempo real acessando os dados diretamente dentro do OpenLDAP, porém, iniciaremos a configuração da forma tradicional e converteremos para este novo esquema.

Pare o Serviço do OpenLDAP (slapd):

# service slapd stop

Edite o arquivo "/etc/ldap/slapd.conf":

# nano /etc/ldap/slapd.conf

Adicione a configuração inicial:

# Arquivo slapd.conf exemplo básico para OpenLDAP Master

  include     /etc/ldap/schema/core.schema
  include     /etc/ldap/schema/cosine.schema
  include     /etc/ldap/schema/nis.schema
  include     /etc/ldap/schema/inetorgperson.schema

  allow     bind_v2

  pidfile     /var/run/slapd/slapd.pid
  argsfile     /var/run/slapd/slapd.args

# Nível de verbosidade do Log. O nível 256 traz alguma verbosidade para analisamos problemas.
 loglevel     256

# Diretório com os Módulos LDAP, incluíndo o módulo de sincronização
  modulepath /usr/lib/ldap

  moduleload back_bdb
  moduleload syncprov # Módulo de Sincronização usado para replicação SyncRepl

# Limites Aplicado a toda as buscas no LDAP, Tamanho e Tempo Limite (Segundos)
  sizelimit 256
  timelimit 60

# Número de CPUs Utilizada para criar indíces
  tool-threads 2

  backend bdb

# Base de Configuração
  database config
  rootdn "cn=admin,cn=config"
  rootpw secreta

# Base Principal
  database bdb
  suffix "dc=juntadados,dc=org"
  rootdn "cn=admin,dc=juntadados,dc=org"
  rootpw secreta

  directory     "/var/lib/ldap"

  dbconfig set_cachesize 0 2097152 0
  dbconfig set_lk_max_objects 1500
  dbconfig set_lk_max_locks 1500
  dbconfig set_lk_max_lockers 1500

  index     objectClass eq
  lastmod     on
  checkpoint     512 30

# Configuração da Sincronização SyncRepl
  overlay syncprov
  syncprov-checkpoint 50 5
  syncprov-sessionlog 100

# ACLs (Permissões) Básicas.
  access to attrs=userPassword,shadowLastChange
      by dn="cn=admin,dc=juntadados,dc=org" write
      by anonymous auth
      by self write
      by * none

  access to dn.base="" by * read

  access to * by dn="cn=admin,dc=juntadados,dc=org" write by * read


Remove o 'slapd.d' antigo:

# rm -rf /etc/ldap/slapd.d/*

Criando 'slapd.d' (configurações) novo:

# slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d/

Definindo permissões dos arquivos de configuração:

# chown openldap.openldap /etc/ldap -R

Antes de iniciar o OpenLDAP, configure o 'rsyslog' para capturar mensagens de Log do OpenLDAP:

# nano /etc/rsyslog.conf

Acrescente ao final do "rsyslog.conf":

  local4.*    /var/log/ldap.log


Reinicie o 'rsyslog':

# service rsyslog restart

Inicie o Serviço OpenLDAP (slapd):

# service slapd start

1.2) Iniciando registros do OpenLDAP

Crie um arquivo "LDIF Base": # nano /etc/ldap/base.ldif

Adicione a "/etc/ldap/base.ldif":

  dn: dc=juntadados,dc=org
  dc: juntadados
  objectClass: top
  objectClass: domain

  dn: ou=Pessoa, dc=juntadados,dc=org   ou: Pessoa   description: Todas as Pessoas   objectclass: organizationalunit


Execute o comando para adição de registro:

# ldapadd -h localhost -a -W -x -D "cn=admin,dc=juntadados,dc=org" -f /etc/ldap/base.ldif

Crie uma entrada em Pessoa (LDIF):

# nano /etc/ldap/pessoa.ldif

Adicione os dados básicos:

  dn: cn=Marcelo Soares Souza,ou=Pessoa,dc=juntadados,dc=org
  objectclass: inetOrgPerson
  cn: Marcelo Soares Souza
  sn: souza
  uid: mssouza
  userpassword: secreta
  mail: marcelo@juntadados.org
  description: http://marcelo.juntadados.org


Execute o comando para adição de registro:

# ldapadd -h localhost -a -W -x -D "cn=admin,dc=juntadados,dc=org" -f /etc/ldap/pessoa.ldif

1.3) Consultando um Registro no OpenLDAP

Para buscar o registro, adicionado use o comando 'ldapsearch':

# ldapsearch -h localhost -x -b ou=Pessoa,dc=juntadados,dc=org uid=mssouza

1.4) Criando usuário para a replicação

Crie um arquivo LDIF Base:

# nano /etc/ldap/replication.ldif

Adicione a "/etc/ldap/replication.ldif":

 dn: uid=syncrepl,dc=juntadados,dc=org
 uid: syncrepl
 ou: System
 userPassword: secreta
 description: Conta para o SyncRepl
 objectClass: account
 objectClass: simpleSecurityObject


Execute o comando para adição de registro:

# ldapadd -h localhost -a -W -x -D "cn=admin,dc=juntadados,dc=org" -f /etc/ldap/replication.ldif

1.5) Facilitando a Administração do OpenLDAP

A Fundação Apache mantém uma ferramenta muito útil para administração de diretórios LDAP, é o Apache Directory Studio. Todas as configurações ou manipulações de registros agora podem ser feitas através desta interface gráfica para isto. Conforme definimos na configuração o usuário (Bind DN or user) para administração dos registros no diretório:

 Bind DN or user: cn=admin,dc=juntadados,dc=org
 Bind Password: secreta


O usuário (Bind DN or user) utilizado para configuração do OpenLDAP:

 Bind DN or user: cn=admin,cn=config  Bind Password: secreta


2) Replicando o OpenLDAP no servidor Shadow (Slave)

Faça os passos dos segmentos 1 e 1.1, porém, coloque a configuração abaixo no arquivo "/etc/ldap/slapd.conf":

# Arquivo slapd.conf exemplo básico para OpenLDAP Master
 include      /etc/ldap/schema/core.schema
 include      /etc/ldap/schema/cosine.schema
 include      /etc/ldap/schema/nis.schema
 include      /etc/ldap/schema/inetorgperson.schema

 allow      bind_v2

 pidfile    /var/run/slapd/slapd.pid
 argsfile    /var/run/slapd/slapd.args

# Nível de verbosidade do Log. O nível 256 traz alguma verbosidade para analisamos problemas.
 loglevel 256

# Diretório com os Módulos LDAP, incluíndo o módulo de sincronização.
 modulepath /usr/lib/ldap

 moduleload back_bdb
 moduleload syncprov # Módulo de Sincronização usado para replicação SyncRepl

# Limites Aplicado a toda as buscas no LDAP, Tamanho e Tempo Limite (Segundos).
 sizelimit 256
 timelimit 60

# Número de CPUs Utilizada para criar indíces.
 tool-threads 2

 backend bdb

# Base de Configuração.
 database config
 rootdn "cn=admin,cn=config"
 rootpw secreta


# Base Principal.
 database bdb
 suffix "dc=juntadados,dc=org"
 rootdn "cn=admin,dc=juntadados,dc=org"
 rootpw secreta

 directory   "/var/lib/ldap"

 dbconfig set_cachesize 0 2097152 0
 dbconfig set_lk_max_objects 1500
 dbconfig set_lk_max_locks 1500
 dbconfig set_lk_max_lockers 1500

 index      objectClass eq
 lastmod      on
 checkpoint   512 30

 syncrepl rid=001
   provider=ldap://IP_OPENLDAP_MASTER
   type=refreshAndPersist
   retry="30 10 600 20"
   schemachecking=off
   searchbase="dc=juntadados,dc=org"
   binddn="uid=syncrepl,dc=juntadados,dc=org"
   credentials=secreta

 updateref ldap://IP_OPENLDAP_MASTER

# ACLs (Permissões) Básicas.
  access to   attrs=userPassword,shadowLastChange
  by dn="cn=admin,dc=juntadados,dc=org" write
  by anonymous auth
  by self write
  by * none

 access to dn.base="" by * read

 access to * by dn="cn=admin,dc=juntadados,dc=org" write by * read


2.1) Testando replicação

Pesquisa pelo usuário de 'uid=mssouza' localmente:

# ldapsearch -h localhost -x -b ou=Pessoa,dc=juntadados,dc=org uid=mssouza

Caso tenha o retorno abaixo, a replicação foi bem sucedida:
# extended LDIF
#
# LDAPv3
# base with scope subtree
# filter: uid=mssouza
# requesting: ALL
#

# Marcelo Soares Souza, Pessoa, juntadados.org
dn: cn=Marcelo Soares Souza,ou=Pessoa,dc=juntadados,dc=org
objectClass: inetOrgPerson
cn: Marcelo Soares Souza
sn: souza
uid: mssouza
mail: marcelo@juntadados.org
description: http://marcelo.juntadados.org

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

Originalmente Publicado em:
   

Páginas do artigo
   1. Tutorial Instalando um Servidor de Diretórios OpenLDAP com replicação (SyncRepl)
Outros artigos deste autor

Diaspora* no Debian Wheezy - Rede social livre e distribuída

Servidor web nginx com PHP-FPM e memcached

Mapa da Cultura no Debian 7.0 - Instalação com Nginx usando Phusion Passenger

Instalando gerenciador de projetos Redmine usando o PostgreSQL sobre o nginx

Controle de versão usando Git integrado ao Redmine

Leitura recomendada

Crise de distro!

MATE Desktop 1.16.0 [GTK3] no Slackware

Instalação do Driver ATI Radeon XPRESS 200 no Ubuntu 16.04

Introdução ao Linux: Instalação do Xubuntu

Fedora 21 - Configuração pós-instalação

  
Comentários
[1] Comentário enviado por fhgotardi em 23/02/2012 - 13:59h

Olá Marcelo, estou tendo problemas na hora que rodo o comando (slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d/ ) você imagina o que pode ser. Segue o erro:

slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d/
/etc/ldap/slapd.conf: line 6: <include> extra cruft after <file>.
slaptest: bad configuration directory!

Estou rodando no ubuntu.

[2] Comentário enviado por mariojsantos em 23/10/2018 - 14:37h


[1] Comentário enviado por fhgotardi em 23/02/2012 - 13:59h

Olá Marcelo, estou tendo problemas na hora que rodo o comando (slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d/ ) você imagina o que pode ser. Segue o erro:

slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d/
/etc/ldap/slapd.conf: line 6: &lt;include&gt; extra cruft after &lt;file&gt;.
slaptest: bad configuration directory!

Estou rodando no ubuntu.


O post é antigo, mas aqui vai a solução que deu certo pra mim, Também estava caindo nesse erro. A solução foi remover todas as linhas em branco do arquivo /etc/ldap/slapd.conf
Depois disso deu certo!
At.


Contribuir com comentário