Difference: HowtoOpenLDAP (1 vs. 4)

Revision 4
06 Feb 2020 - italovalcy
Line: 1 to 1
 
META TOPICPARENT name="WebHome"

Howto OpenLDAP

Line: 135 to 124
  wget https://svn.rnp.br/repos/CAFe/schemas/openldap/breduperson.0.0.6.schema -O /etc/ldap/schema/breduperson.schema --no-check-certificate

Para baixar os schemas do SCHAC:
Added:
>
>
 
Changed:
<
<
wget https://wiki.refeds.org/download/attachments/1606048/schac-20150413-1.5.0.schema.txt -O /etc/ldap/schema/schac.schema --no-check-certificate
>
>
wget https://wiki.refeds.org/download/attachments/1606048/schac-20150413-1.5.0.schema.txt -O /etc/ldap/schema/schac.schema --no-check-certificate
 

Em seguida, devemos editar o arquivo /etc/ldap/slapd.conf e acrescentar os seguintes schemas na configuração:
Deleted:
<
<
 
...
include         /etc/ldap/schema/misc.schema
Line: 317 to 290
 
modulepath      /usr/lib/ldap
moduleload      refint
Changed:
<
<
moduleload memberof
>
>
moduleload memberof
 

O módulo memberof irá prover a funcionalidade de mapeamento reverso de grupos, enquanto que o módulo refint será usado para garantir integridade dos atributos de mapeamento reverso quando da remoção de um grupo.
Line: 337 to 310
  # atributo que armazena o DN dos membros de um grupo memberof-member-ad member # atributo que armazena o(s) DN(s) do(s) grupo(s) de um usuario
Changed:
<
<
memberof-memberof-ad memberOf
>
>
memberof-memberof-ad memberOf
 

Vamos criar índices para os atributos do overlay memberof. Para isso devemos editar o arquivo /etc/ldap/slapd.conf conforme abaixo:
Added:
>
>
 
# Indexing options for database #1
...
Line: 345 to 318
  # Indexing options for database #1 ... index member eq
Changed:
<
<
index memberOf eq
>
>
index memberOf eq
 

Em seguida faça um teste na configuração do slapd:
Added:
>
>
 
Changed:
<
<
slapd -Tt
>
>
slapd -Tt
 

E caso o retorno seja config file testing succeeded, é preciso recriar os índices e reiniciar o daemon:
Added:
>
>
 
invoke-rc.d slapd stop
slapindex
Line: 358 to 331
  invoke-rc.d slapd stop slapindex chown -R openldap:openldap /var/lib/ldap
Changed:
<
<
invoke-rc.d slapd start
>
>
invoke-rc.d slapd start
 

Abaixo um exemplo de criação de grupo com mapeamento reverso pode ser visto no LDIF abaixo, onde o usuário fulano, beltrano e cicrano foram inseridos no grupo:
Added:
>
>
 
# owncloud-users, groups, foobar.br
dn: cn=owncloud-users,ou=groups,dc=foobar,dc=br
Line: 370 to 343
  description: Grupo de usuarios com acesso ao owncloud member: uid=fulano,ou=people,dc=foobar,dc=br member: uid=beltrano,ou=people,dc=foobar,dc=br
Changed:
<
<
member: uid=cicrano,ou=people,dc=foobar,dc=br
>
>
member: uid=cicrano,ou=people,dc=foobar,dc=br
 

Nesse exemplo ficitício, poderíamos depois listar os membros do grupo owncloud-users, com uma busca como:
Added:
>
>
 
Changed:
<
<
ldapsearch -x -h localhost -D cn=gerente-ldap,dc=foobar,dc=br -W -b dc=foobar,dc=br '(memberOf=cn=owncloud-users,ou=groups,dc=foobar,dc=br)'
>
>
ldapsearch -x -h localhost -D cn=gerente-ldap,dc=foobar,dc=br -W -b dc=foobar,dc=br '(memberOf=cn=owncloud-users,ou=groups,dc=foobar,dc=br)'
 

Habilitar overlay de last bind

Revision 3
06 Jul 2017 - italovalcy
Line: 1 to 1
 
META TOPICPARENT name="WebHome"

Howto OpenLDAP

Line: 127 to 127
 

Abaixo vamos mostrar como adicionar esquemas LDAP adicionais à sua base. Os esquemas LDAP agregam novos atributos e classes de objetos, expandindo a capacidade de armazenamento da sua base. No exemplo a seguir vamos mostrar a inserção de atributos necessários pela CAFe/RNP - Comunidade Acadêmica Federada.
Changed:
<
<
Para importar a base de dados é necessário antes adicionar os schemas misc.schema, eduPerson e brEduPerson, que serão utilizados para prover atributos da Federação CAFe.
>
>
Para importar a base de dados é necessário antes adicionar os schemas misc.schema, eduPerson e brEduPerson, que serão utilizados para prover atributos da Federação CAFe. Além disso, é importante também importar o schema schac.schema (SCHema for ACademia), que é o schema utilizado para a Rede de Inter-Federações.
 

Para isso é necessário baixar os schemas do CAFe:
Deleted:
<
<
 
wget https://svn.rnp.br/repos/CAFe/schemas/openldap/eduperson.schema -O /etc/ldap/schema/eduperson.schema --no-check-certificate
wget https://svn.rnp.br/repos/CAFe/schemas/openldap/breduperson.0.0.6.schema -O /etc/ldap/schema/breduperson.schema --no-check-certificate
Line: 135 to 134
  wget https://svn.rnp.br/repos/CAFe/schemas/openldap/eduperson.schema -O /etc/ldap/schema/eduperson.schema --no-check-certificate wget https://svn.rnp.br/repos/CAFe/schemas/openldap/breduperson.0.0.6.schema -O /etc/ldap/schema/breduperson.schema --no-check-certificate
Added:
>
>
Para baixar os schemas do SCHAC:
wget https://wiki.refeds.org/download/attachments/1606048/schac-20150413-1.5.0.schema.txt -O /etc/ldap/schema/schac.schema --no-check-certificate
  Em seguida, devemos editar o arquivo /etc/ldap/slapd.conf e acrescentar os seguintes schemas na configuração:
Line: 142 to 146
  include /etc/ldap/schema/misc.schema include /etc/ldap/schema/eduperson.schema include /etc/ldap/schema/breduperson.schema
Added:
>
>
include /etc/ldap/schema/schac.schema
  ...

Em seguida faça um teste na configuração do slapd:
Revision 2
14 Jul 2016 - italovalcy
Line: 1 to 1
 
META TOPICPARENT name="WebHome"

Howto OpenLDAP

Line: 24 to 25
  sed -i "s/@SUFFIX@/dc=foobar,dc=br/" /etc/ldap/slapd.conf sed -ri "s/# rootdn *\"cn=admin/rootdn \"cn=gerente-ldap/" /etc/ldap/slapd.conf sed -i '/@ADMIN@/d' /etc/ldap/slapd.conf
Changed:
<
<
sed -i 's/dbconfig/# dbconfig/g' /etc/ldap/slapd.conf
>
>
sed -i 's/dbconfig/# dbconfig/g' /etc/ldap/slapd.conf
 

Na configuração acima, atente-se para:
  • Altere o domínio e a base para a sua realidade
Line: 36 to 37
 
debconf-set-selections <<-EOF
slapd slapd/no_configuration boolean true
Changed:
<
<
EOF
>
>
EOF
 

O próximo passo é realizar a instalação do servidor LDAP, com o seguinte comando:
Added:
>
>
 
Changed:
<
<
aptitude install slapd ldap-utils
>
>
aptitude install slapd ldap-utils
 

Após realizar a configuração inicial do LDAP, vamos modificar o DN do admin a fim de evitar tentativas de brute-force com esse usuário (nome padrão: cn=admin). Para isso execute o seguinte comando (informe a senha criada acima):
Added:
>
>
 
Changed:
<
<
ldapmodrdn -x -h localhost -D cn=admin,dc=foobar,dc=br -W cn=admin,dc=foobar,dc=br cn=gerente-ldap
>
>
ldapmodrdn -x -h localhost -D cn=admin,dc=foobar,dc=br -W cn=admin,dc=foobar,dc=br cn=gerente-ldap
 

Os passos acima farão com que a configuração do LDAP seja realizada através do método Online Configuration (as configurações ficam também na base LDAP, no dn: cn=config). Vamos migrar para a configuração no modelo antigo, através do arquivo slapd.conf. Para isso, execute os seguintes comandos:
Added:
>
>
 
invoke-rc.d slapd stop
rm -rf /etc/ldap/slapd.d/
Line: 59 to 60
  sed -ri "s/# rootdn *\"cn=admin/rootdn \"cn=gerente-ldap/" /etc/ldap/slapd.conf sed -i '/@ADMIN@/d' /etc/ldap/slapd.conf sed -i 's/dbconfig/# dbconfig/g' /etc/ldap/slapd.conf
Changed:
<
<
invoke-rc.d slapd start
>
>
invoke-rc.d slapd start

Design da base LDAP

A base LDAP é formada por vários OUs (Organization Units), cada um com os usuários (pessoas) de cada entidade envolvida nas atividades e serviços. A configuração de design proposta para a sua organização leva em consideração diferentes subárvores para usuários, grupos e aplicações. Para implementar essa estrutura, crie o arquivo LDIF abaixo (/root/design-ldap-foobar.ldif):

# people, foobar.br
dn: ou=people,dc=foobar,dc=br
objectClass: organizationalUnit
objectClass: top
ou: people

# groups, foobar.br
dn: ou=groups,dc=foobar,dc=br
objectClass: organizationalUnit
objectClass: top
ou: groups

# apps, foobar.br
dn: ou=apps,dc=foobar,dc=br
objectClass: organizationalUnit
objectClass: top
ou: apps

Em seguida, atualize a base LDAP para incluir essa nova estrutura:

ldapadd -x -h localhost -D cn=gerente-ldap,dc=foobar,dc=br -W -f base-ldap-foobar.ldif

Criação de aplicações de leitura da base

Como mecanismo de segurança, a base LDAP não permitirá leitura de login anonimo. Para isso, desativaremos esse tipo de consulta e criaremos usuários específicos para cada consulta. Devemos, portanto, alterar privilégios para evitar bind anonimo com leitura (apenas autenticado pode ler), alterando o seguinte trecho do arquivo /etc/ldap/slapd.conf:

# The admin dn has full write access, everyone else
# need to authenticate to read anything
access to *
        by users read
        by anonymous auth
        by * none

Em seguida, vamos criar um usuário de leitura de uma aplicação genérica XPTO, que será usado futuramente para autenticação de usuários ou buscas na base:

cat > leitor-xpto.ldif <<EOF
dn: cn=leitor-xpto,ou=apps,dc=foobar,dc=br
objectClass: organizationalRole
objectClass: simpleSecurityObject
cn: leitor-xpto
description: Leitor XPTO
userPassword: {SSHA}xxxx
EOF

A senha pode ser gerada com o aplicativo slappasswd.

Agora é preciso inserir essa nova conta:

ldapadd -x -h localhost -D cn=gerente-ldap,dc=foobar,dc=br -W -f leitor-xpto.ldif
 

Habilitar schemas adicionais

Added:
>
>
Abaixo vamos mostrar como adicionar esquemas LDAP adicionais à sua base. Os esquemas LDAP agregam novos atributos e classes de objetos, expandindo a capacidade de armazenamento da sua base. No exemplo a seguir vamos mostrar a inserção de atributos necessários pela CAFe/RNP - Comunidade Acadêmica Federada.
  Para importar a base de dados é necessário antes adicionar os schemas misc.schema, eduPerson e brEduPerson, que serão utilizados para prover atributos da Federação CAFe.

Para isso é necessário baixar os schemas do CAFe:
Line: 67 to 130
  Para importar a base de dados é necessário antes adicionar os schemas misc.schema, eduPerson e brEduPerson, que serão utilizados para prover atributos da Federação CAFe.

Para isso é necessário baixar os schemas do CAFe:
Added:
>
>
 
wget https://svn.rnp.br/repos/CAFe/schemas/openldap/eduperson.schema -O /etc/ldap/schema/eduperson.schema --no-check-certificate
Changed:
<
<
wget https://svn.rnp.br/repos/CAFe/schemas/openldap/breduperson.0.0.6.schema -O /etc/ldap/schema/breduperson.schema --no-check-certificate
>
>
wget https://svn.rnp.br/repos/CAFe/schemas/openldap/breduperson.0.0.6.schema -O /etc/ldap/schema/breduperson.schema --no-check-certificate
 

Em seguida, devemos editar o arquivo /etc/ldap/slapd.conf e acrescentar os seguintes schemas na configuração:
Added:
>
>
 
...
include         /etc/ldap/schema/misc.schema
Line: 78 to 142
  include /etc/ldap/schema/misc.schema include /etc/ldap/schema/eduperson.schema include /etc/ldap/schema/breduperson.schema
Changed:
<
<
...
>
>
...
 

Em seguida faça um teste na configuração do slapd:
Added:
>
>
 
Changed:
<
<
slapd -Tt
>
>
slapd -Tt
 

E caso o retorno seja config file testing succeeded, faça o restart do daemon:
Added:
>
>
 
Changed:
<
<
invoke-rc.d slapd restart
>
>
invoke-rc.d slapd restart
 

Limite de respostas

Line: 98 to 160
 
 # The maximum number of entries that is returned for a search operation
-sizelimit 500
Changed:
<
<
+sizelimit unlimited
>
>
+sizelimit unlimited
 

Logging

Line: 117 to 179
  +loglevel 256

# Where the dynamically loaded modules are stored
Changed:
<
<
modulepath /usr/lib/ldap
>
>
modulepath /usr/lib/ldap
 

Índices

Line: 130 to 192
  index mail eq index dc eq index uid pres,sub,eq
Deleted:
<
<
index member eq index memberOf eq
  index brEduAffiliation pres index brEntranceDate pres
Changed:
<
<
index brExitDate pres
>
>
index brExitDate pres
 

Agora é preciso recriar os índices e reiniciar o daemon:
Added:
>
>
 
invoke-rc.d slapd stop
slapindex
Line: 142 to 202
  invoke-rc.d slapd stop slapindex chown -R openldap:openldap /var/lib/ldap
Changed:
<
<
invoke-rc.d slapd start
>
>
invoke-rc.d slapd start
 

Habilitar SSL/TLS

Line: 151 to 211
 
mkdir /etc/ldap/ssl
cd /etc/ldap/ssl
Changed:
<
<
openssl genrsa -des3 -out ldap-ca.key 2048
>
>
openssl genrsa -des3 -out ldap-ca.key 2048
 

Em seguida vamos criar um certificado para a nossa CA:
Added:
>
>
 
Changed:
<
<
openssl req -new -x509 -days 36500 -key ldap-ca.key -out ldap-ca.crt
>
>
openssl req -new -x509 -days 36500 -key ldap-ca.key -out ldap-ca.crt
 

Responda as seguintes perguntas:
  • Country Name: BR
Line: 169 to 228
 
  • Email Address:

Agora vamos criar o certificado do servidor LDAP, assinado pela CA criada acima. Primeiro vamos gerar uma requisição de certificado:
Added:
>
>
 
Changed:
<
<
openssl req -nodes -new -keyout ldap.key -out ldap.csr
>
>
openssl req -nodes -new -keyout ldap.key -out ldap.csr
 

Responda as seguintes perguntas:
  • Country Name: BR
Line: 185 to 244
 
  • An optional company name:

Em seguida assinaremos a requisição de certificado com a chave da CA:
Added:
>
>
 
Changed:
<
<
openssl x509 -req -in ldap.csr -out ldap.crt -sha1 -CA ldap-ca.crt -CAkey ldap-ca.key -CAcreateserial -days 36500
>
>
openssl x509 -req -in ldap.csr -out ldap.crt -sha1 -CA ldap-ca.crt -CAkey ldap-ca.key -CAcreateserial -days 36500
 

Modificaremos a permissão dos arquivos:
Added:
>
>
 
chown openldap:openldap ldap.key
Changed:
<
<
chmod 640 ldap.key
>
>
chmod 640 ldap.key
 

Agora devemos configurar no LDAP para utilizar os certificados SSL criados acima. Para isso edite o arquivo /etc/ldap/slapd.conf e insira as seguintes informações (logo no começo antes dos includes):
Added:
>
>
 
################
# Global Directives:
Line: 203 to 263
  # SSL/TLS certificates TLSCACertificateFile /etc/ldap/ssl/ldap-ca.crt TLSCertificateFile /etc/ldap/ssl/ldap.crt
Changed:
<
<
TLSCertificateKeyFile /etc/ldap/ssl/ldap.key
>
>
TLSCertificateKeyFile /etc/ldap/ssl/ldap.key
 

Alteraremos também o arquivo /etc/default/slapd conforme abaixo:
Added:
>
>
 
-SLAPD_SERVICES="ldap:/// ldapi:///"
Changed:
<
<
+SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"
>
>
+SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"
 

Em seguida faça um teste na configuração do slapd:
Added:
>
>
 
Changed:
<
<
slapd -Tt
>
>
slapd -Tt
 

E caso o retorno seja config file testing succeeded, faça o restart do daemon:
Added:
>
>
 
Changed:
<
<
invoke-rc.d slapd restart
>
>
invoke-rc.d slapd restart
 

Configurar o /etc/ldap/ldap.conf (parametros do cliente):
Added:
>
>
 
BASE   dc=foobar,dc=br
URI   ldap://localhost
Line: 226 to 286
 
BASE   dc=foobar,dc=br
URI   ldap://localhost
Changed:
<
<
TLS_CACERT /etc/ldap/ssl/ldap-ca.crt
>
>
TLS_CACERT /etc/ldap/ssl/ldap-ca.crt
 

Alterar o arquivo /etc/hosts e acrescentar um alias para ldap.foobar.br:
Added:
>
>
 
diff --git a/hosts b/hosts
index 2dc3692..16c502b 100644
Line: 241 to 301
  +127.0.1.1 debian.foobar.br debian ldap.foobar.br

# The following lines are desirable for IPv6 capable hosts
Changed:
<
<
::1 localhost ip6-localhost ip6-loopback
>
>
::1 localhost ip6-localhost ip6-loopback
 
Deleted:
<
<

Habilitar overlay de last bind

 
Changed:
<
<
O overlay de lastbind é interessante para armazenar o timestamp do último logon do usuário, facilitando assim a identificação de usuários inativos.
>
>

Habilitar overlay de reverse group mapping

O overlay de grupo reverso é importante para que, ao inserir um usuário em um grupo, o OpenLDAP insira também um atributo no objeto do usuário informando o DN do grupo que ele pertence. Dessa forma, é possível implementar filtros por atributos que na verdade representam o grupo (exemplo de filtro: (memberOf=cn=helpdesk-admin,ou=groups,dc=foobar,dc=br)), pois algumas ferramentas não suportam fazer controle de acesso por grupo.
 

O primeiro passo é editar a configuração do servidor LDAP (/etc/ldap/slapd.conf) e garantir a existência das seguintes configurações, que devem ficar antes das definições dos backends:
modulepath      /usr/lib/ldap
Changed:
<
<
moduleload lastbind
>
>
moduleload refint moduleload memberof
 
Changed:
<
<
Em seguida, devemos editar novamente a configuração do SLAPD (/etc/ldap/slapd.conf) e incluir a configuração do módulo lastbind na base que desejamos habilitá-lo. Nesse momento é importante salientar que a configuração deve vir após a definição do backend da base e antes da definição de outra base.
>
>
O módulo memberof irá prover a funcionalidade de mapeamento reverso de grupos, enquanto que o módulo refint será usado para garantir integridade dos atributos de mapeamento reverso quando da remoção de um grupo.

Em seguida, devemos editar novamente a configuração do SLAPD (/etc/ldap/slapd.conf) e incluir a configuração do módulo memberof na base que desejamos habilitá-lo. Nesse momento é importante salientar que a configuração deve vir após a definição do backend da base e antes da definição de outra base.
 
Changed:
<
<
################################################### ## overlay lastbind ################################################### overlay lastbind # tempo maximo (seg) que o authTimestamp pode ficar desatualizado por questoes # de desempenho. Caso seja omitido, sera atualizado a cada bind com sucesso lastbind-precision 86400
>
>
################ ## overlay memberof ################ overlay memberof # determina se alteracoes nos objetos (ex: novo DN) serao replicadas # para os grupos aos quais ele eh "member of", garantindo a integridade # referencial (refint) memberof-refint true # nome do objectClass que eh usado para disparar mapeamento reverso de grupos memberof-group-oc groupOfNames # atributo que armazena o DN dos membros de um grupo memberof-member-ad member # atributo que armazena o(s) DN(s) do(s) grupo(s) de um usuario memberof-memberof-ad memberOf

Vamos criar índices para os atributos do overlay memberof. Para isso devemos editar o arquivo /etc/ldap/slapd.conf conforme abaixo:
# Indexing options for database #1
...
index   member                  eq
index   memberOf                eq
 

Em seguida faça um teste na configuração do slapd:
Line: 270 to 348
  slapd -Tt
Changed:
<
<
E caso o retorno seja config file testing succeeded, faça o restart do daemon:
>
>
E caso o retorno seja config file testing succeeded, é preciso recriar os índices e reiniciar o daemon:
 
Changed:
<
<
invoke-rc.d slapd restart
>
>
invoke-rc.d slapd stop slapindex chown -R openldap:openldap /var/lib/ldap invoke-rc.d slapd start
 
Changed:
<
<

Design da base LDAP

>
>
Abaixo um exemplo de criação de grupo com mapeamento reverso pode ser visto no LDIF abaixo, onde o usuário fulano, beltrano e cicrano foram inseridos no grupo:
# owncloud-users, groups, foobar.br
dn: cn=owncloud-users,ou=groups,dc=foobar,dc=br
objectClass: groupOfNames
cn: owncloud-users
description: Grupo de usuarios com acesso ao owncloud
member: uid=fulano,ou=people,dc=foobar,dc=br
member: uid=beltrano,ou=people,dc=foobar,dc=br
member: uid=cicrano,ou=people,dc=foobar,dc=br
 
Changed:
<
<
A base LDAP é formada por vários OUs (Organization Units), cada um com os usuários (pessoas) de cada entidade envolvida nas atividades e serviços. A configuração de design proposta para a sua organização leva em consideração diferentes subárvores para usuários, grupos e aplicações. Para implementar essa estrutura, crie o arquivo LDIF abaixo (/root/design-ldap-foobar.ldif):
>
>
Nesse exemplo ficitício, poderíamos depois listar os membros do grupo owncloud-users, com uma busca como:
 
Changed:
<
<
# people, foobar.br dn: ou=people,dc=foobar,dc=br objectClass: organizationalUnit objectClass: top ou: people
>
>
ldapsearch -x -h localhost -D cn=gerente-ldap,dc=foobar,dc=br -W -b dc=foobar,dc=br '(memberOf=cn=owncloud-users,ou=groups,dc=foobar,dc=br)'
 
Changed:
<
<
# groups, foobar.br dn: ou=groups,dc=foobar,dc=br objectClass: organizationalUnit objectClass: top ou: groups
>
>

Habilitar overlay de last bind

 
Changed:
<
<
# apps, foobar.br dn: ou=apps,dc=foobar,dc=br objectClass: organizationalUnit objectClass: top ou: apps
>
>
O overlay de lastbind é interessante para armazenar o timestamp do último logon do usuário, facilitando assim a identificação de usuários inativos.

O primeiro passo é editar a configuração do servidor LDAP (/etc/ldap/slapd.conf) e garantir a existência das seguintes configurações, que devem ficar antes das definições dos backends:
 
Deleted:
<
<
Em seguida, atualize a base LDAP para incluir essa nova estrutura:
 
Changed:
<
<
ldapadd -x -h localhost -D cn=gerente-ldap,dc=foobar,dc=br -W -f base-ldap-foobar.ldif
>
>
modulepath /usr/lib/ldap moduleload lastbind
 
Changed:
<
<

Criação de aplicações de leitura da base

>
>
Em seguida, devemos editar novamente a configuração do SLAPD (/etc/ldap/slapd.conf) e incluir a configuração do módulo lastbind na base que desejamos habilitá-lo. Nesse momento é importante salientar que a configuração deve vir após a definição do backend da base e antes da definição de outra base.
 
Deleted:
<
<
Como mecanismo de segurança, a base LDAP não permitirá leitura de login anonimo. Para isso, desativaremos esse tipo de consulta e criaremos usuários específicos para cada consulta. Devemos, portanto, alterar privilégios para evitar bind anonimo com leitura (apenas autenticado pode ler), alterando o seguinte trecho do arquivo /etc/ldap/slapd.conf:
 
Changed:
<
<
# The admin dn has full write access, everyone else # need to authenticate to read anything access to * by users read by anonymous auth by * none
>
>
################################################### ## overlay lastbind ################################################### overlay lastbind # tempo maximo (seg) que o authTimestamp pode ficar desatualizado por questoes # de desempenho. Caso seja omitido, sera atualizado a cada bind com sucesso lastbind-precision 86400

Em seguida faça um teste na configuração do slapd:
 
Deleted:
<
<
Em seguida, vamos criar um usuário de leitura de uma aplicação genérica XPTO, que será usado futuramente para autenticação de usuários ou buscas na base:
 
Changed:
<
<
cat > leitor-xpto.ldif <<EOF dn: cn=leitor-xpto,ou=apps,dc=foobar,dc=br objectClass: organizationalRole objectClass: simpleSecurityObject cn: leitor-xpto description: Leitor XPTO userPassword: {SSHA}xxxx EOF
>
>
slapd -Tt
 
Changed:
<
<
A senha pode ser gerada com o aplicativo slappasswd.
>
>
E caso o retorno seja config file testing succeeded, faça o restart do daemon:
 
Deleted:
<
<
Agora é preciso inserir essa nova conta:
 
Changed:
<
<
ldapadd -x -h localhost -D cn=gerente-ldap,dc=foobar,dc=br -W -f leitor-xpto.ldif
>
>
invoke-rc.d slapd restart
 

Integração entre o OpenLDAP e AD

Line: 339 to 409
  Para permitir a integração das bases OpenLDAP e AD, será utilizado o framework de autenticação SASL. Essa integração é importante pois o AD não permite exportar as senhas dos usuários, dessa forma a base LDAP irá conter os atributos gerais do usuário (nome, login, e-mail etc) mas a senha continuará sendo armazenada no AD.

O primeiro passo é instalar o daemon do SASL:
Added:
>
>
 
Changed:
<
<
aptitude install sasl2-bin
>
>
aptitude install sasl2-bin
 

Em seguida é necessário efetuar algumas configurações dos parâmetros do daemon (/etc/default/saslauthd):
Added:
>
>
 
diff --git a/default/saslauthd b/default/saslauthd
index a60eaa1..c40583d 100644
Line: 372 to 443
  # If it has the line "smtp inet n - n - - smtpd" then your Postfix is NOT # running in a chroot. -OPTIONS="-c -m /var/run/saslauthd"
Changed:
<
<
+OPTIONS="-c -m /var/run/saslauthd -O /etc/saslauthd.conf"
>
>
+OPTIONS="-c -m /var/run/saslauthd -O /etc/saslauthd.conf"
 

Deve-se, ainda, criar arquivo de configuração do SASLAUTHD em /etc/saslauthd.conf (atente-se para configurar a senha do usuário cafernp-sync-rw conforme SUSSEG):
Added:
>
>
 
ldap_servers: ldap://ldap-ad.intranet.foobar.br
ldap_search_base: dc=mydomain,dc=foobar,dc=br
Line: 389 to 460
  ldap_use_sasl: no ldap_start_tls: no ldap_version: 3
Changed:
<
<
ldap_auth_method: bind
>
>
ldap_auth_method: bind
 

É preciso agora fazer a ligação entre o daemon do OpenLDAP e do SASL. Para isso utilizaremos um socket do tipo MUTEX, configurado da seguinte maneira:
Added:
>
>
 
cat > /usr/lib/sasl2/slapd.conf <<EOF
pwcheck_method: saslauthd
Line: 397 to 468
  cat > /usr/lib/sasl2/slapd.conf <<EOF pwcheck_method: saslauthd saslauthd_path: /var/run/saslauthd/mux
Changed:
<
<
EOF
>
>
EOF
 

É precisso adicionar o usuário do OpenLDAP ao grupo do SASL:
Added:
>
>
 
Changed:
<
<
adduser openldap sasl
>
>
adduser openldap sasl
 

Habilitar os parametros de autenticação SASL no OpenLDAP:
Added:
>
>
 
diff --git a/ldap/slapd.conf b/ldap/slapd.conf
index c58060b..bb67edf 100644
Line: 421 to 492
  + ####################################################################### # Specific Backend Directives for hdb:
Changed:
<
<
# Backend specific directives apply to this backend until another
>
>
# Backend specific directives apply to this backend until another
 

Reiniciar o daemon do OpenLDAP e do SASL:
Added:
>
>
 
invoke-rc.d slapd restart 
Changed:
<
<
/etc/init.d/saslauthd restart
>
>
/etc/init.d/saslauthd restart
 

TODO: documentar tunning de performance, tamanho do cache, etc.
Line: 444 to 515
 
# cron for cleanup openldap logs
# m h dom mon dow user command
Changed:
<
<
0 0 * * * root find /var/lib/ldap -name 'log.*' -mtime +15 -delete
>
>
0 0 * * * root find /var/lib/ldap -name 'log.*' -mtime +15 -delete
 

Próximos passos

 
No permission to view System.WebBottomBarExample