Observações:
-
Iremos levar em consideração que você possui uma instalação “limpa” do S.O. Debian GNU/Linux.
-
Os serviços que estão sendo usandos na solução também devem estar devidamente configurados e em operação.
Instalando o Servidor LDAP
Antes de instalar o Ldap, precisamos ajustar o arquivo hosts.
root@debian:~# vi /etc/hosts 127.0.0.1 localhost.localdomain localhost 10.0.0.22 nome.dominio.com.br nome
Em seguida, vamos instalar os pacotes.
root@debian:~# aptitude install slapd ldap-utils Omitir a configuração do servidor OpenLDAP: <Não> Informe o nome do domínio DNS: dominio.com.br Informe o nome de sua organização: dominio.com.br Senha do admin: ********* Confirme a senha: ********* Permitir protocolo LDAPv2? <Não>
Em seguida
root@debian:~# aptitude install libnss-ldap libpam-ldap
Identificador de Recurso Uniforme (URI) do Servidor LDAP: ldap://localhost:389
O nome distinto ("distinguished name") da base de procura: dc=dominio,dc=com,dc=br
Versão LDAP a ser utilizada: 3
A base de dados LDAP requer login? <Não>
Privilégios especiais LDAP para o root? <Não>
Permitir a leitura/escrita no ficheiro de configuração apenas para o dono? <Não>
O nsswitch.conf não é gerido automaticamente. <OK>
Tornar a conta root local o administrador da base de dados. <Não>
A base de dados LDAP requer autenticação? <Não>
Criptografia local a ser utilizada na mudança de senhas. md5
Configurando o Servidor LDAP
Agora vamos configurar o servidor LDAP e habilitar o sistema operacional para realizar autenticação no mesmo. Verifique as seguintes linhas:
root@debian:~# vi /etc/ldap/slapd.conf
# Definindo classes de objetos
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/samba.schema
# Habilitando LOGs
loglevel 256
# Specificando base de dados a ser usada
database bdb
# Base DN
suffix "dc=dominio,dc=com,dc=br"
# Root DN
# rootdn "cn=admin,dc=dominio,dc=com,dc=br"
# Diretorio de armazenamento de dados
directory "/var/lib/ldap"
# Índices
index objectClass eq
# ACL's
access to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=dominio,dc=com,dc=br" write
by anonymous auth
by self write
by * none
access to dn.base="" by * read
access to *
by dn="cn=admin,dc=dominio,dc=com,dc=br" write
by * read
root@debian:~# vi /etc/ldap/ldap.conf BASE dc=dominio,dc=com,dc=br URI ldap://127.0.0.1:389
Não esquecendo de reiniciar o serviço.
root@debian:~# /etc/init.d/slapd stop root@debian:~# /etc/init.d/slapd stop
Configurando a PAM
E agora vamos habilitar a PAM para autenticar no LDAP, permitindo assim que o sistema operacional possa utilizar os usuários e grupos contidos no servidor.
root@debian:~# vi /etc/pam.d/common-account #account required pam_unix.so account sufficient pam_ldap.so account required pam_unix.so try_first_pass
root@debian:~# vi /etc/pam.d/common-auth #auth required pam_unix.so nullok_secure auth sufficient pam_ldap.so auth required pam_unix.so nullok_secure use_first_pass
root@debian:~# vi /etc/pam.d/common-password #password required pam_unix.so nullok obscure min=4 max=8 md5 password sufficient pam_ldap.so password required pam_unix.so nullok obscure min=4 max=8 md5 use_first_pass
root@debian:~# vi /etc/pam.d/common-session #Adicionar session optional pam_mkhomedir.so skel=/etc/skel umask=0027 [...]
root@debian:~# vi /etc/nsswitch.conf [...] passwd: compat ldap group: compat ldap shadow: compat ldap [...]
root@debian:~# vi /etc/pam_ldap.conf [...] base dc=dominio,dc=com,dc=br uri ldap://127.0.0.1 ldap_version 3 [...]
root@debian:~# vi /etc/libnss-ldap.conf [...] base dc=dominio,dc=com,dc=br uri ldap://127.0.0.1 ldap_version 3 rootbinddn cn=admin,dc=dominio,dc=com,dc=br [...]
root@debian:~# vi /etc/libnss-ldap.secret senha_de_admin_da_base_ldap
Instalando o phpLdapAdmin
Agora iremos realizar o download do utilitário phpLdapAdmin para que a administração do LDAP seja facilitada. O download de uma versão justada para melhor administração com templates em português pode ser obtida em http://downloads.fabriciovc.eti.br/ldap/phpldapadmin-1.1.0.5.tar.gz.
root@debian:/home/viaza132/www# wget -c http://downloads.fabriciovc.eti.br/ldap/phpldapadmin-1.1.0.5.tar.gz
Pacotes extras necessários:
-
apache2
-
php5
-
php5-ldap
root@debian:~# aptitude install <pacotes>
Realizado o download e instalado os pacotes do apache2 e do php5 necessários, descompacte o pacote do phpLdapAdmin na área de hospedagem (/home/viaza132/www). Lembre-se que essa aplicação precisa ser configurada.
root@debian:/home/viaza132/www# tar xzvf phpldapadmin-1.1.0.5.tar.gz root@debian:/home/viaza132/www# mv phpldapadmin-1.1.0.5 phpldapadmin root@debian:/home/viaza132/www# cd phpldapadmin/config root@debian:/home/viaza132/www/phpldapadmin/config# cp config.php.example config.php root@debian:/home/viaza132/www/phpldapadmin/config# vi config.php
Configure as seguintes linhas.
$ldapservers->SetValue($i,'server','name','DN LDAP Server');
$ldapservers->SetValue($i,'server','host','127.0.0.1');
$ldapservers->SetValue($i,'server','port','389');
$ldapservers->SetValue($i,'server','base',array('dc=dominio,dc=com,dc=br'));
$ldapservers->SetValue($i,'server','auth_type','session');
$ldapservers->SetValue($i,'login','dn','cn=admin,dc=dominio,dc=com,dc=br');
$ldapservers->SetValue($i,'server','sasl_auth',false);
$ldapservers->SetValue($i,'server','low_bandwidth',false);
$ldapservers->SetValue($i,'appearance','password_hash','md5');
$ldapservers->SetValue($i,'appearance','show_create',true);
$ldapservers->SetValue($i,'auto_number','enable',true);
$ldapservers->SetValue($i,'auto_number','mechanism','search');
$ldapservers->SetValue($i,'auto_number','min','1000');
$ldapservers->SetValue($i,'login','timeout',30);
Adicionando dados na base LDAP (com arquivos .ldif)
raiz.ldif
dn: dc=dominio,dc=com,dc=br dc: exemplo objectClass: domain objectClass: top
unidadeorganizacional.ldif
dn: ou=contatos,dc=dominio,dc=com,dc=br ou: contatos objectClass: organizationalUnit objectClass: top dn: ou=usuarios,dc=dominio,dc=com,dc=br ou: usuarios objectClass: organizationalUnit objectClass: top dn: ou=grupos,dc=dominio,dc=com,dc=br ou: grupos objectClass: organizationalUnit objectClass: top
usuarios.ldif
dn: uid=fabricio,ou=usuarios,dc=dominio,dc=com,dc=br
givenName: Fabricio
sn: Vaccari Constanski
cn: Fabricio Vaccari Constanski
uid: fabricio
userPassword: {MD5}F5dfrtvcmAMadsZZsjaasdsdspBQ==
uidNumber: 1000
gidNumber: 1000
homeDirectory: /home/usuarios/fabricio
loginShell: /bin/bash
objectClass: OpenLDAPperson
objectClass: posixAccount
objectClass: top
grupos.ldif
dn: cn=nome_do_grupo,ou=grupos,dc=dominio,dc=com,dc=br cn: nome_do_grupo gidNumber: 1000 objectClass: posixGroup objectClass: top
Comando de adição
root@debian:~# ldapadd -x -W -D "cn=admin,dc=dominio,dc=com,dc=br" -f arquivo.ldif