• Aumentar tamanho da fonte
  • Tamanho da fonte padrão
  • Diminuir tamanho da fonte

Mão na massa OpenLDAP

maonamassa OpenLDAP Configurando um serviço de Diretórios

 

O objetivo deste artigo não é ser um tutorial. Apenas estou tornando disponível os arquivos utilizados durante o treinamento e um roteiro rápido do que é abordado no curso. Aproveite.

 

Instalando os pacotes necessários

A primeira etapa de nosso treinamento é instalar o servdor OpenLDAP e os pacotes complementares para o funcionamento do Diretório. A seguir você verá os passos necessários para a distribuição Debian, utilizada durante o treinamento, e para o Fedora/RedHat.

O servidor OpenLDAP é capaz de funcionar corretamente instalando apenas os pacotes do servidor e do client, contudo, para podermos administrá-lo corretamente devemos instalar alguns pacotes complementares.

Instalação em Debian

# apt-get install slapd ldap-utils db4.2-util

No Fedora/RedHat utilizamos o yum como comando de instalação:

# yum -y install openldap-servers openldap-clients db4-utils

 

Configuração do servidor slapd

Aqui você vê a configuração inicial do servidor OpenLDAP que, no Debian, fica armazenada em /etc/ldap/slapd.conf. No Fedora/RedHat você encontrará este arquivo na pasta/etc/openldap.

# Versão de Protocolo para consultas ao LDAP
allow bind_v2

# Schemas
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema

# Arquivos de controle dos processos
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args

# Módulos
# No Fedora/RedHat você deve comentar
# as duas linhas abaixo
modulepath /usr/lib/ldap
moduleload back_hdb

# Controle de acesso
# acesso à estrutura básica do Diretório
access to dn.exact=""
by * read

# Apenas o próprio usuário pode ver/alterar a senha
access to attrs=userPassword
by self write
by anonymous auth
by * none

# Libera consulta a todos os outros dados de nossa base
access to *
by * read

# Definição do nível de log
loglevel stats

# Base de dados
database hdb

# Estrutura do diretório e administrador
suffix "dc=empresa,dc=com,dc=br"
rootdn "cn=Manager,dc=empresa,dc=com,dc=br"
# A senha a seguir é tux e foi criada com o slappasswd
rootpw {SSHA}hAJl1PZmY41M94c7TgqQF6ocIGziKsYH

# Local de armazenamento dos dados
directory /var/lib/ldap

# índices de pesquisa
index objectClass eq
index cn,sn,mail eq,sub,approx
index uid eq,sub

 

Criando os arquivos ldif iniciais

O exemplo de estrutura apresentada a seguir que será usada em nosso Diretório segue o modelo DNS utilizando a identificação DC (domain component).

dc=empresa,dc=com,dc=br
|- ou=grupos
| |- cn=grupo1
| `- cn=grupo2
`- ou=usuarios
|- uid=claudia
`- uid=marcos

Para implementarmos este modelo, vamos criar o arquivo ldif apresentadoa seguir com toda nossa estrutura.

# arquivo empresa.ldif
# inicio da estrutura (DIT)
dn: dc=empresa,dc=com,dc=br
objectClass: top
objectClass: dcObject
objectClass: organization
o: Empresa Ltda
dc: empresa

#unidades
dn: ou=usuarios,dc=empresa,dc=com,dc=br
objectClass: top
objectClass: organizationalUnit
ou: usuarios

dn: ou=grupos,dc=empresa,dc=com,dc=br
objectClass: top
objectClass: organizationalUnit
ou: grupos

# usuarios
dn: uid=claudia,ou=usuarios,dc=empresa,dc=com,dc=br
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: claudia
cn: Claudia Tomie
sn: Tomie
mail: Este endereço de e-mail está protegido contra spambots. Você deve habilitar o JavaScript para visualizá-lo.
userPassword: {SSHA}hAJl1PZmY41M94c7TgqQF6ocIGziKsYH

dn: uid=marcos,ou=usuarios,dc=empresa,dc=com,dc=br
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: marcos
cn: Marcos Sungaila
sn: Sungaila
mail: Este endereço de e-mail está protegido contra spambots. Você deve habilitar o JavaScript para visualizá-lo.
userPassword: {SSHA}hAJl1PZmY41M94c7TgqQF6ocIGziKsYH

Agora os dados devem ser inseridos no Diretório. Vamos utilizar o comando ldapadd para isto:

# ldapadd -x -D cn=manager,dc=empresa,dc=com,dc=br -W -f empresa.ldif

O arquivo utilzado para inserir novos usuários para pesquisa pode ser baixado aqui.

 

Alterando dados de usuários

Para modificar os dados de usuários podemos criar os arquivos ldif somente com as informações a serem alteradas ou um arquivo completo com todos os dados existentes mais os dados novos. Os exercícios para modificar os dados da usuária Adriana e do usuário Glauco podem ser realizados com o ldif a seguir, sendo que vou marcar em negrito os dados que estão sendo moficados ou inseridos:

dn: uid=Adriana,ou=Usuarios,dc=empresa,dc=com,dc=br
uid: Adriana
cn: Adriana Ramos
sn: Ramos
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
description: Secretaria

dn: uid=Glauco,ou=Usuarios,dc=empresa,dc=com,dc=br
uid: Glauco
cn: Glauco Bernini
sn: Bernini
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
telephoneNumber: 2345-6789
mobile: 9876-5432

Aplique as mudanças com o comando ldapmodify como segue:

# ldapmodify -x -D cn=manager,dc=empresa,dc=com,dc=br -W -f mudancas.ldif

 

Alterando a quantidade de cache utilizado pelo OpenLDAP

O servidor OpenLDAP utiliza memória RAM como cache para acelerar o acesso às informações do Diretório. A quantidade de memória alocada como cache e alguns outros parâmetros poderm ser definidos em um arquivo chamado DB_CONFIG que fica na pasta /var/lib/ldap. Você pode criar este arquivo com o conteúdo a seguir:

# área de dados em memória (2Mb)
set_cachesize 0 2097152 0

# Cache para nomes de arquivos
set_lg_regionmax 1048576

# Define o tamanho máximo do log de transações
set_lg_max 10485760

# Cache do log de transações em memória
set_lg_bsize 2097152

 

Arquivos criados durante o treinamento

A apresentação utilizada durante o treinamento pode ser baixada aqui .

Durante o Mão na Massa criamos vários arquivos do tipo ldif e alteramos várias configurações. A seguir você tem todos os arquivos listados e pode baixá-los se quiser.

claudia.ldif - arquivo com os dados para a criação da usuária Cláudia no Diretório

common-account - arquivo de configuração do pam

common-auth - arquivo de configuração do pam

common-password - arquivo de configuração do pam

common-session - arquivo de configuração do pam

empresa.ldif - arquivo com os dados para a criação da estrutura inicial do Diretório (DIT)

ldap.conf.pag13 - configuração das ferramentas client do OpenLDAP

ldap.conf.pag36 - configuração das ferramentas client do OpenLDAP

marcos.ldif - arquivo com os dados para a criação do usuário Marcos no Diretório

modifica-adriana-glauco.ldif - ldif para alteração dos dados destes usuários

msungaila.ldif - dados para a criação de um usuário padrão posix no Diretório

nsswitch.conf - arquivo de configuração para pesquisa de informações pelo Linux

pesquisa.ldif - arquivo com usuários adicionais utilizados para os exercícios com o ldapsearch

rebuild.ldif - arquivo com toda a estrutura do Diretório para reconstrução da árvore

slapd.conf.pag6 - configuração do servidor

slapd.conf.pag7 - configuração do servidor

slapd.conf.pag21 - configuração do servidor

slapd.conf.pag24 - configuração do servidor

slapd.conf.pag35 - configuração do servidor

unidades.ldif - arquivos com os dados para a criação das OUs no Diretório

usuarios.ldif - arquivo com os dados para a criação de usuários no Diretório

 

Conclusão

Além destes tópicos, durante o treinamento Mão na Massa da Tempo Real Eventos abordamos ainda a autenticação dos usuários do Diretório diretamente no Linux e o uso de criptografia no servidor.

Até mais

Marcos Sungaila