Circuito_Openldap_Avançado
-
Upload
marcio-garcia -
Category
Documents
-
view
103 -
download
2
Transcript of Circuito_Openldap_Avançado
CIRCUITO AVANÇADO DE OPENLDAP
Marcio Garcia [email protected]@thesource.com.br
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-43001 de 25
ÍndiceOpenLDAP.............................................................................................................................3Instalação...............................................................................................................................3Configuração..........................................................................................................................4Inicialização............................................................................................................................5Criação das entradas para importação na base LDAP.........................................................6Importação das entradas na base LDAP...............................................................................8Alteração de senhas de usuários em tempo real................................................................10Consultas na base LDAP – RFC 2254................................................................................11ACL's Avançadas.................................................................................................................13Schemas – RFC 2242..........................................................................................................14Serviço de diretório distribuído............................................................................................16Habilitando a opção “unique”...............................................................................................16Replicação com LDAP SYNC REPLICATION.....................................................................18Disaster Recover..................................................................................................................20Alguns recursos do OpenLDAP / BerkeleyDB.....................................................................20Segurança no OpenLDAP...................................................................................................23
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-43002 de 25
OpenLDAP
• Pré-requisitos:
OpenSSL – Última versão estável: openssl-0.9.7l.tar.gz
http://www.openssl.org
BerkeleyDB – Última versão estável: db-4.5.20.tar.gz
http://www.sleepycat.com
Cyrus-SASL – Última versão estável: cyrus-sasl-2.1.22.tar.gz
http://asg.web.cmu.edu/cyrus/
• Pacotes:
OpenLDAP – Última versão estável: openldap-stable-20070110.tar.gz
http://www.openldap.org
NSS_LDAP
http://www.padl.com/OSS/nss_ldap.html
Instalação
• OpenSSL
root@mgarcia:~# wget -c http://www.openssl.org/source/openssl-0.9.7l.tar.gz
root@mgarcia:~# tar xzvf openssl-0.9.7l.tar.gzroot@mgarcia:~# cd openssl-0.9.7lroot@mgarcia:~# ./config shared --openssldir=/usr/localroot@mgarcia:~# makeroot@mgarcia:~# make install
• BerkeleyDB
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-43003 de 25
root@mgarcia:~# wget -c http://downloads.sleepycat.com/db-4.5.20.tar.gz
root@mgarcia:~# tar xzvf db-4.5.20.tar.gzroot@mgarcia:~# cd db-4.5.20/build_unixroot@mgarcia:~# ../dist/configure --prefix=/usr/localroot@mgarcia:~# makeroot@mgarcia:~# make installroot@mgarcia:~# ldconfig
Obs.: No Slackware o diretório “/usr/local/lib” já existe no arquivo “/etc/ld.so.conf”.
• Cyrus-SASL
root@mgarcia:~# wget -c ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.22.tar.gz
root@mgarcia:~# tar xzvf cyrus-sasl-2.1.22.tar.gzroot@mgarcia:~# cd cyrus-sasl-2.1.22root@mgarcia:~# ./configureroot@mgarcia:~# makeroot@mgarcia:~# make installroot@mgarcia:~# cd /usr/libroot@mgarcia:~# mv sasl2 sasl2.originalroot@mgarcia:~# ln -s /usr/local/lib/sasl2
• OpenLDAP
root@mgarcia:~# wget -c ftp://ftp.openldap.org/pub/OpenLDAP/openldap-stable/openldap-stable-20070110.tgz
root@mgarcia:~# tar xzvf openldap-stable-20070110.tgzroot@mgarcia:~# cd openldap-2.3.32root@mgarcia:~# ./configure --with-tls --enable-syncprov --enable-crypt --enable-syslog --enable-wrappers --enable-unique --disable-ipv6root@mgarcia:~# make dependroot@mgarcia:~# makeroot@mgarcia:~# make install
Configuração
• OpenLDAP
root@mgarcia:~# cd /usr/local/etc/openldap
root@mgarcia:~# vi slapd.conf
# Opcoes Globais
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-43004 de 25
include /usr/local/etc/openldap/schema/core.schemainclude /usr/local/etc/openldap/schema/cosine.schemainclude /usr/local/etc/openldap/schema/nis.schemainclude /usr/local/etc/openldap/schema/inetorgperson.schema
pidfile /usr/local/var/run/slapd.pidargsfile /usr/local/var/run/slapd.args
allow bind_v2loglevel 256
# TLS / SSL
# Opcoes do banco de dados
database bdbsuffix "c=BR"rootdn "cn=Master,c=BR"rootpw {SSHA}+7vJt6RStpyegSCslgAaym6P8AhacpF3directory /usr/local/var/openldap-data
# ACL's
# Indices de pesquisa
index objectClass eq
• loglevel – Níveis de log
1 (0x1 trace) trace function calls2 (0x2 packet) debug packet handling4 (0x4 args) heavy trace debugging (function args)8 (0x8 conns) connection management6 (0x10 BER) print out packets sent and received32 (0x20 filter) search filter processing64 (0x40 config) configuration file processing128 (0x80 ACL) access control list processing256 (0x100 stats) stats log connections/operations/results512 (0x200 stats2) stats log entries sent1024 (0x400 shell) print communication with shell backends2048 (0x800 parse) entry parsing4096 (0x1000 cache) caching (unused)8192 (0x2000 index) data indexing (unused)16384 (0x4000 sync) LDAPSync replication32768 (0x8000 none) only messages that get logged whatever log level is set
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-43005 de 25
Inicialização
• Iniciando o OpenLDAP no modo normal
root@mgarcia:~# /usr/local/libexec/slapd
root@mgarcia:~# ps wax | grep slapd
5140 ? Ssl 0:00 /usr/local/libexec/slapd
root@mgarcia:~# netstat -at | grep LISTEN
tcp 0 0 *:ldap *:* LISTEN
root@mgarcia:~# netstat -nat | grep LISTEN
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN
• Iniciando o OpenLDAP no modo debug
root@mgarcia:~# /usr/local/libexec/slapd -d2
• Parando o OpenLDAP
root@mgarcia:~# killall -INT slapd
Criação das entradas para importação na base LDAP
• Country BR: “c=BR”
root@mgarcia:~# vi br.ldif
dn: c=BRobjectClass: countryc: BR
• Organização TheSource: “o=TheSource”
root@mgarcia:~# vi thesource.ldif
dn: o=TheSource, c=BRobjectClass: organizationo: TheSource
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-43006 de 25
• Departamento TI: “ou=TI”
root@mgarcia:~# vi ti.ldif
dn: ou=TI, o=TheSource, c=BRobjectClass: organizationalUnitou: TI
• Departamento RH: “ou=RH”
root@mgarcia:~# vi rh.ldif
dn: ou=RH, o=TheSource, c=BRobjectClass: organizationalUnitou: RH
• Usuário mgarcia: “uid=mgarcia”
root@mgarcia:~# vi mgarcia.ldif
dn: uid=mgarcia, ou=TI, o=TheSource, c=BRobjectClass: inetOrgPersonuid: mgarciacn: Marcio Garciamail: [email protected]: GarciauserPassword: {SSHA}sOEFhMFdlam1lMm5rdmp3WVBMTVVSY0hzTWs=
• Usuário ralf: “uid=ralf”
root@mgarcia:~# vi ralf.ldif
dn: uid=ralf, ou=TI, o=TheSource, c=BRobjectClass: inetOrgPersonuid: ralfcn: Ralf Bragamail: [email protected]: BragauserPassword: {SSHA}sOEFhMFdlam1lMm5rdmp3WVBMTVVSY0hzTWs=
• Usuário recursoshumanos: “uid=recursoshumanos”
root@mgarcia:~# vi recursoshumanos.ldif
dn: uid=recursoshumanos, ou=RH, o=TheSource, c=BRobjectClass: inetOrgPersonuid: recursoshumanos
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-43007 de 25
cn: Recursos Humanos The Sourcemail: [email protected]: Recursos HumanosuserPassword: {SSHA}sOEFhMFdlam1lMm5rdmp3WVBMTVVSY0hzTWs=
Importação das entradas na base LDAP
• Entrada: br.ldif
root@mgarcia:~# ldapadd -x -W -v -D 'cn=Master,c=BR' -f br.ldif
ldap_initialize( <DEFAULT> )Enter LDAP Password: ******
add objectClass: countryadd c: BRadding new entry "c=BR"
modify complete
• Entrada: thesource.ldif
root@mgarcia:~# ldapadd -x -W -v -D 'cn=Master,c=BR' -f thesource.ldif
ldap_initialize( <DEFAULT> )Enter LDAP Password: ******
add objectClass: organizationadd o: TheSourceadding new entry "o=TheSource, c=BR"
modify complete
• Entrada: ti.ldif
root@mgarcia:~# ldapadd -x -W -v -D 'cn=Master,c=BR' -f ti.ldif
ldap_initialize( <DEFAULT> )Enter LDAP Password: ******
add objectClass: organizationalUnitadd ou:
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-43008 de 25
TIadding new entry "ou=TI, o=TheSource, c=BR"
modify complete
• Entrada: rh.ldif
root@mgarcia:~# ldapadd -x -W -v -D 'cn=Master,c=BR' -f rh.ldif
ldap_initialize( <DEFAULT> )Enter LDAP Password: ******
add objectClass: organizationalUnitadd ou: RHadding new entry "ou=RH, o=TheSource, c=BR"
modify complete
• Entrada: mgarcia.ldif
root@mgarcia:~# ldapadd -x -W -v -D 'cn=Master,c=BR' -f mgarcia.ldif
ldap_initialize( <DEFAULT> )Enter LDAP Password: ******
add objectClass: inetOrgPersonadd uid: mgarciaadd cn: Marcio Garciaadd mail: [email protected] sn: Garciaadd userPassword: {SSHA}sOEFhMFdlam1lMm5rdmp3WVBMTVVSY0hzTWs=adding new entry "uid=mgarcia, ou=TI, o=TheSource, c=BR"
modify complete
• Entrada: ralf.ldif
root@mgarcia:~# ldapadd -x -W -v -D 'cn=Master,c=BR' -f ralf.ldif
ldap_initialize( <DEFAULT> )Enter LDAP Password: ******
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-43009 de 25
add objectClass: inetOrgPersonadd uid: ralfadd cn: Ralf Bragaadd mail: [email protected] sn: Bragaadd userPassword: {SSHA}sOEFhMFdlam1lMm5rdmp3WVBMTVVSY0hzTWs=adding new entry "uid=ralf, ou=TI, o=TheSource, c=BR"
modify complete
• Entrada: recursoshumanos.ldif
root@mgarcia:~# ldapadd -x -W -v -D 'cn=Master,c=BR' -f recursoshumanos.ldif
ldap_initialize( <DEFAULT> )Enter LDAP Password: ******
add objectClass: inetOrgPersonadd uid: recursoshumanosadd cn: Recursos Humanos The Sourceadd mail: [email protected] sn: Recursos Humanosadd userPassword: {SSHA}sOEFhMFdlam1lMm5rdmp3WVBMTVVSY0hzTWs=adding new entry "uid=recursoshumanos, ou=RH, o=TheSource, c=BR"
modify complete
• Opções do “ldapadd”
-x Utiliza autenticação simples ao invés de SASL-W Autenticação através de prompt-w Autenticação através de linha de comando-v Verbose, utilizado para printar o status do ldapadd-D Especifica o usuário que ira fazer um bind na base-f Especifica o arquivo que será importado
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-430010 de 25
Alteração de senhas de usuários em tempo real
• Algoritmos disponíveis
root@mgarcia:~# ldappasswd -x -W -v -D 'uid=mgarcia,ou=TI,o=TheSource,c=BR' -A -S
Old password:Re-enter old password:New password:Re-enter new password:Enter LDAP Password:ldap_initialize( <DEFAULT> )Result: Success (0)
root@mgarcia:~#
Obs.: O usuário só poderá alterar sua senha se existir uma ACL permitindo.
• Opções do “ldappasswd”
-x Utiliza autenticação simples ao invés de SASL-W Autenticação através de prompt-w Autenticação através de linha de comando-v Verbose, utilizado para printar o status do ldapadd-D Especifica o usuário que ira fazer um bind na base-A Prompt para a senha antiga-S Prompt para a senha nova
Consultas na base LDAP – RFC 2254
• Consultando a base LDAP
root@mgarcia:~# ldapsearch -x -b c=BR
• Consultando a base LDAP, sem comentários e descrições
root@mgarcia:~# ldapsearch -x -b c=BR -LLL
• Consultando a base LDAP, filtrando pelo usuário “mgarcia”
root@mgarcia:~# ldapsearch -x -b c=BR '(uid=mgarcia)'root@mgarcia:~# ldapsearch -x -b c=BR -u uid=mgarcia
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-430011 de 25
• Consultando a base LDAP, filtrando pelo nome “Ralf Braga”
root@mgarcia:~# ldapsearch -x -b c=BR '(cn=Ralf Braga)'root@mgarcia:~# ldapsearch -x -b c=BR -u 'cn=Ralf Braga'
• Consultando a base LDAP, filtrando pelo nome “Marcio Garcia” e/ou “Ralf Braga”
root@mgarcia:~# ldapsearch -x -b c=BR -LLL '(&(|(cn=Marcio Garcia)(cn=Ralf Braga)) (objectClass=inetOrgPerson))'root@mgarcia:~# ldapsearch -x -b c=BR -LLL '(&(|(cn=Marcio Garcia)(cn=Ralf Braga)))'
• Consultando a base LDAP, com exceção do nome “Marcio Garcia”
root@mgarcia:~# ldapsearch -x -b c=BR -LLL '(!(cn=Marcio Garcia)) (objectClass=inetOrgPerson)'root@mgarcia:~# ldapsearch -x -b c=BR -LLL '(!(cn=Marcio Garcia))'
• Consultando a base LDAP, com exceção do nome “Marcio Garcia”, filtrando o resultado pelo atributo “mail”
root@mgarcia:~# ldapsearch -x -b c=BR -LLL '(!(cn=Marcio Garcia))' mail
• Operadores boleanos que podem ser utilizados na pesquisa
& and| or! not
• Filtros de pesquisa
= igual=~ direfente>= maior ou igual<= menor ou igual
• Exibe os atributos com todos os detalhes, inclusive os invisíveis
root@mgarcia:~# ldapsearch -x -b c=BR +
• Exibe todos os objectClass por “OID”
root@mgarcia:~# ldapsearch -x -b "" -s base "(objectClass=*)" +
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-430012 de 25
• Consulta todos os esquemas disponíveis no servidor LDAP
root@mgarcia:~# ldapsearch -x -W -D cn=Master,c=BR -s base -b "cn=SubSchema""(objectClass=*)" +
Obs.: É a mesma coisa que dar um cat nos esquemas do diretório: /usr/local/etc/openldap/schema
O comando acima exibe alguns parâmetros adicionais.
ACL's Avançadas
• Master e mgarcia lêem toda a base somente com autenticação• Demais usuários não lêem a base
access to *by dn="cn=Master,c=BR" readby dn="uid=mgarcia,ou=TI,o=TheSource,c=BR" readby * auth
• Master e mgarcia lêem toda a base somente com autenticação• Os usuários lêem somente o seu conf• Demais usuários não lê a base
access to *by dn="cn=Master,c=BR" readby dn="uid=mgarcia,ou=TI,o=TheSource,c=BR" readby self readby * auth
• Master e usuários lêem toda a base somente com autenticação
access to *by dn="cn=Master,c=BR" readby dn.regex="(.*,)?c=BR" readby * auth
• Master e usuários que começam com a letra “m” lêem toda a base somente com autenticação
access to *by dn="cn=Master,c=BR" readby dn.regex="^uid=m.+,?c=BR" read
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-430013 de 25
by * auth
• Master faz tudo• Usuários que começam com a letra “m” podem ler a base, somente com
permissão de leitura e pesquisa• Demais usuários lêem somente o seu conf
access to *by dn="cn=Master,c=BR" +rby dn.regex="^uid=m.+?c=BR" +rsxby self +rsxby * +x
• Master faz tudo• Usuários que começam com a letra “m” podem ler a base, somente com
permissão de escrita, leitura e pesquisa e também podem ler o atributo userPassword
• Demais usuários lêem somente o seu conf
access to attrs=userPasswordby dn="cn=Master,c=BR" +wrs
by dn.regex="^uid=m.+?c=BR" +wrsxby self +wx
by * +x
access to *by dn="cn=Master,c=BR" +rby dn.regex="^uid=m.+?c=BR" +rsxby self +rsxby * +x
Schemas – RFC 2242
• Opções
1.3.6.1 Reservado ao IANA – OID's de Internet{iso(1) org(3) dod(6) iana(1)}
4.1.x Private Enterprise arc.{private(4) enterprise(1) SEU_OID(x)}
1.3.6.1.4.1.x SEU_OID
• Syntaxes mais utilizadas / comuns
NOME OID Description
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-430014 de 25
boolean 1.3.6.1.4.1.1466.115.121.1.7 boolean valuedirectoryString 1.3.6.1.4.1.1466.115.121.1.15 Unicode (UTF-8) StringdistinguishedName 1.3.6.1.4.1.1466.115.121.1.12 LDAP DNinteger 1.3.6.1.4.1.1466.115.121.1.27 IntegernumericString 1.3.6.1.4.1.1466.115.121.1.36 Numeric StringOID 1.3.6.1.4.1.1466.115.121.1.38 Object IdentifieroctetString 1.3.6.1.4.1.1466.115.121.1.40 Arbitary octetsjpeg 1.3.6.1.4.1.1466.115.121.1.28 Photo JPEG
• Matching Rules mais utilizadas / comuns
NOME TIPO DESCRIÇÃO
booleanMatch equality boolencaseIgnoreMatch equality case insensitive, space insensitivecaseIgnoreOrderingMatch ordering case insensitive, space insensitivecaseIgnoreSubstringsMatch substrings case insensitive, space insensitivecaseExactMatch equality case sensitive, space insensitivecaseExactOrderingMatch ordering case sensitive, space insensitivecaseExactSubstringsMatch substrings case sensitive, space insensitiveintegerMatch equality integerintegerOrderingMatch ordering integernumericStringMatc equality numericalnumericStringOrderingMatch ordering numericalnumericStringSubstringsMatch substrings numericaloctetStringMatch equality octet stringoctetStringOrderingStringMatch ordering octet stringoctetStringSubstringsStringMatch ordering octet stringobjectIdentiferMatch equality object identifier
• Objetos / atributos
1.3.6.1.4.1.1466.1.x Define atributos (attributetypes)1.3.6.1.4.1.1466.2.x Define Objetos (ObjectClass)
• Tipos de objectClass
AUXILIARY São schemas como: qmail, samba, bind, etc...São objetos que não dependem de outros objetosNão herdam atributos de outros objectClass
STRUCTURAL São objetos que dependem de outros objetos
• Criando nosso próprio schema
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-430015 de 25
root@mgarcia:~# vi local.schema
attributetype (1.3.6.1.4.1.28002.1.1 NAME 'ramal' DESC 'Lista de Ramais' EQUALITY integerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27{6} )
attributetype (1.3.6.1.4.1.28002.1.2 NAME 'CPF' DESC 'CPF' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{14} )
attributetype (1.3.6.1.4.1.28002.1.3 NAME 'RG' DESC 'Registro Geral' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{14} )
objectClass (1.3.6.1.4.1.28002.2.1 NAME 'brasileiro' DESC 'brasileiro' SUP inetOrgPerson STRUCTURAL MUST (UID $ CPF $ RG) MAY (ramal) )
root@mgarcia:~#
Serviço de diretório distribuído
• Criando estrutura de diretórios
root@mgarcia:~# vi referencia.ldif
dn: ou=RJ,o=TheSource,c=BRobjectClass: referralobjectClass: extensibleObjectou: RJref: ldap://192.x.x.x/ou=RJ,o=TheSource,c=BR
dn: ou=PR,o=TheSource,c=BRobjectClass: referralobjectClass: extensibleObjectou: PRref: ldap://192.x.x.x/ou=PR,o=TheSource,c=BR
root@mgarcia:~#
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-430016 de 25
• Importando na base os diretórios distribuídos
root@mgarcia:~# ldapadd -x -W -v -D 'cn=Master,c=BR' -f referencia.ldif
• Consultando a estrutura de diretórios
root@mgarcia:~# ldapsearch -x -b c=BR -C
Habilitando a opção “unique”
• Configuração do servidor
root@mgarcia:~# vi /usr/local/etc/openldap/slapd.conf
## Opcoes globais
# Includes / Schemas
include /usr/local/etc/openldap/schema/core.schemainclude /usr/local/etc/openldap/schema/cosine.schemainclude /usr/local/etc/openldap/schema/inetorgperson.schemainclude /usr/local/etc/openldap/schema/java.schemainclude /usr/local/etc/openldap/schema/nis.schema
# PID / ARGS File
pidfile /usr/local/var/run/slapd.pidargsfile /usr/local/var/run/slapd.args
# Misc options
loglevel 256allow bind_v2sizelimit unlimitedthreads 8
## BDB Definitions
database bdbsuffix "c=BR"rootdn "cn=Master,c=BR"rootpw {MD5}4QrcOUm6Wau+VuBX8g+IPg==directory /usr/local/var/openldap-data
# Opção “unique”
overlay unique
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-430017 de 25
unique_ignore o cn sn ou objectClassunique_attributes uid mail displayName
# ACL's
access to dn.subtree="c=BR" by dn="cn=Master,c=BR" write by dn="cn=Replica,c=BR" write by * read
# Indices
index default eq,presindex objectClass eqindex cn,sn,givenname,mail eq,pres,subindex uid,uidNumber,gidNumber eqindex entryUUID,entryCSN eq
Replicação com LDAP SYNC REPLICATION
• Configuração do servidor Master
root@mgarcia:~# vi /usr/local/etc/openldap/slapd.conf
## Opcoes globais
# Includes / Schemas
include /usr/local/etc/openldap/schema/core.schemainclude /usr/local/etc/openldap/schema/cosine.schemainclude /usr/local/etc/openldap/schema/inetorgperson.schemainclude /usr/local/etc/openldap/schema/java.schemainclude /usr/local/etc/openldap/schema/nis.schema
# PID / ARGS File
pidfile /usr/local/var/run/slapd.pidargsfile /usr/local/var/run/slapd.args
# Misc options
loglevel 256allow bind_v2sizelimit unlimitedthreads 8
## BDB Definitions
database bdb
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-430018 de 25
suffix "c=BR"rootdn "cn=Master,c=BR"rootpw {MD5}4QrcOUm6Wau+VuBX8g+IPg==directory /usr/local/var/openldap-data
# Opção “unique”
overlay uniqueunique_ignore o cn sn ou objectClassunique_attributes uid mail displayName
# LDAP Sync Replication
overlay syncprov
# ACL's
access to dn.subtree="c=BR" by dn="cn=Master,c=BR" write by dn="cn=Replica,c=BR" write by * read
# Indices
index default eq,presindex objectClass eqindex cn,sn,givenname,mail eq,pres,subindex uid,uidNumber,gidNumber eqindex entryUUID,entryCSN eq
• Configuração do servidor Slave
root@mgarcia:~# vi /usr/local/etc/openldap/slapd.conf
## Opcoes globais
# Includes / Schemas
include /usr/local/etc/openldap/schema/core.schemainclude /usr/local/etc/openldap/schema/cosine.schemainclude /usr/local/etc/openldap/schema/inetorgperson.schemainclude /usr/local/etc/openldap/schema/java.schemainclude /usr/local/etc/openldap/schema/nis.schema
# PID / ARGS File
pidfile /usr/local/var/run/slapd.pidargsfile /usr/local/var/run/slapd.args
# Misc options
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-430019 de 25
loglevel 256allow bind_v2sizelimit 20threads 8
## BDB Definitions
database bdbsuffix "c=BR"rootdn "cn=Replica,c=BR"rootpw {MD5}4QrcOUm6Wau+VuBX8g+IPg==directory /usr/local/var/openldap-data
# Opção “unique”
overlay uniqueunique_ignore o cn sn ou objectClassunique_attributes uid mail displayName
# ACL's
access to dn.subtree="c=BR"by dn="cn=Master,c=BR" writeby dn="cn=Replica,c=BR" writeby * read
# LDAP Sync Replication
syncrepl rid=1provider=ldap://192.x.x.x:389binddn="cn=Master,c=BR"bindmethod=simplecredentials=123456searchbase="c=BR"filter="(objectClass=*)"attrs="*"schemachecking=offscope=subtype=refreshOnlyinterval=00:00:00:10
# Indices
index default eq,presindex objectClass eqindex cn,sn,givenname,mail eq,pres,subindex uid,uidNumber,gidNumber eqindex entryUUID,entryCSN eq
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-430020 de 25
Disaster Recover
• Recuperando a base LDAP
root@mgarcia:~# killall -9 slapd
root@mgarcia:~# db_recover -h /usr/local/var/openldap-data
root@mgarcia:~# /usr/local/libexec/slapd -d2
Alguns recursos do OpenLDAP / BerkeleyDB
• Último checkpoint
root@mgarcia:~# db_stat -t -h /usr/local/var/openldap-data
1/403179 File/offset for last checkpoint LSNSun Jan 21 06:41:49 2007 Checkpoint timestamp0x800000df Last transaction ID allocated48 Maximum number of active transactions configured0 Active transactions3 Maximum active transactions223 Number of transactions begun2 Number of transactions aborted221 Number of transactions committed0 Snapshot transactions0 Maximum snapshot transactions0 Number of transactions restored24KB Transaction region size0 The number of region locks that required waiting (0%)Active transactions:
root@mgarcia:~#
• Efetuar um checkpoint
root@mgarcia:~# /usr/local/var/openldap-data# db_checkpoint -1
• Listar logs do BerkeleyDB, tudo o que foi feito e por quem
root@mgarcia:~# db_printlog -h /usr/local/var/openldap-data
[1][423569]__bam_repl: rec: 58 txnp 800000da prevlsn [1][423501] fileid: 8 pgno: 1 lsn: [1][400966]
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-430021 de 25
indx: 11 isdeleted: 0 orig: 0xd ("uid=mgarcia,ou=TI,o=TheSource,c=BR0 "uid=mgarcia,ou=ti,o=thesource,c=br0 0x15 structuralObjectClass0 0x1 0xdinetOrgPerson0 0 0x9 entryUUID0 0x1 $deb9bd98-3c45-102b-9f08-ef5ff079dd8d0 0x1 0x10 0xde 0xb9 0xbd 0x98 <E0x10 +0x9f 0x8 0xef _0xf0 y0xdd 0x8d 0 0xc creatorsName0 0x1 0xe cn=Master,c=BR0 0x1 0xe cn=master,c=br0 0xf createTimestamp0 0x1 0xf 20070119201746Z0 0 0xb objectClass0 0x1 0xd inetOrgPerson0 0 0x3 uid0 0x1 0x7 mgarcia0 0x1 0x7 mgarcia0 0x2 cn0 0x1 0xd Marcio Garcia0 0x1 0xd marcio garcia0 0x4 mail00x1 0x18 [email protected] 0x1 0x18 [email protected] 0x2 sn0 0x1 0x6 Garcia0 0x1 0x6 garcia0 0xc userPassword0 0x1 &{SSHA}PGojKqfj1rRE2hulgWxZ43iXRQrShQDX0 0 0x8 entryCSN0 0x1 20070121081541Z#000000#00#0000000 0 0xd modifiersName0 0x1 "uid=mgarcia,ou=TI,o=TheSource,c=BR0 0x1 "uid=mgarcia,ou=ti,o=thesource,c=br0 0xf modifyTimestamp0 0x1 0xf 2007012108154 repl: 0xe ,"uid=mgarcia,ou=TI,o=TheSource,c=BR0 "uid=mgarcia,ou=ti,o=thesource,c=br0 0x15 structuralObjectClass0 0x1 0xdinetOrgPerson0 0 0x9 entryUUID0 0x1 $deb9bd98-3c45-102b-9f08-ef5ff079dd8d0 0x1 0x10 0xde 0xb9 0xbd 0x98 <E0x10 +0x9f 0x8 0xef _0xf0 y0xdd 0x8d 0 0xc creatorsName0 0x1 0xe cn=Master,c=BR0 0x1 0xe cn=master,c=br0 0xf createTimestamp0 0x1 0xf 20070119201746Z0 0 0xb objectClass0 0x1 0xd inetOrgPerson0 0 0x3 uid0 0x1 0x7 mgarcia0 0x1 0x7 mgarcia0 0x2 cn0 0x1 0xd Marcio Garcia0 0x1 0xd marcio garcia0 0x4 mail00x1 0x18 [email protected] 0x1 0x18 [email protected] 0x2 sn0 0x1 0x10 Garcia Marcenari0 0x1 0x10 garcia marcenari0 0xc userPassword0 0x1 &{SSHA}r7cL0H7hBOLBqUDQ4Do01T94gmA8P2NZ0 0 0x6 mobile0 0x1 0x7 99999990 0x1 0x7 99999990 0x8 entryCSN0 0x1 20070121091121Z#000000#00#0000000 0 0xd modifiersName0 0x1 0xe cn=Master,c=BR0 0x1 0xe cn=master,c=br0 0xf modifyTimestamp0 0x1 0xf 2007012109112 prefix: 0 suffix: 4
root@mgarcia:~#
• Listar logs do BerkeleyDB, de um determinado registro
root@mgarcia:~# db_printlog -b 1/423569 -e 1/423569 -h /usr/local/var/openldap-data
[1][423569]__bam_repl: rec: 58 txnp 800000da prevlsn [1][423501] fileid: 8 pgno: 1 lsn: [1][400966] indx: 11 isdeleted: 0 orig: 0xd ("uid=mgarcia,ou=TI,o=TheSource,c=BR0 "uid=mgarcia,ou=ti,o=thesource,c=br0 0x15 structuralObjectClass0 0x1 0xdinetOrgPerson0 0 0x9 entryUUID0 0x1 $deb9bd98-3c45-102b-9f08-
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-430022 de 25
ef5ff079dd8d0 0x1 0x10 0xde 0xb9 0xbd 0x98 <E0x10 +0x9f 0x8 0xef _0xf0 y0xdd 0x8d 0 0xc creatorsName0 0x1 0xe cn=Master,c=BR0 0x1 0xe cn=master,c=br0 0xf createTimestamp0 0x1 0xf 20070119201746Z0 0 0xb objectClass0 0x1 0xd inetOrgPerson0 0 0x3 uid0 0x1 0x7 mgarcia0 0x1 0x7 mgarcia0 0x2 cn0 0x1 0xd Marcio Garcia0 0x1 0xd marcio garcia0 0x4 mail00x1 0x18 [email protected] 0x1 0x18 [email protected] 0x2 sn0 0x1 0x6 Garcia0 0x1 0x6 garcia0 0xc userPassword0 0x1 &{SSHA}PGojKqfj1rRE2hulgWxZ43iXRQrShQDX0 0 0x8 entryCSN0 0x1 20070121081541Z#000000#00#0000000 0 0xd modifiersName0 0x1 "uid=mgarcia,ou=TI,o=TheSource,c=BR0 0x1 "uid=mgarcia,ou=ti,o=thesource,c=br0 0xf modifyTimestamp0 0x1 0xf 2007012108154 repl: 0xe ,"uid=mgarcia,ou=TI,o=TheSource,c=BR0 "uid=mgarcia,ou=ti,o=thesource,c=br0 0x15 structuralObjectClass0 0x1 0xdinetOrgPerson0 0 0x9 entryUUID0 0x1 $deb9bd98-3c45-102b-9f08-ef5ff079dd8d0 0x1 0x10 0xde 0xb9 0xbd 0x98 <E0x10 +0x9f 0x8 0xef _0xf0 y0xdd 0x8d 0 0xc creatorsName0 0x1 0xe cn=Master,c=BR0 0x1 0xe cn=master,c=br0 0xf createTimestamp0 0x1 0xf 20070119201746Z0 0 0xb objectClass0 0x1 0xd inetOrgPerson0 0 0x3 uid0 0x1 0x7 mgarcia0 0x1 0x7 mgarcia0 0x2 cn0 0x1 0xd Marcio Garcia0 0x1 0xd marcio garcia0 0x4 mail00x1 0x18 [email protected] 0x1 0x18 [email protected] 0x2 sn0 0x1 0x10 Garcia Marcenari0 0x1 0x10 garcia marcenari0 0xc userPassword0 0x1 &{SSHA}r7cL0H7hBOLBqUDQ4Do01T94gmA8P2NZ0 0 0x6 mobile0 0x1 0x7 99999990 0x1 0x7 99999990 0x8 entryCSN0 0x1 20070121091121Z#000000#00#0000000 0 0xd modifiersName0 0x1 0xe cn=Master,c=BR0 0x1 0xe cn=master,c=br0 0xf modifyTimestamp0 0x1 0xf 2007012109112 prefix: 0 suffix: 4
root@mgarcia:~#
Segurança no OpenLDAP
• Habilitando logs do OpenLDAP no Syslog
root@mgarcia:~# vi /etc/syslog.conf
local4.* -/var/log/ldap
root@mgarcia:~# touch /var/log/ldaproot@mgarcia:~# chmod 640 ldaproot@mgarcia:~# kill -HUP `pidof syslogd`
• Iniciando o OpenLDAP como usuário
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-430023 de 25
root@mgarcia:~# groupadd ldaproot@mgarcia:~# useradd ldap -g ldap -s /bin/false
root@mgarcia:~# cd /usr/local/etc/root@mgarcia:~# chown -R ldap: openldap/root@mgarcia:~# chmod 750 openldap
root@mgarcia:~# cd /usr/local/var/root@mgarcia:~# chown -R ldap: openldap-data/ openldap-slurp/root@mgarcia:~# chmod 750 openldap-data/ openldap-slurp
root@mgarcia:~# cd /usr/local/var/run/root@mgarcia:~# mkdir ldaproot@mgarcia:~# chown -R ldap: ldaproot@mgarcia:~# chmod 750 ldap
root@mgarcia:~# vi /usr/local/etc/openldap/slapd.conf
## Opcoes globais
# Includes / Schemas
include /usr/local/etc/openldap/schema/core.schemainclude /usr/local/etc/openldap/schema/cosine.schemainclude /usr/local/etc/openldap/schema/inetorgperson.schemainclude /usr/local/etc/openldap/schema/java.schemainclude /usr/local/etc/openldap/schema/nis.schema
# PID / ARGS File
pidfile /usr/local/var/run/ldap/slapd.pidargsfile /usr/local/var/run/ldap/slapd.args
# Misc options
loglevel 256allow bind_v2sizelimit unlimitedthreads 8
## BDB Definitions
database bdbsuffix "c=BR"rootdn "cn=Master,c=BR"rootpw {MD5}4QrcOUm6Wau+VuBX8g+IPg==directory /usr/local/var/openldap-data
# Opção “unique”
overlay uniqueunique_ignore o cn sn ou objectClassunique_attributes uid mail displayName
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-430024 de 25
# LDAP Sync Replication
overlay syncprov
# ACL's
access to dn.subtree="c=BR" by dn="cn=Master,c=BR" write by dn="cn=Replica,c=BR" write by * read
# Indices
index default eq,presindex objectClass eqindex cn,sn,givenname,mail eq,pres,subindex uid,uidNumber,gidNumber eqindex entryUUID,entryCSN eq
root@mgarcia:~# /usr/local/libexec/slapd -u ldap -g ldap
Obrigado!
Marcio Garcia [email protected]@thesource.com.br
The Source Consultoria, Desenvolvimento e CapacitaçãoRua Afonso Celso, 457 – Vila Mariana – São Paulo
PABX: 2171-430025 de 25