Circuito_Openldap_Avançado

25
CIRCUITO AVANÇADO DE OPENLDAP Marcio Garcia Marcenari [email protected] [email protected] The Source Consultoria, Desenvolvimento e Capacitação Rua Afonso Celso, 457 – Vila Mariana – São Paulo PABX: 2171-4300 1 de 25

Transcript of Circuito_Openldap_Avançado

Page 1: 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

Page 2: Circuito_Openldap_Avançado

Í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

Page 3: Circuito_Openldap_Avançado

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

Page 4: Circuito_Openldap_Avançado

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

Page 5: Circuito_Openldap_Avançado

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

Page 6: Circuito_Openldap_Avançado

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

Page 7: Circuito_Openldap_Avançado

• 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

Page 8: Circuito_Openldap_Avançado

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

Page 9: Circuito_Openldap_Avançado

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

Page 10: Circuito_Openldap_Avançado

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

Page 11: Circuito_Openldap_Avançado

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

Page 12: Circuito_Openldap_Avançado

• 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

Page 13: Circuito_Openldap_Avançado

• 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

Page 14: Circuito_Openldap_Avançado

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

Page 15: Circuito_Openldap_Avançado

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

Page 16: Circuito_Openldap_Avançado

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

Page 17: Circuito_Openldap_Avançado

• 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

Page 18: Circuito_Openldap_Avançado

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

Page 19: Circuito_Openldap_Avançado

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

Page 20: Circuito_Openldap_Avançado

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

Page 21: Circuito_Openldap_Avançado

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

Page 22: Circuito_Openldap_Avançado

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

Page 23: Circuito_Openldap_Avançado

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

Page 24: Circuito_Openldap_Avançado

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

Page 25: Circuito_Openldap_Avançado

# 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