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.