O objetivo deste Wiki é registrar uma Atividade Complementar do Curso de Redes de Computadores. ---- ==== Dados ==== * Orientador:[[http://olaria.ucpel.edu.br/adenauer/doku.php|Prof. Dr. Adenauer Corrêa Yamin]] * Pesquisa: LDAP - OpenLDAP * G3PD - Grupo de Pesquisa em Processamento Paralelo e Distribuído * [[http://olaria.ucpel.edu.br/rcunha|Ronaldo Cunha]] * E-mail:[[ronaldotads@gmail.com]] ---- ==== Introdução ==== Este trabalho não tem o intuíto de aprofundar o conteúdo sobre o LDAP, mas mostrar uma visão geral do que é o LDAP, para que serve, e como damos inicio a instalação e configuração do servidor. Deixando também referências e bibliografias da confecção do mesmo para quem deseja saber mais sobre o assunto.\\ \\ Contéudo deste wiki disponível em {{ :openldap.pdf |}} ---- ==== LDAP ==== LDAP (//Lightweight Directory Access Protocol//). Traduzindo, é um Protocolo leve de acesso a diretórios ==== O que são serviços de diretórios? ==== Segundo a [[https://wikipedia.org/|Wikipédia]]: "Um **serviço de diretório** é um software que armazena e organiza informações sobre recursos e os usuários de uma rede de computadores, e que permite aos administradores de rede gerenciar o acesso de usuários e sistemas a esses recursos. Além disso, os serviços de diretório atuam como uma camada de abstração entre os usuários e esses recursos. A palavra directory em inglês poderia ser melhor traduzida por catálogo, no sentido de uma lista ordenada com descrição curta dos itens, não necessariamente arquivos" Esta definição deixa claro como são gerenciados o conteúdo de uma rede de computadores através deste serviço. ==== O que faz este serviço? ==== Centraliza a gestão de recursos, ou seja, simplifica o uso para a sua finalidade que é gerenciar aplicações clientes, como por exemplo, autenticar usuários e leitores de e-mail, onde será solicitado informações para que possam ser acessados estes serviços na rede. Neste ponto podemos até confundir com uma banco de dados, mas, não podemos esquecer que estas informações estão no servidor LDAP, este por sua vez é controlado por gerenciadores criados com regras especificas para este fim, ou seja, o uso de diretório. Podemos citar algumas aplicações que fazem uso do LDAP: * Gerenciar logins na rede através de usuários e senhas; * Login para estações que usam Windows que utilizam Samba ou estações com Linux; * Serviços de e-mail(IMAP, POP3, SMTP); * Acesso à internet com uso do proxy; * Cadastro de cliente; * Cadastro de DNS; * Permissões para acesso e administração do Diretório ou partes dele. ==== Funcionamento da estrutura de um Diretório ==== Podemos dizer que no LDAP a estrutura nos lembra uma árvore, esta estrutura serve para organizar e representar também limites. Nesta figura 1 esta representando as entradas de países que representam o topo da estrutura. {{:figura1.png?nolink&400|}} Abaixo (figura 2) esta mostrando o seguimento da estrutura, ou seja, após os países temos os estados. {{:figura2.png?nolink&400|}} Na continuação notamos que, em cada país esta divida nos territórios e suas respectivas empresas, ou seja, temo no Brasil, Curitiba, a empresa separadas pelos seus setores, na imagem (figura 3) abaixo mostra claramente . {{:figura3.jpg?nolink&400|}} Neste modelo, temos a estrutura e a representação de suas entradas: ^ Entrada ^ Significado ^ | c | country - país | | st | stateOrProvinceName - estado | | l | localityName - cidade | | street | streetAddress - endereço | | o | organizationName - organização | | ou | organizationalUnit - unidade organizacional | Na figura 4 temos um modelo de diretório baseado na estrutura de localidade {{:image004.png?nolink&400|}} O armazenamento de dados no servidor de Diretórios segue a hierarquia a qual pertence. Neste exemplo, temos algo assim:\\ \\ '' cn=Ronaldo''\\ ''ou=Secretaria''\\ ''o=empresa''\\ ''st=Rio de Janeiro''\\ ''c=br''\\ Chamamos este tipo de identificação de DN (//Distinguished Name//) ou nome único. O DN serve para indicar todos os ramos da árvore LDAP, desde sua base, que no nosso exemplo é (c=br) até sua parte final, o usuário. Nesta construção de árvore, podemos também usar os Diretórios para usar domínios Internet (dc). Sendo assim, poderá utilizar o serviço DNS para localizar os domínos utilizados. Como exemplo temos a figura 5, {{:figura005.png?nolink&500|}} Neste exemplo podemos notar mudança na entrada, note o DN.\\ ''uid=msungalia''\\ ''ou=usuarios''\\ ''dc=empresa''\\ ''cd=com''\\ ''c=br''\\ ==== Resumindo ==== Com base em (GIL, 2012), o LDAP funciona parecido com diretórios de sistema sem nenhuma ligação com base, ou seja, ele não armazena arquivos e sim recursos. No armazenamento é utilizado objetos e atributos que chamamos de schema, que nada mais é do que um arquivo texto lido pela base LDAP quando usado. Temos também atributos opcionais e obrigatórios que é o ObjectClass. Este atributo conterá o tipo de armazenamento. Com estas definições, notamos que no LDAP os registros são únicos, isso quer dizer que não haverá registros iguais no mesmo diretório. ---- ==== Implementando LDAP através do OpenLDAP ==== Sempre quando vamos implementar algo novo, existem algumas dúvidas. Falando do LDAP, vemos que existem várias alternativas para implantação do mesmo em software proprietário, ou seja, software pago. Também temos alternativa de software aberto, o OpenLDAP. ==== Pré-requisitos - OpenLDAP ==== Sempre quando vamos implementar algo novo podem existir pré-requisitos para o funcionamento do mesmo, no caso do LDAP algumas instalações básicas serão necessárias. Instalações estas que são necessárias para o funcionamento do servidor LDAP. Serão abordados aqui um método que serve para qualquer distribuição. Pois no caso no //Debian//, há uma ferramenta do próprio //Debian//, o //apt-get// ou o //aptitude//. Lembrando que para compilar pacotes temos que ter alguns softwares instalados. Lembrando que a maioria das distribuições já trás programas para compilação por padrão. O básico para esta etapa: * Ferramenta para geração de executáveis - //GNU make//; * Compilador //C// padrão //ISO/ANSI//; * Compactadores// bzip2// e //gzip// * //TAR// - Utilitário para extração de pacotes-fonte * //PATCH// - Utilitário para correções e recursos adicionais\\ Na distribuição Debian basta executar o comando abaixo para instalação. '' //# apt-get install build-essential//'' //Lembrando que os pacotes baixados e que forem compilados, devem estar no diretório ///usr/src//, pois geralmente é local para compilação dos programas.// ==== OpenSSL ==== Outro detalhe é a criptografia do sistema, o OpenSSL disponibiliza ferramentas para tal, disponíveis no site [[http://www.openssl.org/]] Na maioria das distribuições já vem tal ferramenta nativamente, mas, caso haja necessidade do código fonte, basta baixar, compilar e instalar com os comandos a seguir:\\ ''# cd /usr/src''\\ ''# tar -xf openssl-1.0.2o.tar.gz''\\ ''# cd openssl-1.0.2o''\\ ''# ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib''\\ ''# make''\\ ''# make test''\\ ''# make install''\\ ''# ldconfig -v''\\ Não esquecendo que em distribuições que tem o Debian como base, basta usar o comando abaixo para instalação do pacote openssl\\ ''//# apt-get install openssl libssl-1.0.2o//'' ==== Berkeley DB ==== As informações serão armazenadas em alguma base, para este exemplo será usado o Berkeley que pode ser obtido no da [[https://www.oracle.com/database/berkeley-db/index|Oracle]]. Como já dito anterior, aqui também, as distribuições oferecem o gerenciador de pacotes nativamente. Então, tendo necessidade, basta baixar e instalar com estes comandos:\\ \\ ''# cd /usr/src''\\ ''# tar -xf db-4.6.19.tar.gz''\\ ''# cd db-4.6.19/build_unix''\\ ''# ../dist/configure --prefix=/usr/local''\\ ''# make''\\ ''# make install''\\ ''# ldconfig''\\ No caso do //Debian// basta usar o comando a seguir: ''#apt-get install db4.2-util'' No uso do apt-get, será instaladas dependências necessárias ao funcionamento correto desta. ==== Cyrus-SASL ==== O conceito de SASL segundo o site [[ https://enterprise.arcgis.com/pt-br/portal/latest/administer/linux/configure-sasl-authentication.htm|ArcGIS]] - Simple Authentication and Security Layer, é uma estrutura para autenticação e segurança de dados em protocolos de internet. Na maioria das distribuições são oferecidas essa ferramenta de forma nativa, mas, caso haja necessidade de instalação das mesmas, baixe e instale conforme comandoas abaixo: \\ ''# cd /usr/src''\\ ''# tar -xf cyrus-sasl-2.1.27.tar.gz''\\ ''# cd cyrus-sas-2.1.27''\\ ''# ./configure --prefix=/usr --enable-static --mandir=/usr/share/man --infodir=/usr/share/info''\\ ''# make''\\ ''# make install''\\