By:Cristiano Bosenbecker Hellwig
OpenLDAP é um software livre que implementa o protocolo LDAP. Ele é usado para centralizar informações de forma hierárquica, por exemplo, centralizar senhas de usuários de diversos servidores em uma única base.
Também é usado para centralizar aplicativos de servidores como (proxy, samba, ftp, emails, lista de endereços), entre outros.
O LDAP permite a centralização de informações sobre usuários, senhas, diretórios home etc, em um único lugar na rede.
LDAP – Protocolo Leve de Acesso a Diretórios (tuttle 2003). Afirma que o LDAP é um padrão aberto capaz de facilitar, de forma flexível, o compartilhamento, a manutenção e o gerenciamento de grandes volumes de informações, definindo um método-padrão de acesso e atualização de informações dentro de um diretório.
O que é um diretório?
Diretório literalmente significa "algo usado para indicar direções", ou seja, algo que indica um caminho para se chegar àquilo que se procura. Exemplo disso: a lista telefônica, que você utiliza para pegar o endereço, telefone e tudo mais, caso queira comprar um lanche ou algo do tipo. Qualquer aplicação que tiver suporte ao protocolo LDAP poderá se conectar a sua base e obter as informações necessárias. A procura do LDAP funciona entrando na raiz e vai percorrendo os nós filhos até achar a informação desejada, de forma organizada, orientada a objetos. Não se usa mais a árvore de diretórios do estilo X.500, é usado agora estilo DNS.
O objetivo dessa documentação é a integração do openldap com banco de dados mysql, ao invés de usar o berkeleyDB.No caso é muito usado, quando queremos fazer o openldap se adequar em alguma aplicação proprietária ou software livre, que já tenha sua base de usuários e senhas cadastradas do banco de dado mysql.
Compilação usando debian5 em uma máquina virtual, 256 de RAM , 10 GB HD.
Ambiente de teste – preparação
Vamos compilar o openldap com suporte ao Berkeley DB, logs (Syslog) , SQL. Uma partição do hd, reservada apenas para o ponto de montagem /opt , onde ficará todos os aplicativos compilados. Se logue como root no sistema linux, e agora mão na massa !
# cd /usr/src
Baixando o código-fonte dos aplicativos. Instalando os softwares necessários para compilação dos código-fontes.
# apt-get install g++ make
Bibliotecas necessárias para o openldap
# apt-get install autotools-dev libltdl3 libltdl3-dev libtool
Berkeley DB ultima versão estável
# wget http://ftp.momo-i.org/pub/other/db-4.7.25.tar.gz
Openldap ultima versão estável
# wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.16.tgz
Além da compilação do openldap com suporte sql, é preciso compilar o ODBC e instalar o driver pré-compilado do mysql (libmyodbc) por apt-get.
# wget http://www.iodbc.org/downloads/iODBC/libiodbc-3.52.6.tar.gz
# apt-get install libmyodbc
MySQL 5.0 ( Banco de Dados )
# apt-get install mysql-server-5.0
Configurando código-fonte e instalando BerkelyDB e OpenLDAP
Vamos agora na parte de configuração do código-fonte e instalação aos respectivos caminhos corretos.
1) Configurando e compilando código fonte do Berkerley DB (Base de Dados da Berkerley).
Entrando no diretório padrão, onde serão feitas as compilações e configurações.
# cd /usr/src/
Descompactando o código fonte do BerkeleyDB
# tar zxvf db-4.7.25.tar.gz
Entrando no diretório descompactado.
# cd db-4.7.25/build_unix
Configurando o código fonte do BerkeleyDB
# ../dist/configure –prefix=/opt/db4725
Compilando o código fonte e instalando o aplicativo no seguinte diretório /opt/db4725
# make && make install
2) Configurando e compilando código fonte do ODBC .
Entrando no diretório padrão, onde serão feitas as compilações e configurações.
# cd /usr/src/
Descompactando o código fonte do libiodbc.
# tar zxvf libiodbc-3.52.6.tar.gz
Entrando no diretório descompactado.
# cd libiodbc-3.52.6
Configurando o código fonte do libiodbc
# ./configure –prefix=/opt/odbc –with-pthreads
Compilando o código fonte e instalando o aplicativo no seguinte diretório /opt/odbc
# make && make install
3) Configurando e compilando código fonte do Openldap com:
Suporte a criptografia (crypt , plaintext).
Suporte ao Banco de Dados ( bdb , hdb,sql(ODBC, para suporte a outros banco de dados).
Suporte a Réplica.
Suporte a Sistema de Logs (Syslog).
Entrando no diretório padrão, onde serão feitas as compilações e configurações.
# cd /usr/src/
Descompactando o código fonte do openldap
# tar zxvf openldap-2.4.16.tgz
Entrando no diretório descompactado.
# cd /usr/src/openldap-2.4.16
Exportando as variáveis de ambiente necessárias para ter uma instalação com sucesso.
# export CPPFLAGS="-I/opt/odbc/include -I/usr/include/ -I/opt/db4725/include"
# export LDFLAGS="-L/opt/odbc/lib -L/opt/db4725/lib"
# export LD_LIBRARY_PATH="/opt/db4725/lib"
Setando o caminho das libs de cada aplicação, no arquivo central de bibliotecas do sistema linux.
# echo "/opt/db4725/lib" >> /etc/ld.so.conf
# echo "/opt/odbc/lib" >> /etc/ld.so.conf
Atualizando Bibliotecas do sistemas.
# ldconfig
Configurando o código fonte do openldap.
# ./configure –prefix=/opt/ldap –sysconfdir=/opt/ldap/etc –enable-crypt=yes –enable-modules=yes –enable-syslog=auto –enable-slurpd=yes –enable-bdb –enable-sql=yes
Conferindo se faltou alguma dependência do openldap.
# make depend
Compilando o código fonte e instalando o aplicativo no seguinte diretório /opt/ldap.
# make && make install
Setando os binários no PATH e setando o OpenLDAP na inicialização
Colocando todos os caminhos de binários de aplicativos no PATH do Linux. Use seu editor predileto, no caso usei o vim
/opt/db4725/bin:/opt/odbc/bin:/opt/ldap/bin:/opt/ldap/libexec:/opt/ldap/sbin
# vi /etc/profile
Modificar o PATH atual de :
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
para:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/db4725/bin:/opt/odbc/bin:/opt/ldap/bin:/opt/ldap/libexec:/opt/ldap/sbin"
Agora vamos salvar e sair do arquivo. Agora vamos reler o arquivo de variáveis de ambiente e setar o PATH novo.
# source /etc/profile
Pronto, agora você estará habilitado para acessar todas as ferramentas de administração dos aplicativos a partir de qualquer lugar, sem precisar o caminho de localização do arquivo.
# Colocando o openldap rodar na inicialização do sistema linux.
Ficará assim.
# vi /etc/rc.local
/opt/ldap/libexec/slapd
exit 0
Pronto.Feito isso, tudo ok.
Configurando o OpenLDAP para acesso ao MySQL (parte1)
Configurando o Openldap para acesso ao mysql. Nesse estudo de caso, não abordarei sobre configurações do mysql.
Então mão na massa.
Como administrador do sistema linux, vamos criar base de dados, chamado ldap.
# mysqladmin -u root -p create ldap
Agora vamos alterar o arquivo de configurar slapd.conf, para se utilizar do modo SQL
Segue as instruções abaixo:
Use seu editor predileto, no caso usei vim.
# vi /opt/ldap/etc/openldap/slapd.conf
allow bind_v2
# Schema and objectClass definitions
include /opt/ldap/etc/openldap/schema/core.schema
include /opt/ldap/etc/openldap/schema/cosine.schema
include /opt/ldap/etc/openldap/schema/inetorgperson.schemapidfile /opt/ldap/var/run/slapd.pid
argsfile /opt/ldap/var/run/slapd.argsloglevel 256
moduleload back_sql
database sql
suffix "dc=dominio,dc=com"
rootdn "cn=admin,dc=dominio,dc=com"
# Pode-se utilizar o tipo de criptografia CRYPT, to usando plaintext, apenas para fins didáticos.
# Coloque a senha de administrador do openldap.rootpw senha
dbname ldap
dbuser root
dbpasswd senhasubtree_cond "ldap_entries.dn LIKE CONCAT(’%',?)"
insentry_stmt "INSERT INTO ldap_entries (dn,oc_map_id,parent,keyval) VALUES (?,?,?,?)"
has_ldapinfo_dn_ru no
Configurando o OpenLDAP para acesso ao MySQL (parte2)
Configurando o ODBC
Confirme a opção, para adicionar o Mysql automaticamente como um driver ODBC. Que modificará o arquivo /etc/odbcinst.ini
Ficando assim:
[MySQL]
Description = MySQL driver
Driver = /usr/lib/odbc/libmyodbc.so
Setup = /usr/lib/odbc/libodbcmyS.so
CPTimeout =
CPReuse =
UsageCount = 1
# dpkg-reconfigure libmyodbc
Agora no arquivo /etc/odbc.ini. Ficará desse jeito, configurando com os dados do servidor mysql.
[ODBC Data Sources]
ldap = MySQL LDAP DSN
[ldap]
Driver = /usr/lib/odbc/libmyodbc.so
Description = MySQL LDAP DSN
Server = localhost
Port = 3306
User = root
Password = senha
Database = ldap
# Coloque o caminho correto do socket do mysql
Socket = /var/run/mysqld/mysqld.sock# Coloque o caminho de onde você compilou o libiodbc
[ODBC]
InstallDir = /opt/odbc/lib/
Agora com ODBC e Openldap configurados e instalados, vamos testar a conexão entre o ODBC e o MySQL, antes de iniciar o serviço do OpenLdap.
Configurando o OpenLDAP para acesso ao MySQL (parte3)
Vamos digitar ? para ver todas as conexões.
# iodbctest
iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0607.1008
Enter ODBC connect string (? shows list): ?
DSN | Driver
——————————————————————————
ldap | MySQL LDAP DSN
Enter ODBC connect string (? shows list):
Configurando o OpenLDAP para acesso ao MySQL (parte4)
Testando comunicação entre ODBC com mySQL
# iodbctest
iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0607.1008
Enter ODBC connect string (? shows list): ?
DSN | Driver
——————————————————————————
ldap | MySQL LDAP DSN
Enter ODBC connect string (? shows list): DSN=ldap
Caso ocorrer algum erro, revise as configurações do /etc/odbc.ini e my.cnf. Se estiver tudo ok, aparecerá a seguinte mensagem.
Enter ODBC connect string (? shows list): DSN=ldap
Driver: 03.51.15 (libmyodbc3.so)
SQL>
Para testar, digite:
SQL>
show databases;
Database
—————————————————————-
information_schema
ldap
mysql
result set 1 returned 3 rows.
SQL>
Pronto , está tudo funcionando.
Fazendo o OpenLDAP trabalhar com MySQL (final)
Agora com ambos funcionando, é necessário importar algumas tabelas que vêm com o código fonte do openldap, que fica em: Entrando no diretório mysql, que contém as tabelas necessárias para o funcionamento do openldap com o mysql.
# cd /usr/src/openldap-2.4.16/servers/slapd/back-sql/rdbms_depend/mysql/
Criando todas as tabelas e inserindo informações de exemplos.
# mysql -u root -p ldap < backsql_create.sql
# mysql -u root -p ldap < testdb_data.sql
# mysql -u root -p ldap < testdb_metadata.sql
Bom a partir de agora, toda a estrutura necessária para funcionar o openldap com mysql, está pronta. Depois utilizando o phpmyadmin, altere as informações, de acordo com o seu domínio cadastrado no LDAP.
Pronto vamos inicializar o Openldap e m modo debug, para testar senão aparecerá nenhum erro.
# slapd -d5
Caso contrário, irá aparecer umas mensagens de conexão mysql. Mostrando que está tudo funcionando corretamente. Para iniciar sem o debug, (processo normal).
Apenas digite:
# slapd
Tudo pronto, valeu a pena o trabalho de compilar.
Agradecimentos
Quero agradecer aos meus amigos Clodonil Honório, que escreveu o livro OpenLDAP, uma abordagem integrada e também ao meu amigo Nielsen Alves de Oliveira.
1Um comentário
PRoblemas
Tem como voce me ajudar. Obrigado