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: