OpenLDAP: a chave é a centralização

Este artigo tem por finalidade apresentar os conceitos básicos do OpenLDAP afim de despertar o interesse dos leitores para essa poderosa ferramenta, estimulando-os a buscar mais conhecimento sobre o assunto e posteriormente colocá-lo em prática. Aqui serão mostradas as características do OpenLDAP e seu funcionamento, passando por conceitos como serviço de diretórios, origem, aplicações e segurança.

[ Hits: 109.668 ]

Por: Jaime Ribeiro Junior em 11/12/2008


O OpenLDAP e a centralização



Ao se utilizar o SLDAP (servidor LDAP, máquina onde o OpenLDAP está instalado), como base para busca de informações, pode-se fazer com que todos os serviços e aplicativos da rede o usem para buscar as informações, de forma em que todos compartilhem uma única árvore. Fazendo com que todos os serviços da rede fiquem integrados a ele, facilitando muito a administração de redes de qualquer tamanho.

Ao se colocar todos os dados da rede em uma única árvore de informações e fazendo com que todos os serviços e aplicativos passem a utilizar o SLDAP, estará se centralizando todos os dados e as buscas dos mesmos, isto é o que se denomina centralização! Onde ela é a chave para a utilização de um estilo que traz facilidade e eficiência na gerência de redes.

Enfocando que centralização é o ato de se utilizar um serviço de diretório na rede fazendo com que todos os outros serviços e softwares que necessitem buscar informações façam todas suas buscas no servidor de diretórios.

Com a utilização da centralização o administrador de redes tornará os serviços e softwares da rede, muito mais práticos e fáceis de se gerenciar, pois ao utilizar está "chave" ele abrirá uma "porta" para uma gerência de forma inovadora, como a autenticação de todos os serviços da rede em uma única base de dados, uma agenda com todos os dados dos usuários que pode ser acessada de qualquer ponto da rede, ou seja, as informações do SLDAP poderão ser utilizadas por qualquer software que venha precisar delas.

Funcionamento do OpenLDAP

Todo tipo de informação pode ser armazenado nos atributos da base do OpenLDAP como nomes, IDs de usuário, fotos, locais de trabalho, senhas, e-mais entre outros. Os responsáveis por determinar quais tipos de entradas são válidas na base do OpenLDAP são arquivos chamados schema, segundo Trigo (2007, p. 24) "schema é como uma planta-baixa, uma definição da estrutura das entradas e dos atributos que podem ser inseridos nelas".

Qualquer software que venha a necessitar da consulta de informações para seu funcionamento, é um forte candidato para a utilização do OpenLDAP, para isso basta que o mesmo tenha um arquivo schema. Criar arquivos schemas é possível, entretanto não é fácil, por isso o OpenLDAP traz com sigo os schemas necessários para a configuração de seus principais recursos. Serviços conhecidos como Samba, FTP, Apache, já possuem schemas prontos disponíveis em repositórios na Internet, se o software que o usuário pretender usar não tiver nenhum schema existente ele poderá criá-lo.

Schemas são registrados e padronizados sob RFCs, segundo Trigo (2007) :

Cada elemento de um schema é identificado por um OID (Object Identifier - Identificadores de Objetos). Por questões de padronização e para evitar ambiguidades, esses Identificadores de Objetos são registrados por uma autoridade específica, a IANA (Internet Assigned Numbers Authority - Autoridade de Atribuição de Números da Internet).

O sistema de numeração de objetos é hierárquico, e a IANA garante que aquele OID é usado apenas por um objeto. O objeto organization, por exemplo, usa o número 2.5.6.4 Este número representa um ramo de uma árvore de numerações, onde cada número separado por um ponto indica um nível da árvore. (TRIGO, 2007, p. 77)

Portanto caso seja necessário criar um schema primeiro deve-se informar o IANA e solicitar um OID para os novos objetos a serem criados e também pegar os OIDs dos objetos já existentes, que serão utilizados no schema, para que não haja um mesmo objeto com mais de um OID, pois no caso da existência de um o solicitante ficará sabendo automaticamente.

Para que os softwares vinculados ao LDAP utilizem os objetos da árvore o schema correspondente deverá conter quais objetos serão usados pelo software e a responsabilidade de adicionar o objeto à árvore ficará sob responsabilidade do administrador.

Vamos supor que temos três serviços que necessitem autenticação e que todos precisem de um objeto "ID de usuário", nos três serviços será o mesmo objeto com o mesmo OID, na árvore de informações existirá também o mesmo objeto com o mesmo OID, assim todos os três serviços compartilharam o objeto "ID de usuário", caracterizando a centralização.

Os serviço de diretório que o OpenLDAP provem, é estabelecido através do Slapd e a comunicação do mesmo com os usuários, serviços e etc é feito através do LDAP. Segundo Trigo (2007) a forma de armazenamento das informações da árvore de diretórios independe do protocolo, podendo variar de um simples arquivo de texto até um banco de dados relacional completo.

Um item de grande importância são os arquivos ldif (ex: arquivo.ldif), estes são arquivos de texto comum e são com eles que o protocolo LDAP faz a importação e exportação de informações da base de dados. Podem ser editados por qualquer editor de texto como o VI, gedit, kedit e outros.

Os bancos de dados nativos do OpenLDAP são o LDBM e o BerkeleyDB sendo eles feitos especificamente para este tipo de serviço. Mas se necessário, o OpenLDAP pode trabalhar com banco de dados relacionais, onde através dele poderá ser feitas buscas e consulta, onde a autenticação para acesso ao banco de dados poderá ser feita através do OpenLDAP, ou seja, será criada a possibilidade de que o OpenLDAP envie dados para o banco de dados e o mesmo também realize pesquisas.

Para que se vincule um banco de dados relacional ao OpenLDAP ele deve ser compilado com suporte a SQL e ao OBDC (Open Data Base Connectivity - Conectividade de Banco de dados aberto), pois banco de dados relacionais dependem o OBDC para estabelecer conexões, além da adição do Schema. TRIGO (2007) destaca, que o OpenLDAP possui suporte para os seguintes banco de dados relacionais: IBMDb2, Mssql, MySQL, Oracle, PostgreSQL, e Timesten.

O OpenLDAP é capaz de atender a múltiplos banco de dados ao mesmo tempo, isso torna possível, caso necessário, utilizar mais de um. Gerando, no entanto, um grande tráfego na rede e exigindo que elas estejam fisicamente preparadas.

Como já enfatizado o OpenLDAP, provém um conjunto de softwares que são implementados juntos ao LDAP e ao Slapd para que SLDAP ser torne funcional, o Cryrus Sasl-Kerberos V, GSSAPI e Digst-MD5 fazem parte da família OpenLDAP e são softwares responsáveis por prover a autenticação de usuários. Estes softwares permitem o OpenLDAP oferecer o serviço de autenticação utilizando a base SLDAP de informações. Assim poderá ser feito como que todos os serviços da rede como FTP, SAMBA, SQUID , APACHE, QMAIL , domínios Windows, e domínios Linux e diversos outros serviços de redes autentiquem na base do SLDAP e não em bases individuais.

Com o OpenLDAP instalado e configurado um nome de usuário senha poderá ser buscado na base LDAP de qualquer ponto da rede , e o usuário terá acesso normal a todos os serviços que lhe for permitido. O mesmo acontece com a busca de qualquer tipo de informação que poderá ser buscada em qualquer ponto da rede sendo necessário apenas que o usuário que a busque tenha permissão para o mesmo.

Dentre as configurações da OpenLDAP existem entradas responsáveis por definir o nível de acesso de um usuário. Quando um usuário é adicionado à árvore, para que ele tenha acesso a algum serviço da rede, o administrador deve configurar o nível de acesso liberando e restringindo o que for conveniente.

O OpenLDAP trabalha com dois estilos de organização da árvore, uma no estilo X.500, clássico, que não funciona com diretórios distribuídos e outra no estilo DNS que por natureza funciona muito bem com diretórios distribuídos, onde o próprio serviço DNS que é utilizado na internet é feito através de servidores distribuídos pelo mundo todo. As principais vantagens obtidas com a centralização são:
  • Maior facilidade e praticidade e menor probabilidade de falhas ao adicionar ou excluir indivíduos da rede, uma vez que ao se adicionar precisará ser criado apenas um usuário para diversos serviços, e ao excluir um único ID de usuários o administrador estará excluindo o individuo de todos os serviços que ele era vinculado não correndo o risco de esquecer-se de algum e deixar uma brecha de segurança na rede;
  • Realização do Backup de apenas um seguimento de informações que conterão todos os dados da rede, facilitando esta tarefa.
  • A criação de uma agenda virtual na base centralizada disponibilizando o acesso de qualquer ponto da rede.
  • Portabilidade, já que é possível ter acesso aos serviços da rede de qualquer ponto da mesma por qualquer usuário.
  • É capaz de prover controle de acesso e transmissão criptografada oferecendo segurança no transporte de dados.

A junção de todas essas vantagens é o trunfo da centralização onde fica provada a sua eficiência.

Aplicações para o OpenLDAP

O OpenLDAP pode ser usado em todo tipo de redes desde as pequenas até as redes corporativas, pois o LDAP consegue atender múltiplas chamadas ao mesmo, tempo em outras palavras ele conseguirá atender vários usuários e requisições de software sem perca de desempenho, visto que OpenLDAP irá até onde o hardware permitir, a nível de tráfego da rede e de processamento do servidor.

Preferencialmente o OpenLDAP deve ser instalado no início da utilização da rede e todos os dados dela, precisam ser armazenados nele, mas nada impede que o OpenLDAP seja implementado em uma rede já existente, o problema é que depois toda a base de dados tem que ser movida para a base do SLDAP, imagine um sistema com milhares ou milhões de usuários. Existem aplicações que fazem este trabalho, não sendo necessário fazê-lo manualmente, mas o processo mesmo automatizado leva algum tempo dependendo da quantidade de informação que será copiada para base do SLDAP, obviamente o backup dos dados precisa ser feito antes para prevenir alguma perda.

Para realizar buscas através do terminal o LDAP utiliza o comando ldapsearch onde pode ser feitas pesquisas bem elaboradas através de filtros de pesquisa. Claro que buscas através do terminal e configuração manual de arquivos ldif dentre outras aplicações não muito "amigáveis" são apenas a parte grossa da utilização, pois existem diversos softwares feitos para auxiliar na utilização e administração do OpenLDAP.

Para pessoas que não gostam de sofrer em um terminal, temos aplicativos gerenciadores dos dados do SLDAP, que facilitam a utilização do mesmo depois de implementado, adicionar ou excluir, fazer pesquisar e consultas, se tornam tarefas praticas. Sendo que estes softwares podem ser instalados a parte e se tendo muitas opções, segue abaixo alguns exemplos extraídos de Trigo(2007):
  • GQ, ótima ferramenta para testar o servidor LDAP e para incluir e excluir dados.
  • Luma é um bom programa de gerenciamento de entradas de diretórios.
  • DirectoryAssistant, ferramenta que inclui e pesquisa informações. (TRIGO, 2007, p. 84,85 e 86).

Existem outras ferramentas algumas piores, outras muito melhores do que as citadas acima, no site www.freshmeat.com como:
  • Eye Of Newt
  • Jxplore
  • LDAP Account Manger
  • LDAP User Manger for the Web
  • phpLDAPadimin
  • Gosa
  • Kdiradm
  • Swiss Army LDAP Tool

O OpenLDAP pode ser usado com diretórios distribuídos, basta que devidamente configurado para isso, onde ele terá que estar trabalhando com o estilo DNS de organização da árvore. Assim teremos mais de um SLDAP, onde existirão dados na árvore responsáveis por indicar as direções das outras árvores pertencentes aos outros SLDAP, formando logicamente uma árvore única .

Para entender melhor a aplicação de um Servidor LDAP distribuído considere a existência de uma empresa que possui uma matriz e três filiais espalhadas por cidades distintas, onde está empresa usa através do OpenLDAP a centralização.

Ela tanto em sua matriz como em suas filiais possui uma rede estruturada e os servidores contam com um backbone gigabit que evitará que o intenso tráfego que chega até ele faça esse ponto da rede virar um gargalo e que as filiais manterão a comunicação via meios externos como a internet através de uma VPN (Virtual Private Network - Rede privada Virtual) ou outro tipo canal dedicado de comunicação oferecido pela provedora de Internet.

Teremos duas analogias uma em que o SLDAP é distribuído entre a matriz e filiais e outra em que ele fica apenas na matriz ou mesmo distribuído todos os SLDAP ficam na matriz.

Se o SLDAP não for distribuído, teremos o seguinte cenário, todos os dados de clientes, funcionários, empresas terceirizadas entre outras estarão na base centralizada, e todas as filiais estão constantemente buscando informações no SLDAP da matriz de forma em que esse se torna um serviço crítico e indispensável para o funcionamento da empresa fazendo com que o SLDAP sofra com a sobrecarga de processos devido ao alto número de requisições.

Com isso teremos um problema, pois devido ao alto tráfego de dados o tempo de resposta do SLDAP em relação às filiais se tornará muito demorado devido ao meio de comunicação entre filial e matriz que é lento em comparação com uma rede local, fazendo com que a própria qualidade do serviço da empresa fique prejudicada.

Mesmo que se usem Servidores LDAP distribuídos dentro da matriz isso só irá aliviar para o servidor, pois o processamento de dados e o tráfego de dados do mesmo ficaram divididos, melhorando a qualidade de serviço do servidor, mas não resolverá o problema das filiais. Resolverá o problema de sobrecarga no servidor, mas não eliminará o gargalo por onde os dados enviados pelas filiais trafegam.

Agora nosso cenário é diferente, temos um servidor LDAP distribuído, um SLDAP em cada filial e um SLDAP central na Matriz, assim cada filial manterá seus dados em seu próprio SLDAP realizando a maioria das buscas no servidor local e buscas externas como informações da matriz ou de outras filiais continuariam sendo feitas através do SLDAP da Matriz, pois se devidamente configurado quando uma pesquisa não fosse respondida pelo servidor local o mesmo iria direcionar a pesquisa para o SLDAP externo percorrendo toda a árvore até que, caso a informação exista, se ache a informação requisitada obtendo a resposta.

Assim o problema será resolvido, pois foi eliminado o gargalo que antes as filiais enfrentavam, e o SLDAP da matriz também não ficará sobrecarrego, pois o mesmo não sofrerá mais com as constantes requisições vindas de todas as filiais e matriz.

Página anterior     Próxima página

Páginas do artigo
   1. Sumário + resumo
   2. Introdução
   3. O que é um diretório, onde ele é aplicado
   4. Do X.500 ao OpenLDAP
   5. O OpenLDAP e a centralização
   6. OpenLDAP e a segurança
   7. Considerações finais + Referências
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Torne-se um DJ usando Linux

Terminal de acesso (Quiosque) com Debian e Firefox

Instalação e configuração do MySQL 4.0.26, Apache 2.0.54, PHP 5.0.4 e PHP-Nuke 7.8 no Slackware 10.1

GIMP 2.0: Tutoriais rápidos

Desenvolvendo um servidor DNS no CentOS

  
Comentários
[1] Comentário enviado por dfsantos em 11/12/2008 - 14:07h

Primeiramente queria parabeniza-lo pelo artigo de otima qualidade e agradecer por ter separado umas horas para fazer esse trabalho de qualidade incontestavel em favor da comunidade. Possuo o livro do Clonil Trigo e estou estudando para exame da LPI exame 301 que aborda o OPENLDAP e concerteza foi muito dificil achar material de qualidade como esse na internet... parabens pelo trabalho e mais uma vez agradeço o esforço em compartilhar seu conhecimento conosco.

Em relação ao a "porem há poucos profissionais no mercado que o dominam. " estarei me empenhando nos estudos para fazer parte destes e assim poder contribuir para que esse numero de profissionais aumente....

[2] Comentário enviado por jaimejr1987 em 11/12/2008 - 14:39h

Obrigado, pelo comentario, quero sempre estar trablhando afim de espor as qualidades das ferramentas livres de alto peso como está.

[3] Comentário enviado por info24hs em 11/12/2008 - 17:28h

Cara não muito bom teu artigo, ja tinha visto esse nome na internet mas não tinha lido sobre, com esse artigo entendi perfeitamente oque significa esse recurso. vou tentar implementar aqui, valeu e parabens!

[4] Comentário enviado por joserribeirojuni em 11/12/2008 - 18:08h

Muito bom esse artigo parabéns !

[5] Comentário enviado por oseasfr em 11/12/2008 - 20:50h

Artigo de qualidade. Parabéns Jayme Jr.

[6] Comentário enviado por rrinfor em 12/12/2008 - 08:55h

Ótimo artigo! trabalho 4 anos com informática, e 3 especificamente com Linux, mas so ouvia falar rapidamente do OpenLDAP, mas ja li o bastante no seu artigo para me interessar e aprender mais sobre ele.

Abraços

[7] Comentário enviado por removido em 13/12/2008 - 12:24h

Excelente... parabéns e continue com artigos desse nível... a comunidade agradece!!!
Se possível, seria interessante um artigo mostrando a parte técnica do OpenLDAP.
Imagino que um OpenLDAP rodando com PostgreSQL 8.3 com replicação de dados seja uma façanha bem interessante pra se testar.
Se eu conseguir algo nessa aventura, postarei um artigo aqui explicando e detalhando os passos de como montar um ambiente deste tipo.
Valeu!!!

[8] Comentário enviado por Mallakka em 26/02/2009 - 11:47h

Jaime,

parabéns pelo ótimo trabalho.
Gostaria de saber, se não for problema, se você teria mais algum material falando sobre OpenLDAP, Samba ou Active Directory. Se o material for seu melhor ainda porque já vi a qualidade dos mesmos =). Estou fazendo um trabalho abordando justamente esses temas, qualquer coisa pode me enviar um email.

Valeu !!!

[9] Comentário enviado por jrosalino em 07/04/2009 - 14:07h

Muito bom o texto, me ajudou a conhecer melhor o LDAP. Mas tenho uma dúvida, o servidor LDAP da minha empresa está instalado em servidor linux utilizando MySQL e temos uma aplicaçao em Visual Basic 6 no windows XP que terá que acessa-lo. A conexão com a fonte de dados necessita de um driver? se necessitar seria qual tipo?

Obrigado

[10] Comentário enviado por jaimejr1987 em 07/04/2009 - 18:36h

ok, vamos entender melhor o assunto... O seu aplicativo VB6 vai acessar a base LDAP diretamente?.... ex: Um servidor de dominio + servidor FTP + Programa de gerencia como o nagios que utiliza a base LDAP para altenticação... Todos esses serviços utizão apenas a base LDAP para buscar nomes de usuario e senha alem de endereço e telefone do usuario. Bem no exemplo acima o uma estação windows xp vai usar o dominio samba, ou seja ele vai utilizar o samba e não o ldap, quem usa o ldap é o samba, o ftp da mesma forma o usuario vai utilizar o ftp não o ldap diretamente pois é o servidor ftp que vai utilizar o ldap e da mesma forma ao fazer um acesso remoto e utilizar um software de gerenciamento via browser vc vai utilizar o software que por sua vez usa o ldap. Bem estou estou querendo chegar no seguinte... Lenbra o que é um SCHEMA bem... todos os softwares acima precisão do seu para poder acessar a base ldap, da mesma forma o software feito em VB vai precisar... a parte do mySQL já ta configurada no ldap ok... se vc ta querendo acessar um dado como login e senha e utiliza-lo para fazer a autenticação no seu software VB6 vc vai precisar de um SCHEMA para ele, se vc estiver querendo acessar informações no BD do LDAP como telefone e endereço, alem da linha de comando existem softwares que faz isso pra vc.... ok... bem... não sei se existe algum SCHEMA para um aplicação VB6, mas vc pode criar um. Ps: não sei criar SQUEMAS utilizo os que já existem... pois aplicações como as que citei acima já tem SCHEMAS prontos na net.... criar um SCHEMA não é facil. Mas vc pode tentar. A parte do dirver seria para que seu software VB6 utiliza-se o My SQL, mas pelo que eu entendi vc que usar a base LDAP que esta utilizando o MySQL para ser armazenada, ou seja como nos exemplos acima hehe... vc vai utilizar é o ldap não o MySQL diretamente... que precisa se comunciar com o MySQL é o LDAP. Ou seja se for isso que eu entendi que vc ta querendo vc vai presisar de um SCHEMA para seu software alem de fazer um acesso na Base ldap remotamente pela rede. Existem algumas configurações de vairam de software para software que deve ser feita no proprio software para usar o LDAP, ex o Samba de ser configurado para usar a base LDAP ao em ves da padão.

Espero ter ajudado, mas se não for essa sua duvida posta outro comentaria explicando melhor a situação

até

by JaimeJR

[11] Comentário enviado por jaimejr1987 em 07/04/2009 - 18:42h

A como na informatica tudo gira e nuca para... caso vc consiga descobrir um geito de acessar a base LDAP pelo seu programa VB6 de outra forma poste aki Ok.

[12] Comentário enviado por jrosalino em 08/04/2009 - 16:50h

Obrigado jaime, eu vou verificar exatemente a condição do LDAP com os gestores para passar informação melhor detalhada. Se conseguir acessar pelo VB6 postarei a forma sim. \(^o^)/

[13] Comentário enviado por lucfab em 21/04/2010 - 15:45h

Parabens Jayme pelo seu Artigo, Será que vc poderia me dar uma dicas de replicação de bases LDAP (Master/Slave), Obrigado Luciano S.


Contribuir com comentário