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.
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:
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:
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":
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":
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:
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":
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:
O usuário (Bind DN or user) utilizado para configuração do OpenLDAP:
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":
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:
Originalmente Publicado em:
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
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
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
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
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
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
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
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
# basewith 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:
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.