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