alexmontoanelli

a little fun!

Autenticação centralizada com Ldap, usando Postfix, Dovecot e Samba

Olá.

Vou postar aqui uma série de 5 artigos mostrando como integrar os serviços de email (Postfix, Dovecot), e o servidor de arquivos Samba, para usarem a mesma base de autenticação, no caso com Openldap.

Toda a brincadeira foi realizada em um FreeBSD 6.3 -p3, mais pode ser implantada em qualquer Linux sem problemas.

Parte 1 : Preparando o Openldap.

No FreeBSD, tento o ports instalado, pasta fazer o seguinte:

cd /usr/ports/net/openldap24-server
make
make install

As seguintes opções foram usadas:

SASL
TCP_WRAPPERS
BDB
ACCESSLOG
LASTMOD
SEQMOD
SYNCPROV
DYNAMIC_BACKENDS

Após isso, iremos instalar o nss_ldap, usado para integrar os usuários que serão cadastrados no openldap, ao sistema.

cd /usr/ports/net/nss_ldap/
make
make install

Agora vamos configurar nosso ldap.conf e slapd.conf para colocar o open-ldap no ar.

Vamos editar o arquivo /usr/local/etc/ldap.conf e adicionar a seguinte no arquivo

BASE    dc=empresa,dc=com,dc=br

Feito isso partimos para a configuração do slapd.conf, esse é o arquivo responsável pelo daemon do openldap.

Seguem as alterações necessárias:

include         /usr/local/etc/openldap/schema/core.schema
include         /usr/local/etc/openldap/schema/cosine.schema
include         /usr/local/etc/openldap/schema/inetorgperson.schema
include         /usr/local/etc/openldap/schema/misc.schema
include         /usr/local/etc/openldap/schema/nis.schema

access to dn.exact=""
        by * read

access to attrs=userPassword,sambaLMPassword,sambaNTPassword
        by anonymous auth
        by self write
        by * none

access to attrs=shadowLastChange
        by self write
        by * none

access to *
        by read

loglevel 256

#######################################################################
# BDB database definitions
#######################################################################

database        bdb
suffix          "dc=empresa,dc=com,dc=br"
rootdn          "cn=Manager,dc=empresa,dc=com,dc=br"
rootpw          {SSHA}D9t3cIySlQg2ugQYeSD5bkB+ZqWPaasx
mode    0700
directory       /var/db/openldap-data
# Indices to maintain
index   objectClass     eq
index   cn,uid,sn       eq
index   gidNumber       eq
index   mail,givenName,mailAlternateAddress,displayName eq,pres,sub
index   default eq

A senha no formato SSHA é obtida com o comando

slappasswd  -s mInhaSenh@Secr37A

Feito isso, vamos inserir a base do nosso banco, isso tudo em modo offline ainda.
Crie um arquivo com o seguinte conteúdo:

dn: dc=empresa,dc=com,dc=br
dc: empresa
objectClass: top
objectClass: domain

Agora vamos inserir esse registro na base:

slapadd -l MEU_ARQUIVO_TEMPORARIO -b 'dc=empreasa,dc=com,dc=br'

Feito isso, nosso banco pode ser posto no ar.
Adicione as seguintes flags ao seu arquivo /etc/rc.conf

slapd_enable="YES"
slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://127.0.0.1/"'
slapd_sockets="/var/run/openldap/ldapi"

Estas flags dizem para ativar o slapd no boot do bsd,  configura ele para ouvir em modo não ssl, em locallhost, e cria um unixsocket em /var. Abordagem com ssl será feita em outra etapa.

Agora vamos startar no OpenLdap

/usr/local/etc/rc.d/slapd start

Se tudo der certo, com um  simples ‘netstat -ln| egrep “\.389″‘ você verá uma saída semelhante a esta, informado que o slapd esta ouvindo na sua porta padrão:

[root@propague /root]# netstat -ln| egrep "\.389"
tcp4       0      0  127.0.0.1.389          127.0.0.1.63586        ESTABLISHED
tcp4       0      0  127.0.0.1.63586        127.0.0.1.389          ESTABLISHED
tcp4       0      0  127.0.0.1.389          127.0.0.1.50995        ESTABLISHED
tcp4       0      0  127.0.0.1.50995        127.0.0.1.389          ESTABLISHED
tcp4       0      0  127.0.0.1.389          127.0.0.1.57821        ESTABLISHED
tcp4       0      0  127.0.0.1.57821        127.0.0.1.389          ESTABLISHED
tcp4       0      0  127.0.0.1.389          127.0.0.1.61773        ESTABLISHED
tcp4       0      0  127.0.0.1.61773        127.0.0.1.389          ESTABLISHED

Para confirmar, execute:

ldapsearch -x

Deverá ser retornado a raiz de seu diretório informando que o mesmo foi criado com sucesso.
Caso você não consiga por seu ldap para rodar, tente rodar ele como root e modo debug.

/usr/local/libexec/slapd -d 256

Na maioria das vezes o erro é causado por permissões inválidas no diretório onde o ldap guarda seus arquivos.
Se for este o seu problema, você pode corrigir com o seguinte comando, e em seguida subir o daemon novamente

chow -R ldap:ldap /var/db/openldap-db
chmod -R 600 /var/db/openldap-db

Por hoje é isso, no próximo capitulo vamos inserir alguns usuários na base, e fazer o sistema enxergar eles, usando o nss, e editando o nsswitch.

Abraços e até mais.

August 7th, 2008 by alexm