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:[email protected]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:[email protected]
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.schemapidfile /var/run/slapd/slapd.pid
TLSCACertificateFile /etc/ldap/ssl/cacert.pem
TLSCertificateFile /etc/ldap/ssl/newcert.pem
TLSCertificateKeyFile /etc/ldap/ssl/newreq.pem
TLSVerifyClient neverargsfile /var/run/slapd/slapd.args
loglevel none
modulepath /usr/lib/ldap
moduleload back_hdbsizelimit 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 * noneaccess to dn.base=”” by * read
access to *
by * read
Referências: