A configuração do
OpenLDAP é feita utilizando o arquivo
slapd.conf, geralmente localizado no diretório /etc/openldap/. O código a seguir será utilizado como configuração do servidor para este tutorial. É importante conservar a ordem das declarações.
Arquivo
/etc/openldap/slapd.conf:
# Definição dos Schemas
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
# Arquivos auxiliares do servidor
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
#Carga de um modulo dinâmico para utilizar banco de dados hdb
modulepath /usr/lib/openldap/openldap
moduleload back_hdb.so
#Permitir bind anônimo somente quando credenciais não são vazias.
allow bind_anon_cred
#Configurando política de acesso.
access to attrs=userPassword
by anonymous auth
by self write
by * none
access to attrs=gecos,description,loginShell
by self write
by * read
access to *
by * read
# Banco de Dados
database hdb
suffix "dc=ufra,dc=br"
rootdn "cn=Naza,dc=ufra,dc=br"
rootpw {SSHA}HAy9nsqh3O9vl3RKmQHNJxHta3wlXiXy
# Diretório contendo o conteúdo do banco de dados
directory /var/lib/openldap-data
Os schemas contém informações sobre o formato dos dados que serão armazenados no diretório.
include /etc/openldap/schema/core.schema
core.schema define os atributos e objetos básicos do LDAP versão 3, descritos nas RFCs 2251-2256.
include /etc/openldap/schema/cosine.schema
cosine.schema suporta as diretivas do diretório X.500, baseada na RFC 1274.
include /etc/openldap/schema/inetorgperson.schema
inetorgperson.schema normalmente é utilizado para armazenar informações sobre pessoas, definido na RFC 2798.
include /etc/openldap/schema/nis.schema
nis.schema define atributos e objetos necessários para usar LDAP em autenticação em rede de máquinas
Linux, descrito na RFC 2307.
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
O pidfile guarda a localização do arquivo com o pid do processo servidor, o argsfile a localização do arquivo com argumentos do servidor.
modulepath /usr/lib/openldap/openldap
moduleload back_hdb.so
O modulepath guarda o caminho para os módulos dinâmicos que serão utilizados, neste tutorial usaremos apenas o módulo para o banco de dados hdb.
allow bind_anon_cred
A diretiva allow com o argumento bind_anon_cred é usada para permitir bind anônimo somente quando credenciais não são vazias.
A política de acesso às informações armazenadas é definida com ACLs (Access Control List). As ACLs são processadas na ordem em que são declaradas. Mais informações sobre ACLs podem ser encontradas no manual slapd.access.
No nosso exemplo, o acesso anônimo ao atributo userPassword é permitido apenas com a finalidade de autenticação. Modificações no atributo userPassword são permitidas somente ao dono. Aos demais usuários, nenhuma permissão é garantida referente a esse atributo:
access to attrs=userPassword
by anonymous auth
by self write
by * none
É permitido apenas ao dono alterar os atributos gecos, description e loginShell. Aos demais usuários esses atributos podem apenas ser lidos:
access to attrs=gecos,description,loginShell
by self write
by * read
A todos os outros atributos o acesso é apenas para leitura par qualquer usuário:
access to *
by * read
Como dito anteriormente, o banco de dados utilizado é hdb, definido pelo parâmetro database.
O parâmetro suffix indica a base da árvore de diretórios. No nosso caso, dc=ufra,dc=br.
rootdn é o nome do administrador do serviço de diretórios. Neste caso, é o Naza (cn=Naza,dc=ufra,dc=br).
rootpwd é a senha do administrador. A senha utilizada é "queroEntrar", e está em forma de Hash.
directory é o lugar onde ficam armazenados os dados do diretório. Este diretório deve existir previamente e com permissões 0700 com ldap: ldap como dono e grupo.
# ls -l /var/lib/
drwx------ 2 ldap ldap 4096 Nov 14 15:19 openldap-data