Instalando um servidor OpenLDAP secundario

Leonardo Serra Maciel de Campos


            
          

Este documento é licenciado sobre a licença de Atribuição-Compartilhamento da Creative Commons. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-sa/2.0/ ou envie uma carta para Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Histórico de Revisões
Revisão 0.1 2004-10-08 11:14:36 -0300 Leonardo Serra Maciel de Campos
Revisão 0.2 2004-10-14 11:57:58 -0300 Leonardo Serra Maciel de Campos
Revisão 0.3 2004-10-27 11:56:43 -0300 Leonardo Serra Maciel de Campos
Revisão 0.4 2004-11-04 08:57:34 -0300 Leonardo Serra Maciel de Campos
Revisão 0.5 2004-11-05 16:46:21 -0300 Leonardo Serra Maciel de Campos
Revisão 0.6 2004-11-11 10:57:22 -0300 Leonardo Serra Maciel de Campos
Revisão 0.7 2004-12-07 12:04:22 -0300 Leonardo Serra Maciel de Campos

Resumo

Este documento visa ensinar como instalar e configurar um servidor OpenLDAP secundario.


Índice

1. Introdução
1.1. O que é LDAP?
1.2. O que é OpenLDAP?
1.3. Por que um servidor OpenLDAP secundario?
2. Ambiente
3. Instalação
4. Configuração
5. Recuperando a base
6. Comandos úteis
Bibliografia
Glossário

1. Introdução

1.1. O que é LDAP?

LDAP significa Lightweight Directory Access Protocol, ou seja, Protocolo de Leve Acesso a Diretórios. Como o nome sugere, é um protocolo leve para acessar serviços de diretório. O LDAP roda em cima do protocolo TCP/IP ou outras conexões de transferência de serviços.

1.2. O que é OpenLDAP?

O OpenLDAP é um esforço colaborativo da comunidade Open Source para desenvolver um sistema de aplicações LDAP. O fundador por este projeto é o americano Kurt Zeilenga. Hoje existem vários desenvolvedores engajados neste sistema que está se tornando um padrão universal.

1.3. Por que um servidor OpenLDAP secundario?

Este servidor OpenLDAP secundario terá uma copia de toda a arvore de dados do servidor OpenLDAP primario. Alem da copia ele tambem podera ser utilizado para fazer consultas. Pedidos de modificações ao servidor OpenLDAP secundario serão repassadas para o servidor OpenLDAP primario. Apos as modificações serem feitas no servidor OpenLDAP primario ele ira informar ao servidor OpenLDAP secundario das modificações. Desta maneira aumentamos a capacidade, a disponibilidade e a confiabilidade do serviço OpenLDAP.

2. Ambiente

Será presumido que o seu sistema Debian GNU/Linux e o aptitude estão corretamente configurados. Também estaremos acreditando que o servidor OpenLDAP primario está executando de forma correta.

Atenção

Todos os comandos deverão ser executados pelo usuário root, execeto quando informado!

A tabelo abaixo mostra as versões de cada logicial usado.

Tabela 1. Versão dos logiciais

Logicial Versão
OpenLDAP (slapd) 2.1.30-3

A tabelo abaixo mostra as principais características do ambiente onde foi feito esta documentação.

Tabela 2. Ambiente

Distribuição GNU/Linux Debian Sarge
Endereço do servidor OpenLDAP primario ldap.exemplo.com.br
Endereço do servidor OpenLDAP secundario sldap.exemplo.com.br
Nome do domínio exemplo.com.br
Sufixo da base do servidor OpenLDAP dc=exemplo,dc=com,dc=br
Usuário administrador do servidor OpenLDAP cn=admin,dc=exemplo,dc=com,dc=br
Senha do usuário administrador do servidor OpenLDAP asdf
Usuário administrador para replica do servidor OpenLDAP cn=replicator,dc=exemplo,dc=com,dc=br
Senha do usuário administrador para replica do servidor OpenLDAP qwer
Pasta da base do servidor OpenLDAP /var/lib/ldap

Nota

Usaremos palavras desta maneira para indicar substituição.

3. Instalação

  1. Execute o seguinte comando para instalar o servidor OpenLDAP:

    # aptitude install slapd ldap-utils db4.2-util

    Será instalado o pacote Debian para o OpenLDAP e ferramentas relacionadas. O DebConf ira fazer algumas perguntas, responda de acordo com a tabela abaixo.

    Tabela 3. DebConf

    Pacote Questão Resposta
    slapd Enter your DNS domain name exemplo.com.br
    slapd Enter the name of your organization exemplo.com.br
    slapd Admin password asdf
    slapd Verify password asdf
    slapd Allow LDAPv2 protocol No

4. Configuração

  1. As etapas abaixo devem ser executadas na maquina ldap.exemplo.com.br.

    • É necessário criptografar a senha do usuário cn=replicator,dc=exemplo,dc=com,dc=br. Para isto execute:

      # slappasswd -h {CRYPT}

      Será perguntada a senha, digite ela. Repita a senha para garantir de que ela foi digitada corretamente. Você recebera um resultado parecido com isto:

      {CRYPT}2jkPbZYuWCw
    • É necessário criar um objeto do tipo simpleSecurityObject na base do servidor OpenLDAP, que será o usuário utilizado para realizar a replica. Para isto crie um arquivo com o seguinte conteúdo e salve ele com o nome de simpleSecurityObject.ldif.

      dn:cn=replicator,dc=exemplo,dc=com,dc=br
      cn: replicator
      objectClass: simpleSecurityObject
      objectClass: organizationalRole
      userPassword: {crypt}SUMkenwzpcJkU
      description: LDAP replicator
      ou: Group
      

      Execute o seguinte comando para adicionar o conteúdo do arquivo simpleSecurityObject.ldif a base do servidor OpenLDAP:

      # ldapadd -x -h ldap.exemplo.com.br -D "cn=admin,dc=exemplo,dc=com,dc=br" -f simpleSecurityObject.ldif -W
    • Edite o arquivo /etc/ldap/slapd.conf.

      • É necessário colocar temporariamente o servidor OpenLDAP primario em modo de somente leitura, para isto acrescente ao fim do arquivo a seguinte linha:

        readonly on
      • Iremos configurar quem recebera as replicações, para isto abaixo da linha:

        directory       "/var/lib/ldap"

        Acrescente as seguintes linhas:

        replica host=sldap.exemplo.com.br:389
                binddn="cn=replicator,dc=exemplo,dc=com,dc=br"
                bindmethod=simple
                credentials=qwer
        
      • É necessário delegar ao usuário replicador acesso a base do servidor OpenLDAP. Para isto abaixo de cada linha:

        by dn="cn=admin,dc=exemplo,dc=com,dc=br" write

        Acrescente a seguinte linha:

        by dn="cn=replicator,dc=exemplo,dc=com,dc=br" write
    • É necessário reiniciar o servidor OpenLDAP para carregar as novas configurações. Para isto execute:

      # invoke-rc.d slapd restart
    • É necessário que o servidor OpenLDAP secundario tenha os mesmo dados que o servidor OpenLDAP primario, para isto iremos gerar uma copia da base do servidor OpenLDAP primario. Para isto execute:

      # slapcat -l /etc/ldap/copia.ldif
    • Copie o arquivo /etc/ldap/copia.ldif para a maquina sldap.exemplo.com.br. A sugestão é usar o scp para copiar o arquivo entre as maquinas, para isto é necessario que a maquina sldap.exemplo.com.br tenha um servidor de SSH habilitado, o que não é o escopo deste documento. Para isto execute:

      # scp /etc/ldap/copia.ldif sldap.exemplo.com.br:/etc/ldap/
    • Apague o arquivo /etc/ldap/copia.ldif para garantir que seus dados não serão comprometidos. Para isto execute:

      # rm /etc/ldap/copia.ldif
    • É necessário que o servidor OpenLDAP secundario tenha praticamente o mesmo arquivo de configuração que o servidor OpenLDAP primario, exceto algumas configurações. Copie o arquivo /etc/ldap/slapd.conf para a maquina sldap.exemplo.com.br. A sugestão é usar o scp para copiar o arquivo entre as maquinas, para isto é necessario que a maquina sldap.exemplo.com.br tenha um servidor de SSH, o que não é o escopo deste documento. Para isto execute:

      # scp /etc/ldap/slapd.conf sldap.exemplo.com.br:/etc/ldap/
  2. As etapas abaixo devem ser executadas na maquina sldap.exemplo.com.br.

    • É necessário parar o servidor OpenLDAP. Para isto execute:

      # invoke-rc.d slapd stop
    • Edite o arquivo /etc/ldap/slapd.conf.

      • Apague as seguintes linhas que configuram quem recebera as replicações:

        replica host=sldap.exemplo.com.br:389
                binddn="cn=replicator,dc=exemplo,dc=com,dc=br"
                bindmethod=simple
                credentials=qwer
        
      • Iremos configurar o comportamento quando chegar um pedido de modificação, para isto abaixo da linha:

        directory       "/var/lib/ldap"

        Acrescente as seguintes linhas:

        updatedn "cn=replicator,dc=exemplo,dc=com,dc=br"
        updateref ldap://ldap.exemplo.com.br
        
    • É necessário limpar a base do OpenLDAP, para isto execute:.

      # rm -rf /var/lib/ldap/
      # mkdir /var/lib/ldap/
      
    • É necessário carregar a copia da base do servidor OpenLDAP primario. Para isto execute:.

      # slapadd -l /etc/ldap/copia.ldif
    • Apague o arquivo /etc/ldap/copia.ldif para garantir que seus dados não serão comprometidos. Para isto execute:

      # rm /etc/ldap/copia.ldif
    • É necessário iniciar o servidor OpenLDAP. Para isto execute:

      # invoke-rc.d slapd start
  3. As etapas abaixo devem ser executadas na maquina ldap.exemplo.com.br.

    • Edite o arquivo /etc/ldap/slapd.conf. É necessário retirar o servidor OpenLDAP do modo de somente leitura, para isto apague a seguinte linha:

      readonly on
    • É necessário reiniciar o servidor OpenLDAP para carregar a nova configuração. Para isto execute:

      # invoke-rc.d slapd restart

5. Recuperando a base

Pode acontecer da base do servidor OpenLDAP corromper, quando isto acontecer execute:

  1. Parar o servidor OpenLDAP:

    # invoke-rc.d slapd stop
  2. Entrar na pasta da base do servidor OpenLDAP:

    # cd /var/lib/ldap
  3. Recuperando a base:

    # db4.2_recover
  4. Iniciar o servidor OpenLDAP:

    # invoke-rc.d slapd start

6. Comandos úteis

  • Para reiniciar o servidor OpenLDAP execute:

    # invoke-rc.d slapd restart
  • Para parar o servidor OpenLDAP execute:

    # invoke-rc.d slapd stop
  • Para iniciar o servidor OpenLDAP execute:

    # invoke-rc.d slapd start
  • Para criar uma copia de segurança da base do servidor OpenLDAP execute:

    # slapcat -l copia.ldif

    Atenção

    A execução deste comando com o servidor OpenLDAP sendo executado pode causar inconsistência da base, portanto pare o servidor OpenLDAP antes de executar este comando!

  • Para restaurar uma copia de segurança da base do servidor OpenLDAP execute:

    # slapadd -l copia.ldif

    Atenção

    A execução deste comando com o servidor OpenLDAP sendo executado pode causar inconsistência da base, portanto pare o servidor OpenLDAP antes de executar este comando!

    Atenção

    Após restaurar uma copia de segurança, não esqueça de reindexar a base do servidor OpenLDAP!

  • Para reindexar a base do servidor OpenLDAP execute:

    # slapindex

    Atenção

    A execução deste comando com o servidor OpenLDAP sendo executado pode causar inconsistência da base, portanto pare o servidor OpenLDAP antes de executar este comando!

  • Para recuperar a base do servidor OpenLDAP, dentro da pasta /var/lib/ldap execute:

    # db4.2_recover

    Atenção

    A execução deste comando com o servidor OpenLDAP sendo executado pode causar inconsistência da base, portanto pare o servidor OpenLDAP antes de executar este comando!

Bibliografia

Os seguintes sítios foram usados como base para a criação desta documentação

Projeto OpenLDAP. http://www.openldap.org .

Projeto LDAP Brasil. http://www.ldap.org.br .

Replicação e escalabilidade. http://gtdir.inf.puc-rio.br/replicacao.htm .

Manual de administração do OpenLDAP. http://www.openldap.org/doc/admin22/ .

Monografia sobre LDAP. http://www.ldap.liceu.com.br/index.html .

Glossário

Debian GNU/Linux

O Debian é um sistema operacional (SO) livre para seu computador. Um sistema operacional é um conjunto de programas básicos e utilitários que fazem seu computador funcionar. O Debian usa o kernel (núcleo de um sistema operacional), Linux, mas a maior parte das ferramentas do SO vêm do projeto GNU; daí o nome GNU/Linux.

Logicial

Conjunto de instruções lógicas. Na informática designa um conjunto de instruções lógicas e suas dependências, também conhecido como programa ou sistema de computador.

Esta palavra é pouco usada no Brasil, onde se usa muito a expressão "Software".

Origem: Wikipédia, a enciclopédia livre.