25.3. Configuração do servidor com slapd.conf

O seu sistema instalado contém um arquivo de configuração completo para o seu servidor LDAP em /etc/openldap/slapd.conf. As únicas entradas estão descritas brevemente aqui e os ajustes necessários são explicados. Entradas com prefixo de hash (#) são inativas. Este caractere de comentário deve ser removido para ativá-las.

25.3.1. Diretivas globais em slapd.conf

Exemplo 25.2. slapd.conf: Incluir diretiva para esquemas

include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/rfc2307bis.schema
include         /etc/openldap/schema/yast.schema

A primeira diretiva em slapd.conf, mostrada no Exemplo 25.2, “slapd.conf: Incluir diretiva para esquemas”, specifica o esquema através do qual o diretório LDAP é organizado. A entrada core.schema é compulsória. Esquemas necessários adicionais estão anexados a esta diretiva. Informações podem ser encontradas na documentação do OpenLDAP incluída.

Exemplo 25.3. slapd.conf: pidfile e argsfile

pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args

Estes dois arquivos contêm o PID (ID de processo) e alguns dos argumentos com os quais o processo slapd é iniciado. Não há necessidade para modificações aqui.

Exemplo 25.4. slapd.conf: Controle de acesso

# Sample Access Control
#       Allow read access of root DSE
# Allow self write access
#       Allow authenticated users read access
#       Allow anonymous users to authenticate
# access to dn="" by * read
  access to * by self write
              by users read
              by anonymous auth
#
# if no access controls are present, the default is:
#       Allow read by all
#
# rootdn can always write!

O Exemplo 25.4, “slapd.conf: Controle de acesso” é o exemplo de slapd.conf que regula as permissões de acesso para o diretório LDAP no servidor. As configurações realizadas aqui na seção global de slapd.conf são válidas desde que nenhuma regra de acesso personalizada seja declarada na seção específica ao banco de dados. Estas devem sobrescrever as declarações globais. Conforme apresentado aqui, todos os usuários têm acesso de leitura ao diretório, mas somente o administrador (rootdn) pode gravar para este diretório. O regulamento de controle de acesso no LDAP é um processo altamente complexo. As dicas a seguir podem ajudar:

  • Toda regra de acesso tem a seguinte estrutura:

    acesso a <what> por <who> <access>
  • what é um marcador para o objeto ou atributo ao qual acesso é concedido. Ramificações de diretório individuais podem ser protegidas explicitamente com regras separadas. Também é possível processar regiões da árvore de diretórios com uma única regra usando expressões regulares. slapd avalia todas as regras na ordem em que elas estão listadas no arquivo de configuração. Mais regras gerais devem estar listadas após outras mais específicas — a primeira regra slapd considerada válida é avaliada e todas as entradas seguintes são ignoradas.

  • who determina a quem deve ser concedido acesso às áreas determinadas com what. Expressões regulares podem ser usadas. slapd novamente anula a avaliação de who após a primeira correspondência, por isso regras mais específicas devem ser listadas antes das mais gerais. As entradas mostradas na Tabela 25.2, “Grupos de usuários e suas concessões de acesso” são possíveis.

    Tabela 25.2. Grupos de usuários e suas concessões de acesso

    Tag

    Escopo

    *

    Todos os usuários sem exceção

    anônimos

    Usuários (“anônimos”) não autenticados

    usuários

    Usuários autenticados

    próprio

    Usuários conectados com o objeto de destino

    dn.regex=<regex>

    Todos os usuários que correspondem à expressão regular

  • acesso especifica o tipo de acesso. Use as opções listadas na Tabela 25.3, “Tipos de acesso”.

    Tabela 25.3. Tipos de acesso

    Tag

    Escopo do acesso

    nenhum

    Sem acesso

    autenticação

    Para entrar em contato com o servidor

    comparar

    Para objetos para acesso de comparação

    busca

    Para a utilização de filtros de busca

    ler

    Acesso de leitura

    gravar

    Acesso de gravação

    slapd compara o direito de acesso solicitado pelo cliente com os concedidos em slapd.conf. Acesso é concedido ao cliente se as regras permitirem um direito igual ou maior do que o solicitado. Se o cliente solicitar direitos maiores do que os declarados nas regras, o acesso é negado.

O Exemplo 25.5, “slapd.conf: Exemplo de controle de acesso” mostra um exemplo de um simples controle de acesso que pode ser desenvolvido arbitrariamente usando expressões regulares.

Exemplo 25.5. slapd.conf: Exemplo de controle de acesso

access to  dn.regex="ou=([^,]+),dc=suse,dc=de" 
by dn.regex="cn=administrator,ou=$1,dc=suse,dc=de" write  
by user read 
by * none

Esta regra declara que somente o seu respectivo administrador tem acesso de gravação a uma entrada ou individual. Todos os outros usuários autenticados têm acesso de leitura e o restante do mundo não tem acesso.

[Tip]Estabelecendo regras de acesso

Se não houver acesso a uma regra ou nenhuma correspondência por diretiva, o acesso é negado. Somente direitos de acesso explicitamente declarados são concedidos. Se nenhuma regra for declarada, o princípio padrão é o acesso de gravação para o administrador e o acesso de leitura para o restante do mundo.

Encontre informações detalhadas e uma configuração de exemplo para direitos de acesso LDAP na documentação online do pacote openldap2 instalado.

Fora a possibilidade de administrar permissões de acesso com o arquivo de configuração do servidor central (slapd.conf), não há informações de controle de acesso (ACI). A ACI permite o armazenamento das informações de acesso para objetos individuais na árvore LDAP. Este tipo de controle de acesso ainda não é comum e é considerado experimental pelos desenvolvedores. Consulte http://www.openldap.org/faq/data/cache/758.html para obter informações.

25.3.2. Diretivas específicas de bancos de dados em slapd.conf

Exemplo 25.6. slapd.conf: Diretivas específicas de bancos de dados

 
database bdb 
checkpoint      1024    5 
cachesize       10000 
suffix "dc=suse,dc=de" 
rootdn "cn=admin,dc=suse,dc=de" 
# Cleartext passwords, especially for the rootdn, should 
# be avoided.  Consulte slappasswd(8) e slapd.conf(5) para obter detalhes. 
# O uso de autenticação forte é encorajado. 
rootpw secret 
# O diretório de banco de dados DEVE existir antes da execução de slapd E 
# deve estar acessível somente pelas slapd/tools. Mode 700 recommended. directory /var/lib/ldap 
# Indices to maintain index   objectClass     eq 

O tipo de banco de dados, um banco de dados Berkeley neste caso, é determinado na primeira linha desta seção (consulte o Exemplo 25.6, “slapd.conf: Diretivas específicas de bancos de dados”). checkpoint determina a quantidade de dados (em kb) mantida no registro de transação antes que seja gravada no banco de dados real e o tempo (em minutos) entre as duas ações de gravação. cachesize define o número de objetos mantidos no cache do banco de dados. suffix determina por qual parte da árvore LDAP este servidor deve ser responsável. O rootdn seguinte determina quem possui direitos de administrador para este servidor. O usuário declarado aqui não precisa ter uma entrada LDAP ou existir como um usuário regular. A senha do administrador é definida com rootpw. Em vez de usar secret aqui, é possível inserir o hash da senha do administrador criado por slappasswd. A diretiva directory indica o diretório (no sistema de arquivos) onde os diretórios de bancos de dados estão armazenados no servidor. A última diretiva, index objectClass eq, resulta na manutenção de um índice de todas as classes de objetos. Atributos para os quais os usuários pesquisam com freqüência podem ser adicionados aqui de acordo com a experiência. Regras de acesso personalizado definidas aqui para o banco de dados são usadas em vez de regras de acesso global.

25.3.3. Iniciando e interrompendo os servidores

Depois que o servidor LDAP estiver totalmente configurado e todas as entradas desejadas tiverem sido realizadas de acordo com o padrão descrito na Seção 25.4, “Tratamento de dados no diretório LDAP”, inicie o servidor LDAP como root inserindo rcldap start. Para interromper o servidor manualmente, insira o comando rcldap stop. Solicite o status do servidor LDAP em execução com o rcldap status.

O editor de níveis de execução YaST, descrito na Seção 8.2.3, “Configurando serviços do sistema (runlevel) com o YaST”, pode ser usado para que o servidor seja iniciado e interrompido automaticamente na inicialização e na pausa do sistema. Também é possível criar os links correspondentes aos scripts de início e interrupção com o comando insserv de um prompt de comando, conforme descrito na Seção 8.2.2, “Scripts Init”.