você está aqui: Home  → Arquivo de Mensagens

Implantando autenticação centralizada e segura usando Openldap - ACLs e SSL (LDAPs)

Colaboração: Alexandro Silva

Data de Publicação: 03 de agosto de 2010

Com o servidor funcionando corretamente irei restringir os acessos pelas ACLs e adicionar criptografia (ldaps) como camada de segurança.

ACLs

Edite o arquivo /etc/ldap/slapd.conf restrigindo o acessos ao BD midificando as ACL como o exemplo abaixo:

  vim /etc/ldap/slapd.conf
  access to attrs=userPassword
        by anonymous auth
        by self write
        by * none
  access to dn.base="" by * read
  access to *
        by * read

Gerando a senha em SSHA

  slappasswd -h {SSHA}
  
  Informe a senha do **ADMIN** e confirme

Edite o arquivo /etc/ldap/slapd.conf

  vim /etc/ldap/slapd
  suffix          "dc=acme,dc=local"
  rootdn          "cn=admin,dc=acme,dc=local"
  rootpw          "{SSHA}irRG0yGfiDoBbKqX5rRTBzy+23J5rt+J"

Reincie o slapd

  invoke-rc.d slapd restart

LDAP com TLS/SSL (LDAPs)

Para habilitar o TLS/SSL no servidor execute os seguintes passos:

Crie e acesse o diretório ssl em /etc/ldap

  mkdir /etc/ldap/ssl
  
  cd ssl

Caso você não possua um certificado assinado por uma CA crie uma CA usando o comando

  /usr/lib/ssl/misc/CA.sh -newca
  CA certificate filename (or enter to create) **[ Pressine ENTER ]**
  Enter PEM pass phrase: **[ INFORME A SENHA ]**
  Verifying - Enter PEM pass phrase: **[ REPITA A SENHA ANTERIOR ]**
  Country Name (2 letter code) [AU]:**BR**
  State or Province Name (full name) [Some-State]:**Bahia**
  Locality Name (eg, city): **Salvador**
  Organization Name (eg, company) [Internet Widgits Pty Ltd]:**ACME**
  Organizational Unit Name (eg, section) :**IT**
  Common Name (eg, YOUR name) :**localhost**
  Email Address:**admin@acme.local**
  
  No campo "A challenge password: **[ Pressione ENTER ] **
  An optional company name: **[ Pressione ENTER ]**
  Enter pass phrase for ./demoCA/private/./cakey.pem: **[ Digite a senha definida no "Enter PEM pass phrase" ]**

Crie a chave:

  openssl req -newkey  rsa:1024  -nodes -keyout newreq.pem -out newreq.pem
  Country Name (2 letter code) [AU]:**BR**
  State or Province Name (full name) [Some-State]:**Bahia**
  Locality Name (eg, city):**Salvador**
  Organization Name (eg, company) [Internet Widgits Pty Ltd]:**ACME**
  Organizational Unit Name (eg, section):**IT**
  Common Name (eg, YOUR name):**localhost**
  Email Address:**admin@acme.local**
  A challenge password: **[ Pressione ENTER ]**
  An optional company name: **[ Pressione ENTER ]**

Assine a chave criada usando a CA.

  /usr/lib/ssl/misc/CA.sh -sign

Digite a senha da CA e responda todos os questionamentos como "y"

Copie o arquivo cacert.pem para o diretório /etc/ldap/ssl

  cp demoCA/cacert.pem /etc/ldap/ssl/

Altere o dono dos arquivo .pem

  chown openldap *.pem

Altere as permissões de acesso aos arquivos .pem

  chmod 600 *.pem

Adicione as seguintes linhas no arquivo /etc/ldap/slapd.conf:

  TLSCACertificateFile    /etc/ldap/ssl/cacert.pem
  TLSCertificateFile      /etc/ldap/ssl/newcert.pem
  TLSCertificateKeyFile   /etc/ldap/ssl/newreq.pem
  TLSVerifyClient never

Descomente e edite o arquivo /etc/default/slapd habilitando o ldaps

  vim /etc/default/slapd
  SLAPD_SERVICES="ldaps:///"

Edite o arquivo /etc/ldap/ldap.conf adicionando a seguinte linha:

  TLS_REQCERT never

Reinicie o slapd

  invoke-rc.d slapd restart

Testando

  ldapsearch -LL -H ldaps://localhost -b"dc=acme,dc=local" -x "(uid=alexos)"

Após a modificações apresentadas anteriormente nosso arquivo /etc/ldap/slapd.conf ficará como no exemplo abaixo:

Exemplo arquivo /etc/ldap/slapd.conf

  allow bind_v2
  
  include         /etc/ldap/schema/core.schema
  include         /etc/ldap/schema/cosine.schema
  include         /etc/ldap/schema/nis.schema
  include         /etc/ldap/schema/inetorgperson.schema
  include         /etc/ldap/schema/krb5-kdc.schema
  include         /etc/ldap/schema/qmailuser.schema
  
  pidfile         /var/run/slapd/slapd.pid
  
  TLSCACertificateFile    /etc/ldap/ssl/cacert.pem
  TLSCertificateFile      /etc/ldap/ssl/newcert.pem
  TLSCertificateKeyFile   /etc/ldap/ssl/newreq.pem
  TLSVerifyClient never
  
  argsfile        /var/run/slapd/slapd.args
  
  loglevel        none
  
  modulepath      /usr/lib/ldap
  moduleload      back_hdb
  
  sizelimit 500
  
  database        hdb
  
  suffix          "dc=acme,dc=local"
  rootdn          "cn=admin,dc=acme,dc=local"
  rootpw          "{SSHA}/v+HeJBQferYPfYFkqqa1TwIGmW2piFv"
  
  directory       "/var/lib/ldap"
  
  index objectClass,ou,cn,sn,uid,uidNumber,mail,mailAlternateAddress,mailForwardingAddress,memberUid eq
  
  lastmod         on
  
  access to attrs=userPassword
        by anonymous auth
        by self write
        by * none
  
  access to dn.base="" by * read
  
  access to *
        by * read

Referências:

Fonte: http://blog.alexos.com.br/?p=1901&lang=en



 

 

Veja a relação completa dos artigos de Alexandro Silva

Opinião dos Leitores

Flávio
03 Ago 2010, 15:34
Olá Alexandre,
Estou seguindo seu material, configurei o servidor ldap e instalaei o phpldapadmin também. Quando tento me conectar atravé do phpldapadmin, recebo o seguinte erro:

Erro:
Impossível iniciar TLS. Por favor verifique a configuração do servidor LDAP.

O apache 2 está configurando com SSL.

Teria alguma dica sobre isso?
Flávio
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script