terça-feira, 18 de agosto de 2009

Instalação Openldap com TLS no Slackware

Instalação OpenLdap


Faça o download da ultima release do software direto na pagina oficial (openldap.org).

Na edição deste tutorial estou usando a versão 2.4.17 segue o link direto para dwnload:

#wget ftp://ftp.openldap.org/pub/openldap/openldap-release/openldap-2.4.17.tgz

Após o download vamos descompactar o pacote:

#tar -xzvf openldap-2.4.17.tgz

Entre na pasta

#cd openldap-2.4.17/

Siga a sequencia dentro da pasta openldap-2.4.17/ :

#export CPPFLAGS="-I/usr/include/db4"

#./configure -with-cyrus-sasl=no -enable-ldbm -enable-crypt -enable-lmpasswd -enable-cleartext -enable-wrappers -enable-slurpd -prefix=/usr -sysconfdir=/etc

-enable-aci -localstatedir=/var -sbindir=/usr/sbin -libdir=/usr/lib -libexecdir=/usr/local/libexec

#make depend

#make

Após o passo acima crie uma pasta no diretório /tmp com o nome de package:

#mkdir /tmp/package

Dentro da pasta openldap-2.4.17 siga os passos abaixo:

#make DESTDIR:/tmp/package install

#makepkg -l y -c n /tmp/openldap-2.4.17-i386-1.tgz

#installpkg /tmp/openldap-2.4.17-i386-1.tgz

Após os passos acima no diretório /etc/openldap/ verifique com o comando “ls”, se estiver igual a figura abaixo esta compilado corretamente:


Instalando Certificado Openssl para Autenticação TLS no OpenLdap


Gerando o certificado no Servidor:

O script CA.pl dentro do diretório /etc/openssl/misc/CA.pl instalado como parte da instalação do OpenSSl , fornece uma boa embalagem em volta da ferramenta OpenSSl e seus argumentos de linha de comando.

O script CA.pl simplifica a criação de certificados para servidores.

Na criação de um novo certificado, utilize a opção de linha de comando -newcert e responda as perguntas a medida que forem solicitadas.

#/etc/ssl/misc/CA.pl -newcert

Abaixo exemplo de configuração:

Esse comando cria um arquivo chamado newcert.pem, que contém um certificado com assinatura própria, e um arquivo chamado newkey.pem que contém uma chave privada protegida por senha.

Agora vamos renomear o arquivo “newcert.pem” para “slapd-cert.pem”

#mv newcert.pem slapd-cert.pem

Depois renomear o arquivo “newkey.pem” para “slapd-key.pem”

#mv newkey.pem slapd-key.pem

Agora no diretório /etc vamos criar o subdiretório local:

#mkdir /etc/local

Dentro do diretório /etc/local vamos criar o subdiretório “certs” onde vai ficar armazenado os nossos certificados:

#mkdir/etc/local/certs

E vamos mover os arquivos slapd-key.pem e slapd-cert.pem para o diretório /etc/local:

#mv *.pem /etc/local/certs

Feito isto já temos os arquivos necessários para o funcionamento do OpenLDAP com autenticação TLS.


Download do script para start e stop do serviço Slapd.

Segue o link de download do script para start/stop do slapd.

http://pastebin.com/f2fa99a4e

Salve como rc.slapd e mova para o diretório /etc/rc.d e de permissão de excussão chmod +x rc.slapd.


Configuração do Servidor OpenLDAP no Slackware.


No diretório /etc/openldap/ estão os arquivos necessários para configuração do servidor OpenLDAP:

Agora vamos criar uma senha criptografada para acesso ao banco BDB.

#slappasswd -s “senha” >> /etc/openldap/slapd.conf

Apendamos a saída do comando slappasswd no final do arquivo slapd.conf para facilitar a inclusão da senha no arquivo.

Imagine que definimos uma unidade organizacional (ou) chamada "americanet.local", é necessário criarmos um diretório dentro do /var/db/, com o mesmo nome e com a permissão 0700.

#mkdir /var/db/americanet.local && chmod 0700 /var/americanet.local

Abaixo segue um exemplo de arquivo slapd.conf:

#vim /etc/openldap/slapd.conf


###########################################

#etc/openldap/slapd.conf

## Sessão Global

## Inclua os esquemas exigidos

include /etc/openldap/schema/core.schema

include /etc/openldap/schema/cosine.schema

include /etc/openldap/schema/inetorgperson.schema

## Parâmetros de login adicionados

loglevel 296

pidfile /var/run/slapd.pid

argsfile /var/run/slapd.args

## Opção TLS para o slapd

TLSCipherSuite HIGH

TLSCertificateFile /etc/local/slapd-cert.pem

TLSCertificateKeyFile /etc/local/slapd-key.pem

## Sessão de banco de dados omitida

## Defina o inicio do Banco de dados

database bdb

## Defina o sufixo da raiz que você serve

suffix "dc=americanet,dc=local"

## Defina uma raiz DN com privilégios de superusuário. Este é o HASH MD5

## definido pela base 64 de 'secret'

rootdn "cn=Manager,dc=americanet,dc=local"

## Defina a senha utilizada como rootdn (slappasswd)

rootpw {SSHA} ==>senha gerada pelo slappasswd <==

## Diretório contendo os arquivos do banco de dados

directory /var/db/americanet.local

## Os arquivos devem ser criados GI **somente** para o proprietário

mode 0600

## Índices a serem mantidos

index objectClass eq

index cn,sn,mail pres, eq

index departmentNumber eq

## Parâmetros de configuração db; cache 2000 entadas para a memoria

cachesize 2000

# DB_CONFIG Parâmetros adicionais para SleepyCat Berkeley DB

dbconfig set_cachesize 0 10485760 0

dbconfig set_lg_regionmax 262144

dbconfig set_lg_bsize 2097152

###########################################

Após o arquivo slapd.conf configurado vamos testar o funcionamento do serviço:

#/etc/rc.d/rc.slapd start

Vai ser solicitada a senha definida anteriormente no Certificado.

Após a senha digite “ps waux | grep "slapd"

A saida deverá ser assim:

root@flai:~#ps waux | grep "slapd"

root 4869 0.0 1.1 2176 780 tty1 R+ 20:56 0:00 grep slapd

root 18860 0.0 1.1 46384 11492 ? Ssl 20:31 0:00 /usr/local/libexec/slapd -f /etc/openldap/slapd.conf

Informações podem ser importados e exportados para um diretório LDAP utilizando o serviço LDAP Data Interchange Format (LDIF), conforme definido na RFC2849.

Um arquivo LDIF especifica o conteúdo de uma entrada de diretório em um formato texto legível humano, o que permite rápida manipulação de um arquivo de reimportação semelhantes entradas no diretório.

Agora que o servidor LDAP foi configurado e está funcionando, podemos realizar uma simples pesquisa de nomear o contexto para ver o nosso diretório informações

antes de começar a importar nossos cadastros.

O "namingContexts" deverá ser semelhante ao exemplo a seguir.

#ldapsearch -x -h americanet.local

O seguinte arquivo LDIF irá criar a estrutura hierárquica do serviço de diretório que será utilizado para o nosso livro de endereços.

A primeira é que a entrada do diretório base e a segunda é para a entrada do Manager (administrador) da conta.

As últimas duas entradas são as duas unidades organizacionais e as entradas do livro de endereços.


# vi /etc/openldap/addressbook.ldif

#############################################

dn: dc=americanet,dc=local

objectclass: dcObject

objectclass: organization

o: Americanet

dc: americanet

dn: cn=Manager,dc=americanet,dc=local

objectclass: organizationalRole

cn: Manager

dn: ou=users,dc=americanet,dc=local

ou: users

objectClass: top

objectClass: organizationalUnit

dn: ou=addressbook,dc=americanet,dc=local

ou: addressbook

objectClass: top

objectClass: organizationalUnit

###########################################

Agora vamos adicionar nosso arquivo addressbook.ldif com o comando:

#ldapadd -x -h americanet.local -D 'cn=Manager,dc=americanet,dc=local' -W -f /etc/openldap/addressbook.ldif

Abaixo segue a figura de exemplo da entrada com sucesso:

A seguinte pesquisa LDAP está solicitando uma listagem de todas as entradas a partir da base "dc=americanet,dc=local".


#ldapsearch -x -h americanet.local -b 'dc=americanet,dc=local' '(objectclass=*)'


Isso deve retornar todas as entradas adicionadas na etapa anterior.

#americanet.local

dn: dc=americanet,dc=local

objectClass: top

objectClass: dcObject

objectClass: organization

o: Americanet Local

dc: america

# Manager, americanet.local

dn: cn=Manager,dc=americanet,dc=local

objectClass: organizationalRole

cn: Manager

# users, americanet.local

dn: ou=users,dc=americanet,dc=local

ou: users

objectClass: top

objectClass: organizationalUnit

# addressbook, americanet.local

dn: ou=addressbook,dc=americanet,dc=local

ou: addressbook

objectClass: top

objectClass: organizationalUnit

###########################################

Agora que nós definimos e importamos nosso diretório, somos capazes de criar usuários para preencher o addressbook.

O seguinte é um exemplo simples de LDIF de contato.

A primeira linha (dn:) designa que no diretório sobre a entrada pertencerá ao seu importado, este deverá ser alterado para se adequar às suas necessidades. Crie um arquivo chamado users.ldif:

Adicione a entrada com a seguinte sequencia:

#ldapadd -x -h americanet.local -D 'cn=Manager,dc=americanet,dc=local' -W -f /etc/openldap/users.ldif

Com o seguinte comando você terá o resultado:

#ldapsearch -x -h americanet.local -b 'dc=americanet,dc=local' '(objectclass=*)'

Para finalizarmos vamos configurar por último o arquivo /etc/openldap/ldap.conf (para clientes):

#vim /etc/openldap/ldap.conf

################################

URI ldaps://americanet.local:636

BASE dc=americanet,dc=local

TLS_REQCERT allow

################################

Agora é so configurar para seu cliente de e-mail.

Artigo versão 0.2 criado por

Thiago dos Santos Laurito

sLACKuSER


Nenhum comentário:

Postar um comentário

Arquivo do blog