Configurando um Servidor Ldap no Debian

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
Rolar para cima