Você está na página 1de 11

Carlos Fernando Papotti Jos Ricardo M.

Bevilacqua Julio Csar Costa Marcondes Raul Baldin

RA : 02131282 RA : 02534626 RA : 02121069 RA : 02088243

Lightweight Directory Access Protocol LDAP


Tpicos em Engenharia de Computao A Professor: Eduardo Nicola Ferraz Zagari

Campinas 2006

Introduo
LDAP um protocolo (executado sobre o TCP/IP) cliente-servidor, utilizado para acessar um servio de diretrio. Ele foi inicialmente usado como uma interface para o X.500, mas tambm pode ser usado com autonomia e com outros tipos de servidores de diretrio. Atualmente, vem se tornando um padro, e diversos programas j tm suporte a LDAP. Livros de endereos, autenticao, armazenamento de certificados digitais (S/MIME) e de chaves pblicas (PGP) so alguns dos exemplos onde o LDAP j amplamente utilizado.

Mas, o que um Diretrio ?


Um Diretrio como um banco de dados, mas tende a conter mais informaes descritivas, baseadas em atributos e organizado em forma de rvore, no de tabela. A informao em um Diretrio , geralmente, mais lida do que escrita. Como conseqncia, Diretrios normalmente no so usados para implementar transaes complexas ou esquemas de consultas regulares em bancos de dados, mas para realizar atualizaes, tudo isso envolvendo apenas pequenas quantidades de dados. Diretrios so preparados para dar resposta rpida a um grande volume de consultas ou operaes de busca. Eles tambm podem ter a habilidade de replicar informaes extensamente. Isso utilizado para acrescentar disponibilidade e confiabilidade, enquanto reduzem o tempo de resposta. Existem vrias maneiras diferentes para disponibilizar um servio de diretrio. Mtodos diferentes permitem que diferentes tipos de informaes possam ser armazenadas no diretrio, colocando requerimentos diferentes sobre como aquela informao poder ser referenciada, requisitada e atualizada, como ela protegida de acessos no autorizados, etc. Alguns servios de diretrio so locais, fornecendo o servio para um contexto restrito (exemplo: o servio finger em uma mquina isolada). Outros servios so globais, fornecendo o servio para um contexto muito maior (por exemplo, a prpria Internet). Servios globais normalmente so distribudos (conforme demonstra figura abaixo), ou seja, cada servidor responsvel por uma parte dos dados, apenas. O DNS (Domain Name System) um exemplo. Ele um tipo de servio de diretrio, embora bastante especializado.

Figura 1 - Dados de um Diretrio distribudos em trs servidores.

Um pouco de histria
O LDAP foi originalmente desenvolvido como um cliente para o X.500, o servio de Diretrio OSI. O X.500 define o Protocolo de Acesso a Diretrio (DAP) para os clientes usarem quando estiverem em contato com servidores de diretrio. O DAP um protocolo pesado, que roda sobre uma camada OSI completa, e precisa de uma quantidade significante de recursos computacionais para ser executado. Tendo isso em vista, pensou-se em criar um protocolo mais leve para que tambm fosse utilizado em mquinas de menor poder computacional, como em desktops convencionais. Ento foram desenvolvidos dois protocolos, o Directory Assistance Service (DAS) e o Directory Interface to X.500 Implemented Efficiently (DIXIE), que foram os predecessores do LDAP, mas que ainda eram muito ligados ao X.500, pois precisavam de um servidor intermedirio para efetuar a traduo desses protocolos para o DAP que se comunicaria com o Diretrio X.500, como demonstrado abaixo:

Figura 2 Utilizando DIXIE para se comunicar com Diretrios X.500

Ento, a unio de foras da OSI-DS Working Group e da IETF resultou na construo de um novo protocolo, o Lightweight Directory Access Protocol (LDAP), que roda diretamente sobre TCP/IP e fornece a maioria das funcionalidades do DAP, a um custo muito menor, alm de ser muito mais leve. No princpio, a utilizao do LDAP (LDAPv1) era similar ao DAS e ao DIXIE, utilizando um servidor intermedirio e exigindo um servio X.500 completo. A segurana dos dados que trafegavam tambm era uma preocupao, pois todos eram (e ainda so) em formato texto (strings). Ento foi desenvolvido o LDAPv2, com autenticao utilizando o Kerberos v4. Mas ao passar dos anos percebeu-se que os complexos e pesados Diretrios X.500 poderiam ser substitudos por Diretrios mais leves e que no possussem tamanha complexidade que raramente era utilizada. Foi ento que surgiu a idea de desenvolver o lado servidor do LDAP, ou seja, Servios de Diretrios LDAP, que so utilizados at hoje. E tambm foi desenvolvido o LDAPv3 (atual) que possui um suporte muito maior autenticao (compatvel com SASL e TLS) e vrias outras extenses que permitem a adio de novas operaes e controles.

Como funciona ento o protocolo LDAP ?


Como j foi dito anteriormente, o servio de diretrio LDAP baseado em um modelo cliente-servidor. Um ou mais servidores LDAP contm os dados residentes em uma rvore de diretrio LDAP. Um cliente LDAP conecta-se a um servidor e faz uma requisio. O servidor responde com a requisio ou exibe um ponteiro para um local onde o cliente pode conseguir a informao (tipicamente, outro servidor LDAP). Pode-se at fazer uma comparao com o DNS, a diferena que o servidor LDAP no faz buscas recursivas, ou seja, em nome do cliente. O cliente que encarregado de procurar pelo servidor at encontrar a informao desejada.

Quais so algumas das utilidades do protocolo LDAP ?


Antes de enumerarmos as diversas utiliades possveis do LDAP, deve ser questionado que tipo de informao existe na rede. Se est de forma fragmentada ou desordenada e se no seria til reunir estas informaes num s lugar, dando uma nova formatao, reagrupando os itens, uniformizando estes dados de modo que estejam facilmente acessveis por todas as estaes de trabalho na rede. Podemos agora indicar que o LDAP tem sido utilizado para os seguintes cenrios:

em substituio dos servidores NIS, fornecendo login/senha (autenticao) para usurios Linux/Unix; autenticao para usurios SAMBA; autenticao para servios de email (POP3/IMAP); autenticao para aplicativos groupware (como o MoreGroupware); catlogo com os endereos de email, endereos, telefones, etc. de empregados ou clientes da empresa; soluo de single sign on (SSO), permitindo acesso para vrios ambiente e arquiteturas de software e sistemas operacionais.

E quais so os padres que o LDAP segue?


O protocolo LDAP define quatro tipos bsicos de modelos que definem como ele opera, que tipo de dados podem ser armazenados em seus Diretrios e o que pode ser feito com esse dados. Todos esses modelos esto publicados em RFCs disponveis para consulta do pblico em geral. Os modelos so: Modelo de Informao define os tipos de dados e as unidades bsicas de informao que voc pode armazenar no Diretrio; Modelo de Nomes define como voc organiza e faz referncia aos seus dados; Modelo de Segurana define quais procedimentos podem ser tomados para se evitar o acesso no autorizado s informaes do Diretrio, como protocolos de encriptao e autenticao; Modelo Funcional descreve as operaes que voc pode realizar no Diretrio utilizando o protocolo LDAP;

E como so organizados as informaes no LDAP ?


O elemento bsico de informao de um Diretrio denominado entrada, que corresponde a uma coleo de informaes de um determinado objeto que, por sua vez, possui diversos atributos que o descreve. Cada atributo possui um tipo, que define que tipo de informao est contida no atributo, e um valor, que contm o dado propriamente dito. Esses objetos podem corresponder a objetos do mundo real mesmo, como pessoas, impressoras, servidores, etc., mas no necessariamente precisam ser do mundo real, pode ser qualquer tipo de informao. importante ressaltar tambm que cada entrada identificada por um DN (Distinguished Name), que se trata de uma nome nico que serve para se referir a uma determinada entrada no Diretrio sem problemas de ambigidade, por exemplo. No LDAP, entradas de Diretrio so organizadas em uma hierarquia de rvore invertida, semelhante, em alguns aspectos, organizao do sistema de arquivos Unix, porm com a diferena que na raiz esto armazenadas informaes do servidor ao invs de um objeto. A estrutura desta rvore geralmente reflete limites polticos, geogrficos e/ou organizacionais. O n mais alto (raiz) tipicamente o componente nome de domnio (dc) de um pas, companhias ou organizaes internacionais. Abaixo ficam as entradas representando estados ou organizaes nacionais. Abaixo elas podem ser entradas representando pessoas, unidades organizacionais, impressoras, documentos ou qualquer outra coisa em que voc possa imaginar. A figura abaixo mostra um exemplo de um Diretrio LDAP em rvore:

Figura 3 - rvore de Diretrio LDAP Apesar de termos entradas para pases, o diretrio no possui uma entidade centralizadora como, por exemplo, o root do Unix. A separao por pases, por exemplo, pode ser til para empresas multinacionais. Uma outra vantagem de um servio de diretrios que os ramos da rvore podem estar em mquinas diferentes. No caso acima, a entrada de cor cinza pode estar em um outro computador, por exemplo. Note que esta caracterstica tambm tpica de servidores DNS.

Como so organizados os atributos usando LDAP ?


Sabemos que alguns tipos de atributos usados nas entradas em um servio de diretrios so: mail, cn, telephoneNumber e outros. Entretanto, pode-se criar qualquer outro tipo de atributo, mas isso no recomendado. No LDAP existem diversas classes de objetos e cada classe contm uma lista de atributos obrigatrios e opcionais. Essa lista tipicamente definida em uma RFC, mas empresas ou organizaes tambm podem criar suas prprias classes, se necessrio. O mais recomendado tentar utilizar as classes e atributos j existentes. Por exemplo, a classe person (RFC 2256) definida da seguinte maneira:
objectclass ( 2.5.6.6 NAME 'person' SUP top STRUCTURAL MUST ( sn $ cn ) MAY ( userPassword $ telephoneNumber $ seeAlso $ description ) )

O servidor LDAP pode ser configurado para verificar as classes (atravs da opo e forar o uso correto dos atributos. Isso, geralmente, uma boa idia. Com a verificao das classes habilitada, ser obrigatria a insero dos atributos objectClass, sn e cn, por exemplo. Quando for definido que uma entrada do Diretrio da classe person, o atributo description ser opcional. Entradas em diretrios podem ter vrias classes diferentes, basta apenas observar os requisitos de atributos de cada classe.
schemacheck)

E quanto a segurana e a consistncia dos dados ? O que o LDAP oferece ?


Alm de todo o servio de organizao de informaes, o LDAP tambm oferece recursos para proteo dos dados que so manipulados, diferentemente de alguns servios de diretrio que no fornecem nenhum tipo de proteo, permitindo que qualquer pessoa possa interceptar as informaes. O LDAP fornece mtodos para autenticao de um cliente ou prova sua identidade para um servidor de diretrio, protegendo as informaes contidas no servidor. Alm disso, o LDAP oferece tambm recursos para a replicao de dados em caso das mesmas serem apagadas ou alteradas por intrusos. Um exemplo de um servidor para Linux que auxilia o LDAP (mais precisamente o SLAPD servidor que pode ser executado em diversas plataformas), provendo a replicao do banco de dados o SLURPD. O SLAPD e o SLURPD se comunicam atravs de um simples arquivo texto, que utilizado para registrar as mudanas. A sintaxe deste arquivo lembra um pouco a sintaxe dos arquivos resultantes do diff, no sentido de que esto descritas as entradas ou atributos que devem ser removidos, adicionados ou modificados. Esse tipo de arquivo identificado com o nome de LDIF. Em um processo de replicao simples, o cliente insere, exclui ou modifica informaes no servidor LDAP master, que se encarrega de realizar a replicao dos seus dados em outros servidores (os quais servem somente para operaes de consulta). Esse processo de replicao ocorre continuamente em um determinado intervalo de tempo ou pode acontecer imediatamente, quando a atualizao de dados for de alta prioridade ou crtica para o Diretrio.

Figura 4 - Um Servio de Diretrio Replicado com Dados Distribudos em Trs Servidores

Do que composto o arquivo LDIF?


O LDAP Data Interchange Format (LDIF), citado anteriormente, corresponde em ingls a: Troca de dados entre diferentes formatos e baseado em um formato de texto padro utilizado para descrever diretrios, tendo sua estrutura definida pela RFC 2849. Os arquivos LDIF permitem que voc possa importar ou exportar os dados do seu servidor de diretrio com outro, sem que os dois necessitem utilizar uma mesma base de dados. Com isso, possvel distribuir as mais diversas informaes contidas em um servidor de diretrio para outros servidores de diretrio utilizando apenas comandos padronizados. Atualmente existem dois tipos diferentes de arquivos LDIF. O primeiro tipo descreve um conjunto de entradas de diretrios (exemplo abaixo) que serve para ser diretamente agregado a um Diretrio, enquanto que o outro tipo uma srie de comandos de atualizao que descrevem as mudanas que devem ser aplicadas aos atributos das entradas de um Diretrio.
version: 1 dn: uid=bjensen, ou=people, dc=example, dc=com objectclass: top objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson cn: Barbara Jensen cn: Babs Jensen givenName: Barbara sn: Jensen uid: bjensen mail: bjensen@example.com telephoneNumber: +1 408 555 1212 description: Manager, Switching Products Division dn: uid=ssmith, ou=people, dc=example, dc=com objectclass: top objectclass: person objectclass: organizationalPerson objectclass: inetOrgPerson cn: Steve Smith cn: Stephen Smith givenName: Stephen sn: Smith uid:ssmith mail: ssmith@example.com telephoneNumber: +1 650 555 1212 description: Member of Technical Staff.

E quanto a autenticao ? O que o LDAP oferece ?


No LDAPv1 a autenticao era realizada de maneira simples, ou seja, no havia nenhum mtodo de criptografia e o nome de usurio e senha eram enviados em formato de texto convencional, que poderia ser interceptado por qualquer outra pessoa no momento do envio. Como esse mtodo de autenticao do LDAP era muito indesejvel, pois introduzia uma grave vulnerabilidade no que diz respeito sua segurana, foi desenvolvido uma nova verso do protocolo (LDAPv2) que tem como sua principal mudana a incluso do suporte ao mecanismo Kerberos v4 como mtodo de criptografia. Porm, o Kerberos v4 no foi comercialmente aceito e foi, posteriormente, substitudo pela verso 5. Ainda assim, o Kerberos no estava amplamente

disponvel nos servidores do LDAPv2, o que fazia com que os clientes adotassem o mtodo bsico de autenticao, ou seja, no-encriptado que era aceito por todos os servidores. Tendo isso em vista, foi desenvolvida uma nova verso do LDAP, o LDAPv3 (atual), que trata a autenticao baseada nos modos de como os servidores so acessados: Servidores LDAPv3 pblicos somente-leitura permitem login annimo, sem senha; Servidores com autenticao usando senhas usa mecanismo SASL DIGEST-MD5; Servidores com autenticao e criptografia de dados usa StartTLS para camada de transporte segura e certificados com chaves pblicas para autenticao de ambos os lados, proporcionando autenticidade, integridade e criptografia dos dados.

O estabelecimento de uma conexo cliente-servidor LDAP acontece, basicamente, em trs passos, onde o cliente: 1. Abre uma conexo TCP com o servidor; 2. Envia uma operao StartTLS, em que os protocolos de camada mais baixa negociam a encriptao e a autenticao segundo a especificao do TLS; 3. Realiza o bind utilizando um mecanismo SASL EXTERNAL caso um certificado tenha sido fornecido durante a negociao TLS, ou outro mecanismo SASL como o DIGEST-MD5, por exemplo.

E como so acessadas as informaes desejadas nos diretrios usando LDAP ?


O LDAP possui trs tipos de operaes que so definidas abaixo: Operaes de Interrogao: search e compare permite que voc faa requisies de consulta ao Diretrio; Operaes de Atualizao: add, delete, modify, modify DN (rename) permite que voc faa atualizaes no Diretrio; Operaes de Controle e Auteticao: bind, unbind e abandon o bind permite identificar o cliente enviando credenciais de autenticao (que pode ser um simples password), o unbind serve para terminar uma sesso estabelecida com o servidor e o abandon serve para indicar que o cliente no est mais interessado nas repostas que chegarem at ele.

As operaes LDAP de consulta podem abranger a rvore toda (uma busca com escopo subtree) ou apenas um ramo, sem descer ou subir para os demais. Alm de especificar com filtros quais entradas se deseja encontrar, tambm possvel especificar quais atributos destas entradas esto sendo procurados. Se os atributos no forem especificados, todos sero retornados. Por exemplo, na figura 3 ns poderamos querer pesquisar toda a sub-rvore de diretrio abaixo da entrada Devices, procurando por impressoras com o nome Laser Printer, recuperando a resoluo para cada entrada encontrada. O LDAP permite que voc faa isso facilmente.

Como ocorre a troca de mensagens no protocolo LDAP ?


Como em qualquer outro protocolo de comunicao, o protocolo LDAP permite a comunicao entre dois servidores de diretrio ou entre o servidor e seus clientes utilizando, para isso, a troca de mensagens. A troca de mensagens no protocolo LDAP consiste em trs estgios : 1 Abrindo a Conexo 2 Fazendo uma ou mais pesquisas 3 Fechando a conexo No primeiro estgio, o cliente LDAP abre uma conexo TCP com o servidor LDAP utilizando um arquivo texto encriptado por TLS, por exemplo. O cliente, ento, utiliza algum mtodo de autenticao (exemplo: SASL) para se identificar, fornecendo as informaes necessrias para a autenticao (normalmente nome de usurio e senha). Isso chamado de binding. Em alguns casos a conexo no realmente autenticada, mas annima, ento, a mensagem de bind enviada sem identificao de usurio e senha. Aps realizado o bind e as consultas, o cliente deve enviar uma mensagem de unbind para indicar o trmino da sesso. Note que apenas enviando um unbind, a conexo ainda permanece aberta e deve ser encerrada posteriormente com um fechamento de socket TCP, e os servidores tambm devem tratar situaes onde no enviado o unbind e a conexo perdida ou propositalmente fechada. Um exemplo dessa troca de mensagens demonstrado na figura abaixo:

Figura 5 - Estabelecimento de conexo, consulta e fechamento de uma conexo LDAP Na segunda etapa, o cliente envia uma mensagem de consulta, contendo um DN para cada consulta. E para cada mensagem, o cliente tambm gera um ID diferente, o qual o servidor utiliza como uma das informaes de resposta, para que o cliente possa identificar a qual requisio de consulta aquela determinada resposta corresponde. O servidor responde enviando o resultado da pesquisa, com uma mensagem por dado encontrado. Se no forem fornecidos dados a serem pesquisados ou se houver algum erro na pesquisa, o servidor pode no enviar as informaes sobre a solicitao desejada. Por fim, o servidor envia uma mensagem indicando que a pesquisa foi concluda (Result code) que inclui a relao dos resultados obtidos, como mostrado abaixo:

Figura 6 Uma simples pesquisa LDAP Note que se o cliente tiver enviado uma outra solicitao de pesquisa sem aguardar pela finalizao da primeira solicitao, no h problema algum, pois todas as mensagem so devidamente identificadas, tornando o LDAP um protocolo ainda mais gil na pesquisa de informaes, pois com uma mesma conexo aberta pode-se realizar vrias consultas ao invs de ter que abrir uma conexo para cada consulta.

Concluso
Percebe-se que o LDAP possui inmeras reas onde pode ser aplicado, pois se trata de um protocolo leve que no exige muitos recursos computacionais e pode ser utilizado desde pequenas empresas at grandes corporaes para integrao de seus inmeros servios. Alm de possuir uma grande escalabilidade, isto , podem ser adicionadas vrias expanses tanto na linha de operaes funcionais quanto em comandos de controle, o LDAP ainda possui vrias opes para a segurana de dados, pois adota, atualmente, um dos frameworks mais utilizados e flexveis da Internet (SASL). Porm, o LDAP deve ser escolhido como soluo e projetado com muito cuidado, pois ele no se trata de uma substituio definitiva a bancos de dados ou outros servios, como servidores FTP, servidores WEB ou sistemas de arquivos. Deve-se analisar muito bem quais so os requisitos do servio onde se pretende empregar o LDAP, pois, talvez, essa no seja a melhor soluo. Pode at funcionar, mas no com uma eficincia satisfatria.

Bibliografia :
Timothy A. Howes - Ph.D., Mark C. Smith, Gordon S. Good Understanding and Deploying LDAP Directory Services, Second Edition 2003 Ed. Addison Wesley Professional. Lightweight Directory Access Protocol Wikipedia http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol Understanding LDAP - IBM redbook http://www.redbooks.ibm.com/pubs/pdfs/redbooks/sg244986.pdf Sys Admin Guide for Directory Services ftp://docs-pdf.sun.com/816-4856/816-4856.pdf Introduction to OpenLDAP Directory http://www.openldap.org/doc/admin21/intro.html

Você também pode gostar