Os integrantes da Cooperativa de Soluções Livres SOLIS têm se destacado pela quantidade de informações que compartilham com a comunidade brasileira do software livre. Hoje é a vez do Marcone Luis Theisen (marcone NOSPAM solis coop br), que enviou uma receita de bolo de como instalar um sistema openLDAP seguro, com SSL/TLS.
OpenLDAP seguro
por Marcone Luis Theisen (marcone NOSPAM solis coop br)
Objetivo
O objetivo deste texto é descrever de forma prática e simples de como instalar um sistema openLDAP com suporte a SSL/TLS. É necessário conhecimento básico de um sistema openLDAP e GNU/Linux em geral.
OpenSSL
Primeiramente é necessária a instalação da última versão pacote openSSL. No meu caso tenho instalado o openSSL-0.9.7d. Para saber a versão do pacote openSSL digite:
#ldconfig -v | grep ssl
OpenLDAP
O segundo passo é instalar o openLDAP com suporte a TLS, para isto no momento que que compilar o openLDAP lembre-se de colocar a opção --with-tls, para maiores informações de como instalar o openLDAP a partir dos fontes consulte o link www.ldap.org.br. A versão que estou utilizando é a 2.2.17, com backend BerkeleyDB em sua versão 4.2.52, com seus devidos Patch aplicados.
Criação do próprio certificado
O primeiro passo para gerar sua certificação é verificar no arquivo /etc/ssl/openssl.cnf o parâmetro "unique_subject", ele precisa estar como "no", se estiver comentado, simplesmente descomente-o. Este parâmetro serve para habilitar a criação de certificados de modo offline, sem precisar ter uma certificadora externa.
Em seguida, basta seguir os seguintes passos:
Crie um diretório para criação do certificado:
#mkdir /tmp/meuCertificado
Entre no diretório:
#cd /tmp/meuCertificado
Crie o certificado:
#/etc/ssl/misc/CA.sh -newca
A partir dai ele lhe perguntará várias informações sobre o certificado, abaixo um exemplo de como completar:
CA certificate filename (or enter to create)
Making CA certificate ...
Generating a 1024 bit RSA private key
...++++++
...............++++++
writing new private key to './demoCA/private/./cakey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
Country Name (2 letter code) [AU]:br
State or Province Name (full name) [Some-State]:Rio Grande do Sul
Locality Name (eg, city) []:Lajeado
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Solis - Cooperativa Solucoes Livres
Organizational Unit Name (eg, section) []:Solis
Common Name (eg, YOUR name) []:marcone
Lembrando que o "Common Name" precisa ser igual a saida do comando "hostname -f", ou seja, o hostname do servidor.
A seguir crie a requisição de certificado e a chave privada para o servidor. Complete com os mesmos dados que acabou de completar acima com o seguinte comando:
# openssl req -new -nodes -keyout newreq.pem -out newreq.pem
Generating a 1024 bit RSA private key
....................++++++
...............++++++
writing new private key to 'newreq.pem'
Country Name (2 letter code) [AU]:br
State or Province Name (full name) [Some-State]:Rio Grande do Sul
Locality Name (eg, city) []:Lajeado
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Solis - Cooperativa de Solucoes Livres
Organizational Unit Name (eg, section) []:Solis
Common Name (eg, YOUR name) []:marcone
Email Address []:marcone@solis.coop.br
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Assine o certificado:
/etc/ssl/misc/CA.sh -sign
Neste momento o sistema irá pedir a senha que você definiu lá em cima quando criou o certificado.
Após irá mostrar na tela vários dados sobre seu certificado.
Configuração do openLDAP
Ok, neste momento estamos com o certificado criado e assinado. Agora é hora de configurar o openLDAP para aceitar esta certificação.
Para isto vamos copiar os arquivos para seus devidos lugares e dar as permissões devidas.
#cd /tmp/meuCertificado
#cp demoCA/cacert.pem /usr/local/etc/openldap/cacert.pem
#cp newcert.pem /usr/local/etc/openldap/servercrt.pem
#cp newreq.pem /usr/local/etc/openldap/serverkey.pem
#chmod 600 /usr/local/etc/openldap/serverkey.pem
Edite o arquivo de configuração do openLDAP(slapd.conf) e inclua as seguintes linhas antes do parâmetro "database".
TLSCACertificateFile /usr/local/etc/openldap/cacert.pem
TLSCertificateFile /usr/local/etc/openldap/servercrt.pem
TLSCertificateKeyFile /usr/local/etc/openldap/serverkey.pem
Agora é o momento de rodar o daemon do openLDAP, então, digite na linha de comando:
#/usr/local/libexec/slapd -d2 -h "ldap:/// ldaps:///"
Observe que coloquei o parâmetro "-d2" para ativar alguns logs na tela. Para rodar o daemon em background sem verificação dos logs na tela basta tirar este parâmetro na linha de comando.
Bem, agora é hora de verificar se o sistema está escutando nas 2 portas.
Na porta 389, que é a porta padrão do openLDAP servirá para conectar via TLS e a porta 636 via SSL. A porta 389 também serve para conexão direta, sem algum protocolo de segurança. Geralmente nos aplicativos gráficos existe uma opção para ativar o protocolo TLS, por exemplo, o GQ (biot.com/gq/).
É necessário também incluir a seguinte linha no arquivo /usr/local/etc/openldap/ldap.conf:
TLS_CACERT /usr/local/etc/openldap/cacert.pem
Testes
Para verificar se as portas estão ouvindo, basta digitar o comando:
#netstat -a | grep LISTEN
Verifique logo no inicio das mensagens se aparece *:ldap LISTEN e *:ldaps LISTEN.
Se você chegou até aqui sem nenhum erro, é hora de testar o sistema, uma simples consulta com o comando ldapsearch serve para verificar se nossa conexão segura está correta. Então digite:
#ldapsearch -x -b "o=solis,c=br" uid=marcone -Z
A opção -Z que irá ativar a requisição ao protocolo TLS.
Neste momento seu servidor openLDAP atende a requisições em modo seguro SSL/TLS.
Este texto foi escrito por:
Marcone Luis Theisen
SOLIS - Cooperativa de Soluções Livres
O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.