Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Erich Soares Machado, Universidade de So Paulo <erichmachado@gmail.com> Flavio da Silva Mori Junior, Universidade de So Paulo <flaviomori2001@gmail.com>
Resumo
Esse texto foi escrito como parte do projeto de formatura dos autores, desenvolvido para cumprir as atividades exigidas durante o curso de graduao em Bacharelado em Cincia da Computao do IME-USP. O objetivo oferecer uma apresentao ao servio de diretrio LDAP, atravs de uma abordagem terica e tcnica. Os conceitos tericos so apresentados no primeiro captulo, que serve como introduo para quem no estiver familiarizado com o assunto. A parte tcnica apresentada na forma de um manual de instalao e configurao do servio de diretrio em um ambiente de rede, e de sua integrao com sistemas de autenticao. Nessa parte tambm so apresentados conceitos importantes, porm de maneira aplicada. Alm disso, apresentamos informaes que consideramos de fundamental importncia para o tpico, mas que no se encaixam na estrutura do texto principal, na forma de apndices. Ao final do texto, existe uma seo que no est listada no ndice, com contedo subjetivo a respeito do processo de elaborao do projeto, em conformidade com os requisitos da disciplina MAC0499 (Trabalho de Formatura Supervisionado). Essa seo chama-se Parte Subjetiva.
garantida a permisso para copiar, distribuir e/ou modificar este documento sob os termos da Licena de Documentao Livre GNU [http://www.ic.unicamp.br/~norton/fdl.html] (GNU Free Documentation License [http://www.gnu.org/licenses/fdl.html]), Verso 1.2 ou qualquer verso posterior publicada pela Free Software Foundation; sem Sees Invariantes, Textos de Capa Frontal, e sem Textos de Quarta Capa. Uma cpia da licena includa na seo intitulada "GNU Free Documentation License" [http://www.gnu.org/licenses/fdl.html#TOC1].
ndice
1. Introduo ...................................................................................................................................... 1 Introduo ao LDAP .................................................................................................................... 1 Redes heterogneas ...................................................................................................................... 1 Servios de diretrio .................................................................................................................... 2 Protocolo LDAP .......................................................................................................................... 3 Modelo de informao do LDAP .................................................................................................... 3 Origem do LDAP ........................................................................................................................ 5 Diretrios no contexto do LDAP ..................................................................................................... 6 Implantao ................................................................................................................................ 7 OpenLDAP ................................................................................................................................ 9 Modelos de servios LDAP ........................................................................................................... 9 2. Configurando um servio de diretrio LDAP ....................................................................................... 12 Instalao ................................................................................................................................. 12 Configurao ............................................................................................................................ 12 schema's ........................................................................................................................... 15 servio ............................................................................................................................. 16 segurana ......................................................................................................................... 17 bases de dados ................................................................................................................... 18 Inicializando a base de dados ....................................................................................................... 21 Aumentando a segurana ............................................................................................................. 22 3. Integrao ..................................................................................................................................... 25 NSS ........................................................................................................................................ 25 PAM ........................................................................................................................................ 30 Samba ..................................................................................................................................... 37 4. Ferramentas de gerenciamento .......................................................................................................... 50 Ferramentas de linha de comando .................................................................................................. 50 Slap Tools ........................................................................................................................ 50 LDAP Tools ...................................................................................................................... 50 smbldap-tools .................................................................................................................... 51 MigrationTools .................................................................................................................. 51 Ferramentas grficas ................................................................................................................... 51 phpLDAPadmin ................................................................................................................. 51 GOsa ............................................................................................................................... 53 LAT ................................................................................................................................ 53 5. Ajuda ........................................................................................................................................... 54 Perguntas freqentes (Frequently Asked Questions) .......................................................................... 54 Soluo de problemas (Troubleshooting) ........................................................................................ 54 A. ACL's .......................................................................................................................................... 56 B. Arquivo LDIF ................................................................................................................................ 58 Introduo ................................................................................................................................ 58 Definio do LDIF ..................................................................................................................... 58 C. Gerando um certificado SSL auto-assinado ......................................................................................... 62 D. Operaes do LDAP ....................................................................................................................... 66 Glossrio .......................................................................................................................................... 74 Bibliografia ...................................................................................................................................... 78
iii
Lista de Figuras
1.1. Exemplo de servios em uma rede heterognea .................................................................................... 2 1.2. Exemplo de DIT (Directory Information Tree) ..................................................................................... 4 1.3. Modelo gateway LDAP/DAP ............................................................................................................ 5 1.4. X.500 sobre OSI vs. LDAP sobre TCP/IP ........................................................................................... 5 1.5. Modelo cliente/servidor .................................................................................................................. 6 1.6. Relacionamento entre o cliente LDAP, servidor LDAP e backend ............................................................ 7 1.7. Exemplo de servios em uma rede heterognea com integrao LDAP ..................................................... 8 1.8. Modelo cliente/servidor simples ...................................................................................................... 10 1.9. Modelo cliente/servidor com referncia ............................................................................................ 10 1.10. Modelo cliente/servidor com replicao .......................................................................................... 10
iv
Lista de Tabelas
2.1. Nveis de log do OpenLDAP .......................................................................................................... 17 A.1. Nveis de acesso das ACL's ........................................................................................................... 56
Lista de Exemplos
2.1. Arquivo de configurao /etc/ldap/slapd.conf ....................................................................... 14 2.2. Arquivo base.ldif ................................................................................................................... 21 2.3. Arquivo admin.ldif ................................................................................................................. 21 3.1. Arquivo de configurao /etc/nsswitch.conf ........................................................................... 30 3.2. Arquivo /etc/pam.d/common-account ................................................................................... 35 3.3. Arquivo /etc/pam.d/common-auth ......................................................................................... 35 3.4. Arquivo /etc/pam.d/common-password ................................................................................. 36 3.5. Arquivo de configurao /etc/ldap/ldap.conf ......................................................................... 37 3.6. Arquivo de configurao /etc/ldap/ldap.conf ......................................................................... 39 3.7. Arquivo de configurao /etc/smbldap-tools/smbldap_bind.conf ....................................... 44 3.8. Arquivo de configurao /etc/smbldap-tools/smbldap.conf ................................................. 45 A.1. Uma ACL bsica ......................................................................................................................... 57 B.1. Arquivo LDIF ............................................................................................................................. 59 B.2. Outro arquivo LDIF ..................................................................................................................... 60 B.3. Arquivo LDIF para remover usurio ................................................................................................ 61 C.1. Arquivo do certificado SSL auto-assinado (newreq.pem) ................................................................. 64 C.2. Arquivo da chave privada com senha (newkey.pem) ........................................................................ 64 C.3. Arquivo da chave privada sem senha (openkey.pem) ....................................................................... 65
vi
Captulo 1. Introduo
Resumo
Este captulo descreve o que um servio de diretrio, o protocolo LDAP, e um cenrio (redes heterogneas) em que interessante usar um servio LDAP para organizar e gerenciar as informaes. Tambm descreve formas de implantar esse servio.
Introduo ao LDAP
Redes de computadores esto presentes na maioria das empresas atualmente, devido a grande necessidade de comunicao que as aplicaes distribudas exigem. Muitas dessas aplicaes utilizam os mesmos dados para realizar as suas operaes. Sendo assim, torna-se necessrio buscar uma maneira de organizar essa informao de maneira clara e consistente, de forma a facilitar o acesso s mesmas, reduzir o custo de sua manuteno e por conseqncia aumentar a funcionalidade dos vrios sistemas que a usam. A necessidade de integrao desse tipo de informao motivou o surgimento de um padro aberto que possa atend-la. Esse padro chama-se LDAP (Lightweight Directory Access Protocol), e trata-se de um protocolo que define um mtodo para o acesso e a atualizao de informaes em um diretrio. Diretrio uma espcie de banco de dados, otimizado para leitura e busca. O LDAP define um protocolo de comunicao, ou seja, o transporte e o formato das mensagens utilizadas pelo cliente para acessar os dados que esto armazenados em um diretrio do tipo X.500. O padro X.500 organiza as entradas do diretrio em um espao de nomes hierrquico (uma rvore) capaz de incorporar grandes volumes de informao. O LDAP tambm define mtodos de busca poderosos o suficiente para tornar a recuperao dessa informao fcil e eficiente. Ele no define o servio de diretrio em si. Com o LDAP, o cliente no dependente da implementao em particular do servio de diretrio que est no servidor.
Redes heterogneas
Todo ambiente de rede precisa armazenar informaes para possibilitar o seu gerenciamento (autenticao, grupos de usurios, permisses, cotas de armazenamento e impresso, compartilhamentos e etc.). Hoje em dia, a maioria das grandes organizaes possui ambientes de rede heterogneos, com vrias plataformas presentes (Linux, Windows, Solaris) e com redes virtuais fisicamente conectadas, muitas vezes distribudas geograficamente. Um exemplo de organizao desse tipo a Universidade de So Paulo, que possui uma grande rede de dados interconectando todos os seus campi, espalhados pelo estado.
Introduo
Esse exemplo ilustra uma rede heterognea composta de um ambiente Windows e um ambiente Linux. Apesar de ambos os ambientes estarem fisicamente conectados (utilizando a mesma infra-estrutura), no existe comunicao entre os servios e a informao usada para administrar os recursos no est sendo compartilhada. Um problema decorrente desse tipo de implantao que para cada plataforma ou para cada rede local virtual existente no ambiente de rede (rede fsica), necessrio suprir essas mesmas informaes de gerenciamento. Se no for adotada uma boa soluo de gerenciamento, podem surgir problemas decorrentes da replicao desses dados. Os principais so: redundncia, falta de sincronia nas informaes, dificuldade de organizao, maior custo no suporte e falta de segurana.
Servios de diretrio
Um diretrio um repositrio de informaes sobre objetos, organizados segundo um critrio que facilite a sua consulta. Dois exemplos prticos de diretrios que usamos no nosso cotidiano so: uma lista telefnica e um dicionrio. Ambos armazenam informaes para consulta, ordenadas para facilitar a busca por uma entrada: a lista telefnica organiza as entradas em ordem alfabtica pelo nome da pessoa e o dicionrio organiza as entradas tambm em ordem alfabtica, por verbete. O modo como o diretrio usado pode ser descrito como white pages ou yellow pages. Se o nome do objeto conhecido, possvel recuperar suas caractersticas. Isso semelhante a procurar um nome de uma pessoa em uma lista telefnica residencial (white pages). Se o nome de um objeto em particular no conhecido, possvel fazer uma busca no diretrio em busca de objetos que cumpram certos requerimentos. Isso semelhante a procurar um dentista em uma lista telefnica comercial (yellow pages). Servio de diretrio um servio de armazenamento de informaes otimizado para busca e leitura. Eles tendem a conter informaes descritivas baseadas em atributos, para assim suportarem algum mecanismo de filtragem. Por exemplo, buscar em um servio de diretrio da cidade de So Paulo, mulheres entre 18 e 25 anos e que sejam solteiras. Alm disso, eles tm que ser extensveis, para servirem a uma gama maior de aplicaes e propsitos. Um servio de diretrio pode armazenar os telefones de bares e casas noturnas
Introduo
de So Paulo. Se ele aceitar tambm endereos como atributos, o servio pode ser estendido, acoplandoo a um guia de ruas. Servios de diretrio e bancos de dados compartilham vrias caractersticas importantes, como buscas rpidas e um esquema extensvel. A diferena que um servio de diretrio projetado mais para leitura do que para escrita, enquanto que em um banco de dados assumimos que as operaes de leitura e de escrita ocorrem mais ou menos com a mesma freqncia. Portanto, para os servios de diretrio no so essenciais certas caractersticas que so a bancos de dados, que permitem lidar com um grande volume de atualizaes complexas. Dentre elas esto suporte a transaes1 (transactions) e travas de escrita (write locks). A maioria dos bancos de dados suportam um mtodo de acesso padro e muito poderoso chamado SQL (Structured Query Language). Os servios de diretrio usam um protocolo de acesso simplificado. J que eles no fornecem todas as funes que um banco de dados, eles podem ser otimizados para fornecer economicamente dados para leitura a um maior nmero de aplicaes, em um ambiente distribudo. As atualizaes dos diretrios so tipicamente simples. Os servios de diretrios so ajustados para dar resposta rpida a operaes de busca em grande volume. Assim sendo, eles podem ter a habilidade de replicar informao com o objetivo de aumentar a disponibilidade e a confiabilidade, alm de reduzir o tempo de resposta. Quando a informao do diretrio replicada, aceitvel que aconteam inconsistncias temporrias entre as rplicas, desde que elas se sincronizem eventualmente. Alguns servios de diretrio so locais, fornecendo servio a um contexto restrito como, por exemplo, o programa finger em uma mquina Linux/Unix. Outros servios so globais, fornecendo servio para um contexto mais abrangente, como por exemplo, o DNS (Domain Name System) da Internet. Os servios globais so geralmente distribudos, os dados que eles contm esto espalhados em vrias mquinas, cada uma cooperando para fornecer o servio de diretrio final. Tipicamente um servio global define um espao de nomes que d a mesma viso dos dados, no importando onde voc est. Por exemplo, uma pesquisa no DNS deve retornar o mesmo resultado, independente de em qual computador foi realizada a busca.
Protocolo LDAP
LDAP (Lightweight Directory Access Protocol ou Protocolo Leve de Acesso a Diretrio) um protocolo leve para acessar servios de diretrio baseados nos padres X.500, que funciona sobre TCP/IP. O conjunto original das principais definies do LDAP (Verso 3) est nos RFC's 2251-2256. As especificaes tcnicas esto no [RFC3377 "Lightweight Directory Access Protocol (v3): Technical Specification" [ftp://ftp.rfc-editor.org/in-notes/rfc3377.txt]]. Alm desses, existem outros RFC's que definem outras caractersticas do LDAP. LDAP baseado no modelo cliente/servidor e a comunicao assncrona. Ou seja, um cliente pode fazer mltiplas requisies e as respostas dadas pelo servidor podem chegar em qualquer ordem.
Transaes so operaes all-or-nothing, ou seja, que s devem ser realizadas totalmente, no podendo ser concludas parcialmente.
Introduo
No LDAP, as entradas do servio de diretrio so organizadas em uma estrutura de rvore hierrquica. Essa rvore conhecida como DIT (Directory Information Tree). Tradicionalmente essa estrutura refletia os limites geogrficos ou organizacionais. Entradas representando pases aparecem no topo da rvore. Abaixo delas esto entradas representando estados (Unidades Federativas). Abaixo delas podem estar entradas representando unidades organizacionais, pessoas, impressoras, documentos ou qualquer outra coisa. A rvore tambm pode ser organizada conforme os nomes de domnios da Internet. Essa forma de nomenclatura est se tornando cada vez mais popular, j que permite ao servio de diretrio ser localizado usando o DNS.
Alm disso, possvel controlar quais atributos so requeridos e permitidos em uma entrada, atravs do uso de um atributo especial chamado objectClass (classe do objeto). Os valores do atributo objectClass determinam o que ela representa e quais regras a entrada dever obedecer. Uma entrada referenciada pelo seu Nome Distinto (DN), o qual construdo pegando o nome da entrada, chamado RDN (Relative Distinguished Name ou Nome Distinto Relativo), e concatenando os nomes de suas entradas antecessoras. Por exemplo, a entrada "Arnaldo Mandel" no exemplo de nomenclatura da Internet acima, tem um RDN de uid=am e um DN de uid=am,ou=Pessoas,dc=ime,dc=usp,dc=br. O formato completo do DN descrito no [RFC2253 "Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names" [ftp://ftp.rfc-editor.org/in-notes/rfc2253.txt]].
Introduo
LDAP define operaes para interrogar e atualizar o servio de diretrio. Operaes so fornecidas para adicionar e apagar uma entrada do diretrio, modificar uma entrada existente, e modificar o nome da entrada. A operao de busca do LDAP permite a certas partes do diretrio serem pesquisadas em busca de entradas que obedeam certos critrios especificados por um filtro de busca. Por exemplo, voc pode querer procurar na sub-rvore cuja raiz dc=ime,dc=usp,dc=br por pessoas cujos nomes sejam "Arnaldo Mandel", recuperando o endereo de e-mail de cada entrada achada. O LDAP permite que voc faa isso facilmente. fornecido um mecanismo para o cliente autenticar-se, ou comprovar sua identidade para um servio de diretrio. O LDAP tambm suporta servios de segurana de dados (integridade e confidencialidade).
Origem do LDAP
LDAP um protocolo de acesso a diretrios do tipo X.500, o servio de diretrio OSI (Open Systems Interface). Inicialmente, os clientes LDAP acessavam gateways para o servio de diretrio X.500. Esse gateway (tambm chamado de proxy ou front-end) rodava LDAP entre o cliente e o gateway; e rodava o DAP (Directory Access Protocol ou Protocolo de Acesso a Diretrio) X.500 entre o gateway e o servidor X.500. O X.500 um protocolo pesado, que opera sobre a pilha completa de protocolos OSI e requer uma quantidade significante de recursos computacionais. O LDAP projetado para operar sobre TCP/IP e fornece a maioria das funcionalidades do X.500 com um custo muito menor.
O LDAP considerado leve, pois no precisa rodar na pilha de sete camadas OSI, como o protocolo da camada de aplicao X.500. Os pacotes X.500 carregam mais bagagem, pois precisam de cabealhos para cada uma das camadas da pilha de protocolos OSI. A suite de protocolos TCP/IP, na qual o LDAP roda, tambm necessita de cabealhos nos pacotes, mas tem um overhead menor.
Introduo
O segundo motivo que o LDAP omite vrias operaes do X.500 que so raramente usadas. LDAPv3 possui apenas nove operaes principais e fornece um modelo mais simples para os programadores e administradores. Assim possvel que eles se foquem mais na semntica de seus programas, sem terem que se preocupar com caractersticas do protocolo raramente usadas. Alm do LDAP ainda ser usado para acessar o servio de diretrio X.500 atravs de gateways, LDAP tambm agora implementado direto em servidores LDAP do tipo X.500. Note o uso de "do tipo X.500" em vez de simplesmente "X.500", pois um servidor X.500 no entende mensagens LDAP. O segundo uso o mais comum atualmente, pois atende a praticamente todas necessidades.
A princpio, base de dados e banco de dados so a mesma coisa. Porm, normalmente quando usamos o termo banco de dados, estamos nos referindo a um banco de dados relacional. Portanto adotamos nesta monografia a conveno de usarmos base de dados quando nos referimos a qualquer tipo de banco de dados, o que inclui at mesmo um arquivo de texto, e usamos banco de dados para nos referirmos a um banco de dados relacional.
Introduo
O cliente no ter (ou pelo menos no deveria ter) informaes a respeito do mecanismo de armazenamento que est sendo usado. Assim sendo, clientes e servidores LDAP podem se comunicar, independentemente de quais empresas os produziram. J se pensou em usar um servidor LDAP como backend para um servidor Web. Todos os HTML's e os arquivos grficos ficariam armazenados no diretrio para serem lidos por vrios servidores Web. Afinal, um servidor Web normalmente somente l arquivos e os manda para seus clientes; e esses arquivos no mudam com muita freqncia. Apesar de ser possvel implementar um servidor Web que use LDAP para acessar seu backend, j existe um tipo especial de diretrio para servir arquivos, chamado sistema de arquivo. O LDAP foi criado para atender uma certa gama de problemas, no sendo destinado a substituir diretrios especializados, como sistemas de arquivo e o DNS.
Implantao
Uma soluo cada vez mais empregada para este cenrio armazenar as informaes do ambiente de rede em um diretrio, atravs de um servio de diretrio LDAP. Isso torna possvel acessar de forma padronizada, gil e segura, todas essas informaes. Portanto todos os servios da rede (autenticao, compartilhamento, impresso, e-mail, etc.) buscaro as informaes de que precisam nesse diretrio, de forma integrada. A seguir est o exemplo da mesma rede heterognea mostrada anteriormente, utilizando um servidor LDAP para integrao dos servios.
Introduo
Figura 1.7. Exemplo de servios em uma rede heterognea com integrao LDAP
Esse exemplo ilustra uma rede heterognea utilizando um servidor LDAP para integrao dos servios. Uma maneira de disponibilizar um servio de diretrio LDAP utilizando solues livres disponveis atualmente. Um exemplo de implantao desse tipo instalar um servidor OpenLDAP, integrando-o ao PAM (Pluggable Authentication Modules) para realizar a autenticao dos clientes Linux/Unix, e integrandoo ao Samba para autenticar os clientes Windows. Toda a comunicao entre os servios pode ser protegida atravs do suporte TLS (Transport Layer Security).
Introduo
OpenLDAP
OpenLDAP uma sute de aplicativos LDAP open-source, que inclui todas as ferramentas necessrias para fornecer um servio de diretrio LDAP em um ambiente de rede (clientes, servidores, utilitrios e ferramentas de desenvolvimento), disponvel para vrias plataformas (Linux, Solaris, MacOS). uma soluo considerada madura hoje em dia e possui amplo suporte, sendo largamente utilizada como alternativa s implementaes comerciais existentes (Microsoft Active Directory, Novell eDirectory, Sun Java System Directory Server, etc.). Ele implementa a verso 3 do LDAP, a verso mais recente do protocolo e que o padro atualmente, e suporta LDAP em IPv4, IPv6 e Unix IPC. O projeto OpenLDAP uma continuao do servidor LDAP da Universidade de Michigan. O OpenLDAP possui suporte a threads para aumentar a performance de seu servidor, reduzindo o overhead requerido para atender as mltiplas requisies que chegam dos clientes. O daemon que implementa o servidor LDAP o slapd. Alm desse daemon, existe um outro, o slurpd, que usado quando se deseja fornecer um servio replicado de diretrio. Ele explicado em mais detalhes na prxima seo. O OpenLDAP fornece vrias opes para segurana, como suporte a TLS, SSL e SASL. Alm disso, o acesso s informaes pode ser restrito baseado na topologia da rede, endereos IP, nome de domnio e outros critrios. O slapd pode ser configurado para servir a mltiplos bancos de dados ao mesmo tempo, ou seja, um nico servidor slapd pode responder a requisies de vrias pores diferentes da rvore LDAP, usando o mesmo ou vrios backends de base de dados. O OpenLDAP vem com vrias opes de backends de armazenamento. Eles incluem BDB, um backend transacional de alta performance; HDB, um backend transacional hierrquico de alta performance; LDBM, um backend leve baseado no DBM; SHELL, uma interface de backend para scripts shell arbitrrios; e PASSWD, uma interface simples de backend para o arquivo /etc/passwd. Os backends BDB e HDB utilizam o BD Sleepycat Berkeley. O LDBM utiliza o Berkeley ou o GDBM.
Introduo
O servio pode ser local, assim um servidor LDAP rodando em uma mquina fornece servio de diretrio apenas para o domnio local.
Ele tambm pode ser local com referncias, assim ele fornece o servio de diretrio para o domnio local e retorna referncias para um outro servidor capaz de lidar com requisies para fora do domnio. Essa configurao usada caso se deseje que o servio participe de um "diretrio global".
O servio pode ser replicado. Nessa configurao, o slurpd usado para sincronizar as alteraes realizadas na base de dados do slapd master para as outras rplicas do slapd. O slapd e o slurpd comunicam-se atravs de um arquivo de texto que usado como um log de alteraes. Essa configurao pode ser usada em conjunto com qualquer uma das duas primeiras configuraes, em situaes em que um nico slapd no fornece a disponibilidade ou a confiabilidade requerida. Existe um outro mtodo de replicao, o LDAP Sync, o qual no entraremos em detalhes.
10
Introduo
Uma outra configurao possvel, o servio de diretrio local ser particionado em vrios servios menores, onde cada um armazena as informaes de uma sub-rvore. Ento podemos junt-los atravs de referncias, para formar o servio de direttio final.
11
Instalao
Execute os seguintes comandos para instalar o pacote necessrio no servidor: 1. Atualize as listas dos repositrios
usuario@ldapserver:~$ sudo aptitude install ldap-server Este pacote no um pacote real, ele aponta para o pacote slapd. Durante a configurao ele vai pedir uma senha para o administrador do LDAP, voc pode deix-la em branco se quiser. Vamos explicar como criar um novo arquivo de configurao a seguir.
Dica
Sempre mantenha uma cpia dos arquivos de configurao gerados automaticamente durante a instalao dos pacotes, eles podem servir como referncia caso algum parmetro de configurao sofra alteraes em verses mais atualizadas.
Configurao
O arquivo de configurao1 do servio de diretrio da sute OpenLDAP (slapd) o /etc/ldap/slapd.conf. Esse arquivo possui vrios parmetros que configuram desde a execuo do servio slapd at o backend de banco de dados que ser utilizado, assim como os ndices que devem ser gerados para agilizar as buscas e tambm a senha de administrao para acessar o diretrio. Ou seja, esse arquivo a pea chave da implantao e sua configurao deve ser feita com bastante rigor. Devemos tambm nos certificar de que o acesso a esse arquivo estar restrito.
Atualmente existe uma maneira alternativa de armazenar as configuraes do servio de diretrio slapd, que dentro de um diretrio LDAP, na forma de um DIT. Ou seja, usando a prpria estrutura que o servio disponibiliza. A configurao nesse caso carregada atravs de um arquivo LDIF e a vantagem a de que existe a possibilidade de alterar os parmetros em tempo de execuo, isto , sem a necessidade de reiniciar o servidor, atravs de comandos de acesso ao diretrio. Porm, atualmente existem problemas de compatibilidade com alguns backends e com o sistema de replicao. Sendo assim preferimos adotar o modo "antigo".
12
Configurando um servio de diretrio LDAP As seguintes regras, comuns aos arquivos de configurao de sistemas Unix, so vlidas para o /etc/ldap/slapd.conf: Linhas em branco e linhas comeando com # so ignoradas. Parmetros e valores associados so separados por caracteres em branco (espao ou tabulao). Linhas com espaos em branco na primeira coluna sero consideradas como continuao da linha anterior.
13
bind_v2
# bases de dados backend bdb checkpoint 512 30 ## base de dados no. 1 database bdb suffix "dc=ime,dc=usp,dc=br" directory "/var/lib/ldap" index objectClass eq rootdn "cn=admin,dc=ime,dc=usp,dc=br" rootpw {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ== lastmod on mode 0600 cachesize 2000 ## ACL's para a base de dados no. 1 access to attrs=userPassword by dn.base="cn=admin,dc=ime,dc=usp,dc=br" write by anonymous auth by self write by * none access to * by dn.base="cn=admin,dc=ime,dc=usp,dc=br" write by * read ###################################################################
14
Ateno
O arquivo /etc/ldap/slapd.conf contm informaes sigilosas. No se esquea de ajustar as permisses deste arquivo para 600 e certifique-se de que o seu proprietrio seja o usurio root. Os parmetros de configurao do arquivo /etc/ldap/slapd.conf podem ser organizados em sees que ajustam cada aspecto do servio. Se organizados em sees, podemos dividir os parmetros como abaixo: schema's servio segurana bases de dados
Essa estrutura ser adotada neste texto de forma a facilitar a explicao de cada parmetro.
Importante
A ordem de alguns parmetros no arquivo de configurao significativa. Se resolver adotar outro tipo de organizao, consulte a manpage do arquivo /etc/ldap/slapd.conf antes de mudar um parmetro de lugar.
schema's
Os arquivos de schema definem que tipo de informao poder ser armazenada no diretrio, de acordo com as necessidades de cada aplicao que ir acess-lo. Em outras palavras, eles definem quais atributos estaro disponveis para cada entrada adicionada rvore do diretrio. O pacote slapd contm alguns arquivos de schema por padro. O principal deles o core.schema, que prov a funcionalidade bsica do servio. A maioria dos schema's inclusos fornecem a estrutura necessria para o armazenamento de informaes de autenticao e suporte a aplicaes distribudas. O seguinte exemplo exibe a seo de schema's que utilizaremos por enquanto:
Cada schema a ser utilizado pelo servidor deve ser declarado atravs do parmetro include. Arquivos de schema possuem dependncias entre si, ou seja, para utilizar um determinado schema em seu diretrio deve-se declarar tambm todos os arquivos dos schema's dos quais ele depende. Os schema's normalmente encontram-se armazenados dentro do subdiretrio schema, que reside no mesmo diretrio onde as configuraes do servio esto armazenadas. Na distribuio Ubuntu, os schema's esto localizados em /etc/ldap/schema.
15
Configurando um servio de diretrio LDAP Os schema's adicionados no exemplo acima so os necessrios para prover um servio bsico de autenticao em ambientes Linux/Unix. Mais arquivos de schema's podem ser includos para aumentar a versatilidade do diretrio ao torn-lo compatvel com outros servios da rede. core.schema Ncleo do OpenLDAP. Esse schema obrigatrio para que o servio funcione. O schema cosine.schema pr-requisito do nis.schema. Contm a estrutura de atributos bsica para armazenar informaes de autenticao de usurios Linux/Unix. Especifica os atributos utilizados para armazenar informaes de catlogo de endereos (informaes sobre os usurios).
cosine.schema nis.schema
inetorgperson.schema
O parmetro schemacheck serve para configurar se as entradas adicionadas ou modificadas na base de dados sero verificadas para garantir que obedeam s regras impostas por cada schema includo.
servio
Essa seo configura alguns aspectos gerais do servio de diretrio. Existem parmetros que controlam a quantidade de informaes que ser gerada nos arquivos de log, assim como o local onde sero armazenadas as informaes sobre o processo em execuo no servidor. Tambm configuramos quais mdulos devero ser carregados. Abaixo temos um exemplo dessa seo contendo os principais parmetros:
Esses parmetros so explicados abaixo: Esse parmetro especifica o local absoluto do arquivo que contm o PID (Process ID) pidfile nomedoarquivo do processo slapd em execuo no servidor. Esse parmetro especifica o local absoluto do arquivo que contm os parmetros de linha argsfile nomedoarquivo de comando utilizados pelo processo slapd em execuo no servidor. loglevel nveldelog Esse parmetro configurado atravs de um inteiro, que representa os tipos de informao que devem ser guardados nos arquivos de log do servio. Esses nveis de informao esto listados na Tabela 2.1, Nveis de log do OpenLDAP. Especifica o diretrio onde esto os mdulos que sero carregados dinmicamente.
modulepath caminho
16
Configurando um servio de diretrio LDAP moduleload mdulo Carrega um determinado mdulo. No caso estamos carregando o mdulo que dar suporte backend BDB (Sleepycat Berkeley Database v4).
1024 Comunicao com backends de shell 2048 Depurao da anlise sinttica (parsing) das entradas No exemplo, configuramos o nvel de log para 296, que igual a 8 + 32 + 256. Ou seja, estamos guardando informaes relacionadas ao gerenciamento da conexo, processamento do filtro de pesquisa e estatsticas para conexo, operaes e resultados. Recomenda-se utilizar pelo menos o nvel de log 256. Toda essa informao ser armazenada atravs do sistema syslog LOG_LEVEL4. Para gravar os log's do slapd em um arquivo diferente, configure o arquivo /etc/syslog.conf e reinicie o servio syslogd. Um exemplo de configurao seria adicionar a seguinte linha ao /etc/syslog.conf:
Ateno
Se nenhum dado estiver sendo guardado com essa configurao, tente criar um arquivo de log vazio com o comando touch. Algumas verses do syslog precisam que o arquivo de log exista antes que comecem a escrever as informaes nele.
segurana
Aspectos mais especficos relacionados a segurana sero abordados posteriormente na seo Aumentando a segurana. Por enquanto vamos configurar apenas um parmetro relacionado com a compatibilidade com verses anteriores do protocolo:
# segurana
17
O parmetro allow e seu complementar disallow permitem especificar algumas permisses do servio. Nessa linha estamos permitindo que clientes LDAP conectem ao nosso diretrio utilizando a verso 2 do protocolo. Atualmente a sute OpenLDAP utiliza a verso 3, mas mantm o suporte verso 2 pois muitos aplicativos, principalmente clientes de e-mail, ainda a utilizam.
bases de dados
Aqui concentramos todos os parmetros relacionados s bases de dados que armazenaro as informaes do diretrio. Primeiro definimos as opes que so especficas de cada backend utilizado, depois criamos as instncias de bases de dados.
# bases de dados backend bdb checkpoint 512 30 ## base de dados no. 1 database bdb suffix "dc=ime,dc=usp,dc=br" directory "/var/lib/ldap" index objectClass eq rootdn "cn=admin,dc=ime,dc=usp,dc=br" rootpw {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ== lastmod on mode 0600 cachesize 2000 ## ACL's para a base de dados no. 1 access to attrs=userPassword by dn.base="cn=admin,dc=ime,dc=usp,dc=br" write by anonymous auth by self write by * none access to * by dn.base="cn=admin,dc=ime,dc=usp,dc=br" write by * read 1. Configurando opes que afetaro todas as bases de dados A diretiva backend permite configurar as opes especficas de cada backend. No exemplo, estamos configurando opes que so especficas da backend BDB. Todas as opes listadas abaixo dessa diretiva sero aplicadas essa backend at que exista outra diretiva backend no arquivo de configurao. As opes de uma determinada backend configuradas utilizando essa diretiva afetaro todas as instncias de bases de dados que a usam. Por exemplo, se estivssemos utilizando duas bases de dados, cada uma utilizando uma backend diferente, poderamos incluir duas diretivas backend para configurar as opes especficas a cada uma das backends.
18
Configurando um servio de diretrio LDAP O parmetro checkpoint kbyte min define quando os buffers da base de dados BDB devem ser gravados no disco, como medida de segurana para evitar possveis perdas. Um limite em kbytes e um outro em minutos fornecido, o que vencer primeiro dispara o checkpoint e grava uma entrada no arquivo de log para registrar o evento. Esse parmetro especfico da backend BDB e recomendado pela configurao padro do pacote slapd na distribuio Ubuntu. Para maiores informaes sobre as opes especficas do BDB, consulte a manpage slapd-dbd. 2. Adicionando bases de dados ao diretrio A diretiva database inicia uma nova instncia de uma base de dados, utilizando a backend especificada. Todos os parmetros colocados depois dessa diretiva sero aplicados a essa instncia, at que exista outra diretiva database. Pode ser interessante, por exemplo, criar bases de dados diferentes para armazenar cada sub-rvore do diretrio, ou distribuir essas sub-rvores entre vrios servidores e configur-los de forma que um referencie o outro quando for consultado sobre uma partio do diretrio que no est armazenada localmente (semelhante maneira como o servio de DNS funciona). Os seguintes parmetros configuram a instncia de base de dados: database Define a backend utilizada pela instncia de base de dados. BDB a backend recomendada atualmente pela documentao do OpenLDAP e tambm a utilizada por padro na distribuio Ubuntu. Determina o contexto do diretrio que ser servido por essa base de dados, especificando qual ser a sua raiz. No nosso exemplo configuramos o contexto como sendo a raiz do nosso domnio, pois vamos colocar todo o nosso diretrio em apenas uma instncia de base de dados. O sufixo escrito utilizando atributos no padro X.500. Configura o local onde sero armazenados os arquivos da base de dados. Se estiver utilizando mais de uma instncia de base de dados, uma boa prtica armazenar os arquivos de cada uma em um subdiretrio diferente. Especifica para quais atributos o slapd deve manter ndices de forma a otimizar as operaes de busca. Existem quatro tipos de ndices, e o suporte de um tipo de ndice por parte de um atributo determinado pelo arquivo de schema ao qual o atributo pertence. Os quatro tipos de ndices so: approx Indexa a informao de acordo com uma combinao aproximada ou (appr oximate) fontica dos valores dos atributos. Indexa a informao de acordo com a combinao exata dos valores dos eq (equality) atributos. Essa combinao pode ser sensvel a maisculas/minsculas ou a espaos em branco, de acordo com as regras definidas na sintaxe do atributo. Indexa a informao de acordo com a presena de valores. Se um atributo pres (presence) no possui um valor, ento ele no estar presente na entrada do diretrio para efeito de busca. Indexa a informao para realizar pesquisas por substrings dentro dos sub (substring) valores dos atributos.
suffix
directory
index
19
Configurando um servio de diretrio LDAP Pode-se definir mais de um tipo de ndice para o parmetro index, desde que seja suportado pelo atributo e eles estejam separados por vrgula. Tambm podem existir vrias definies index para uma mesma base de dados. rootdn Um diretrio LDAP pode ter um usurio root, semelhante ao super-usurio dos sistemas Linux/Unix. Quando autenticado, tem acesso irrestrito ao diretrio e por essa razo muitos administradores preferem no configur-lo. O nome do rootdn arbitrrio e ele no precisa ser um usurio do sistema, apenas do diretrio. Normalmente utiliza-se nomes como admin ou manager. Esse parmetro no obrigatrio. Especifica a hash que contm a senha do rootdn e o algoritmo utilizado para gerla. Utilize o comando slappasswd para gerar a hash que ser utilizada. A hash listada no exemplo foi gerada com o comando slappasswd -h {MD5} -s secret. Se o administrador optar por no configurar um rootdn para o diretrio esse parmetro no necessrio. Grava informaes de tempo em cada modificao e criao das entradas no diretrio. Necessrio para o caching no lado do cliente, pois permite verificar quando a informao foi atualizada. Modo em que os arquivos sero criados. recomendvel permitir acesso de gravao e leitura apenas ao proprietrio do processo slapd (0600), que normalmente ser o usurio root do sistema. Parmetro para melhorar a performance do banco de dados. Especifica quantas entradas devem ser armazenadas em cache na memria.
rootpw
lastmod
mode
cachesize
3.
ACL's As ACL's (Access Control Lists) definem quem tem acesso a qual informao no diretrio. Sua sintaxe muito flexvel e no entraremos em detalhes nessa seo, se quiser saber mais a respeito de sua implementao consulte o Apndice A, ACL's no final do texto. A ordem das ACL's tambm relevante, sendo que as que contm as regras mais restritivas devem aparecer antes das mais gerais para que tenham efeito. As configuraes das ACL's sero aplicadas apenas instncia de base de dados que as contm. A primeira configurao listada no exemplo garante direito de acesso ao atributo userPassword para escrita (e conseqentemente leitura) ao usurio admin, para autenticao aos usurios annimos e para escrita aos usurios autenticados (apenas para as suas prprias entradas), ou seja, permite que os usurios alterem a prpria senha. A segunda configurao garante direito de acesso todo o diretrio para escrita (e conseqentemente leitura) ao usurio admin e para leitura aos demais usurios. Verifique que como a primeira ACL mais restritiva, ela vai impedir que a segunda ACL garanta direito de leitura das senhas aos usurios comuns. Se a ordem estivesse invertida, a primeira ACL listada perderia seu efeito. Como dissemos anteriormente, muitos administradores preferem no especificar um rootdn para o diretrio por questes de segurana. Um dos motivos o de que ser necessrio armazenar a hash da senha no arquivo de configurao do slapd, o que inconveniente, mesmo estando com os arquivos devidamente protegidos. O outro motivo o de que existir um usurio no diretrio para o qual nenhuma ACL ter efeito, tornando-o um perigo em potencial. A alternativa existente no definir
20
Configurando um servio de diretrio LDAP um rootdn e criar um usurio administrador, determinando suas permisses explicitamente atravs das ACL's. Definimos o rootdn nesse caso apenas para ilustrar uma possibilidade de configurao.
Dica
Ao finalizar a configurao do seu arquivo /etc/ldap/slapd.conf, execute o comando slaptest para verificar se est tudo certo:
21
usuario@ldapserver:~$ sudo slapcat dn: dc=ime,dc=usp,dc=br objectClass: domain dc: ime structuralObjectClass: domain entryUUID: 88c92866-175a-102b-91c6-8d4ba6b5c9fa creatorsName: cn=admin,dc=ime,dc=usp,dc=br modifiersName: cn=admin,dc=ime,dc=usp,dc=br createTimestamp: 20061203204228Z modifyTimestamp: 20061203204228Z entryCSN: 20061203204228Z#000001#00#000000 dn: cn=admin,dc=ime,dc=usp,dc=br objectClass: organizationalRole objectClass: simpleSecurityObject cn: admin description: Administrador do LDAP userPassword:: e01ENX1YcjRpbE96UTRQQ09xM2FRMHFidWFRPT0= structuralObjectClass: organizationalRole entryUUID: 8d3995ca-175a-102b-8057-e850202b49a7 creatorsName: cn=admin,dc=ime,dc=usp,dc=br modifiersName: cn=admin,dc=ime,dc=usp,dc=br createTimestamp: 20061203204235Z modifyTimestamp: 20061203204235Z entryCSN: 20061203204235Z#000001#00#000000
Aumentando a segurana
Antes de colocar o servio de diretrio em um ambiente de produo, recomendvel fazer alguns ajustes para garantir que as informaes consultadas pelos clientes no sejam vistas por pessoas no-autorizadas. Tendo em vista que na maioria das redes, os servios que consultaro as informaes contidas no diretrio (como autenticao, por exemplo) no estaro necessariamente no mesmo servidor que contm o servio de diretrio, torna-se necessrio lanar mo de recursos que permitam uma comunicao segura entre as mquinas. Um desses recursos, disponibilizado pelo slapd, o suporte a transaes TLS (Transport Layer Security). O TLS uma espcie de reimplementao do SSL, mais eficiente e segura, e por isso tem sido adotada na maioria dos servios atualmente. Para configurar o suporte a TLS no slapd, primeiro precisamos criar um certificado SSL, conforme descrito no Apndice C, Gerando um certificado SSL auto-assinado. Com os arquivos do certificado devidamente gerados, vamos agora armazen-los no local correto segundo a distribuio Ubuntu. 1. Copie o arquivo do certificado para o diretrio /etc/ssl/certs, com o nome seguindo o mesmo padro da distribuio:
22
Configurando um servio de diretrio LDAP 2. Copie o arquivo da chave privada sem senha para o diretrio /etc/ssl/private, seguindo tambm esse padro:
Cuidado
O arquivo contendo a chave privada do certificado que ser usado pelo slapd precisa ser armazenado sem a senha de proteo, caso contrrio o servio poder travar ao tentar iniciar automaticamente junto com o sistema operacional. Apenas utilize um arquivo protegido por senha se voc quiser inicializar o servio de diretrio manualmente. Agora precisamos ajustar as permisses adequadas para esses arquivos. 1. Primeiro proteja o arquivo contendo a chave privada:
usuario@ldapserver:~$ sudo chown root:ssl-cert /etc/ssl/private/s sl-cert-ldapserver.key usuario@ldapserver:~$ sudo chmod 640 /etc/ssl/private/ssl-certldapserver.key 2. Em seguida ajuste o acesso ao arquivo do certificado:
usuario@ldapserver:~$ sudo chown root:root /etc/ssl/certs/ssl-cer t-ldapserver.pem usuario@ldapserver:~$ sudo chmod 644 /etc/ssl/certs/ssl-certldapserver.pem Agora precisamos alterar a seo de segurana do arquivo /etc/ldap/slapd.conf, para que ela fique dessa maneira:
# segurana allow
TLSCACertificateFile
O certificado que criamos auto-assinado, por isso configuramos o parmetro do certificado do CA (TLSCACertificateFile) com o mesmo arquivo que o parmetro do certificado do servidor (TLSCertificateFile). Caso esteja usando um certificado assinado por uma CA ao invs de um certificado auto-assinado, ajuste o parmetro TLSCACertificateFile para o certificado da CA responsvel pela sua emisso, que deve estar contido no servidor.
23
Configurando um servio de diretrio LDAP Para que as alteraes tenham efeito, necessrio reiniciar o servio slapd:
usuario@ldapserver:~$ sudo /etc/init.d/slapd restart Stopping OpenLDAP: slapd. Starting OpenLDAP: running BDB recovery, slapd. Se o servio iniciar normalmente, sinal de que tudo correu bem. Caso contrrio, ocorreu algum erro na configurao ou nos arquivos do certificado. Verifique todos os passos novamente em caso de problemas. Voc pode agora testar se o certificado est funcionando corretamente. Execute o seguinte comando para realizar uma operao de busca com suporte a TLS no servidor LDAP:
usuario@ldapserver:~$ ldapsearch -x -b 'dc=ime,dc=usp,dc=br' -D "cn=admin,dc=ime,dc=usp,dc=br" '(objectclass=*)' -H ldap://ldapserver.ime.usp.br -W -ZZ Enter LDAP Password: # extended LDIF # # LDAPv3 # base dc=ime,dc=usp,dc=br with scope sub # filter: (objectclass=*) # requesting: ALL # # ime.usp.br dn: dc=ime,dc=usp,dc=br objectClass: domain dc: ime # admin, ime.usp.br dn: cn=admin,dc=ime,dc=usp,dc=br objectClass: organizationalRole objectClass: simpleSecurityObject cn: admin description: Administrador do LDAP userPassword:: e01ENX1YcjRpbE96UTRQQ09xM2FRMHFidWFRPT0= # search result search: 2 result: 0 Success # numResponses: 3 # numEntries: 2
24
Captulo 3. Integrao
Resumo
Esse captulo descreve o processo de integrao do servio de diretrio com os servios de autenticao para redes Linux/Unix e Windows. Em redes Linux/Unix a integrao consiste em instalar e configurar os mdulos que permitam aos servios NSS e PAM buscarem as informaes de autenticao no diretrio. Para integrar a rede Windows, vamos instalar e configurar o Samba como um PDC (Primary Domain Controller) que ir operar exclusivamente como servidor de autenticao ligado ao OpenLDAP, de forma a fornecer uma ponte transparente entre as estaes Windows e o servio de diretrio. O procedimento de integrao, que consiste em instalar e configurar os pacotes necessrios, realizado no lado cliente em redes Linux/Unix (instalao dos mdulos libnss-ldap e libpam-ldap) e realizado no lado servidor em redes Windows (instalao do Samba).
NSS
O NSS (Name Service Switch) o servio responsvel por realizar as pesquisas das bases de dados em ambientes Unix. Ele permite configurar vrias fontes para a realizao de pesquisas e utilizado por vrios outros servios para realizar a recuperao da informao armazenada na rede. O pacote libnss-ldap o plugin do LDAP para o NSS, ou seja, ele que permitir ao NSS realizar buscas no diretrio LDAP. Esse mdulo ser ento utilizado pelo NSS como fonte para as informaes de autenticao da rede.
Cuidado
Esse pacote pertence ao repositrio Universe da distribuio Ubuntu. Para saber como adicionar os repositrios extras lista de repositrios do gerenciador de pacotes, consulte a documentao do U b u n t u : E x t r a R e p o s i t o r i e s [https://help.ubuntu.com/6.06/ubuntu/desktopguide/C/extra-repositories.html#id2580924].
25
Integrao
1.
Aqui voc precisa informar qual a raiz (ou base) do diretrio LDAP.
26
Integrao
3.
Nossa base de dados no precisar de autenticao para leitura. Uma alternativa restringir a leitura apenas ao administrador do diretrio ou outro usurio e configur-lo nessa opo, ao custo de ter que deixar sua senha armazenada em texto puro no arquivo de configurao.
27
Integrao
5.
Tambm no vamos precisar de um usurio com privilgios no NSS. Se isto for necessrio para algum outro servio que no seja autenticao, pode-se configurar essa opo com o administrador do diretrio, mas sua senha ter que ficar armazenada no arquivo /etc/libnss-ldap.secret. 6.
No precisaremos proteger a leitura a esse arquivo, pois no estamos armazenando informaes confidenciais nele. Isso permitir aos usurios consultar o diretrio atravs de ferramentas como finger e id.
28
Integrao
7.
O gerenciamento do arquivo /etc/nsswitch.conf feito manualmente. Vamos configur-lo a seguir. 8. Para configurar o NSS para usar o mdulo libnss-ldap, devemos alterar o arquivo /etc/nsswitch.conf. Basta adicionar o mdulo ldap como fonte de pesquisa para as bases de dados passwd, group e shadow. Um exemplo desse arquivo com as alteraes necessrias apresentado abaixo:
29
Integrao
passwd: group: shadow: hosts: networks: protocols: services: ethers: rpc: netgroup:
Importante
Certifique-se de que as permisses do arquivo /etc/nsswitch.conf esto ajustadas para 644 e de que o seu proprietrio seja o usurio root.
PAM
O PAM (Pluggable Authentication Modules) o servio responsvel por realizar a autenticao de usurios nos ambientes Linux/Unix. Atravs do PAM e de suas bibliotecas, possvel configurar um esquema de autenticao segura para qualquer aplicao de forma transparente. O pacote libpam-ldap o plugin do LDAP para o PAM, ou seja, ele que permitir ao PAM autenticar usurios armazenados no diretrio LDAP. O PAM apenas realiza a autenticao dos usurios que foram reconhecidos durante a pesquisa do NSS, ou seja, necessrio instalar e configurar o mdulo libnss-ldap antes do libpam-ldap para que a autenticao dos usurios do diretrio LDAP seja efetuada.
30
Integrao
Cuidado
Esse pacote pertence ao repositrio Universe da distribuio Ubuntu. Para saber como adicionar os repositrios extras lista de repositrios do gerenciador de pacotes, consulte a documentao do U b u n t u : E x t r a R e p o s i t o r i e s [https://help.ubuntu.com/6.06/ubuntu/desktopguide/C/extra-repositories.html#id2580924].
31
Integrao
2.
32
Integrao
4.
33
Integrao
6.
Na prxima tela vamos configurar o algoritmo utilizado para criptografar as senhas nos casos em que um algoritmo no for explicitamente especificado. 7.
Apenas mantenha a opo padro (crypt) e confirme. 8. Precisamos agora alterar os arquivos /etc/pam.d/common-account, /etc/pam.d/commonauth e /etc/pam.d/common-password. Os exemplo abaixo ilustram esses arquivos com as alteraes necessrias para que o PAM utilize os usurios do diretrio para autenticao do sistema: Listagem do arquivo /etc/pam.d/common-account:
34
Integrao
Nota
A opo use_first_pass utilizada na ltima linha do arquivo /etc/pam.d/common-auth evita que o usurio digite a senha duas vezes durante a autenticao. Listagem do arquivo /etc/pam.d/common-account:
35
Integrao
/etc/pam.d/common-password - password-related modules common to all services This file is included from other service-specific PAM config files, and should contain a list of modules that define the services to be used to change user passwords. The default is pam_unix The "nullok" option allows users to change an empty password, else empty passwords are treated as locked accounts. (Add `md5' after the module name to enable MD5 passwords) The "obscure" option replaces the old `OBSCURE_CHECKS_ENAB' option in login.defs. Also the "min" and "max" options enforce the length of the new password. sufficient pam_ldap.so required pam_unix.so nullok obscure min=4 max=8 md5
password password # # # # # # # # 9.
Alternate strength checking for password. Note that this requires the libpam-cracklib package to be installed. You will need to comment out the password line above and uncomment the next two in order to use this. (Replaces the `OBSCURE_CHECKS_ENAB', `CRACKLIB_DICTPATH') password required password required pam_cracklib.so retry=3 minlen=6 difok=3 pam_unix.so use_authtok nullok md5
O PAM precisar se comunicar com o servidor LDAP atravs de TLS para garantir a segurana dos dados transmitidos, nos casos em que ele for instalado em uma mquina diferente da que est rodando o servio slapd. Para isso, precisamos descomentar a seguinte linha no arquivo /etc/pam_ldap.conf:
ssl start_tls Tambm ser necessrio ter um arquivo /etc/ldap/ldap.conf com o seguinte contedo:
36
Integrao
TLS_CACERT
Cuidado
Este arquivo deve ter as permisses ajustadas para 644. O certificado do servidor (caso ele seja do tipo auto-assinado) ou o da CA que o certificou deve ser colocado no diretrio /etc/ssl/certs e sua permisso de acesso deve ser ajustada para 644 tambm. Altere o valor do parmetro TLS_CACERT de acordo com o nome do arquivo do certificado.
Samba
O Samba um servidor SMB open-source para ambientes Linux/Unix. Com o Samba possvel participar de um domnio Windows, tanto como membro quanto como PDC (Primary Domain Controller). Isso significa que o Samba pode ser usado para autenticar os usurios e computadores de um domnio Windows. A seguir vamos explicar o procedimento de instalao e configurao do Samba em um servidor que ir atuar como PDC, com o propsito de realizar a autenticao dos usurios e mquinas do domnio Windows, de forma integrada com o nosso diretrio LDAP. Dessa forma, os usurios que esto armazenados no diretrio LDAP podero utilizar tanto os terminais Linux/Unix da rede quanto as estaes de trabalho Windows, e o gerenciamento desses dois ambientes ficar centralizado. Ser possvel garantir permisso de acesso a um usurio apenas aos terminais Linux/Unix ou apenas s estaes Windows tambm, se necessrio. E tambm ser possvel manter as senhas de acesso sincronizadas, de tal forma que se um usurio mudar sua senha na linha de comando do Linux ela tambm ser alterada para a autenticao no Windows e vice-versa. Essa automao no gerenciamento dos registros que esto no diretrio LDAP por parte do Samba feita atravs de scripts auxiliares que vamos instalar e configurar.
37
Integrao
38
Integrao
Sample configuration file for the Samba suite for Debian GNU/Linux.
This is the main Samba configuration file. You should read the smb.conf(5) manual page in order to understand the options listed here. Samba has a huge number of configurable options most of which are not shown in this example Any line which starts with a ; (semi-colon) or a # (hash) is a comment and is ignored. In this example we will use a # for commentary and a ; for parts of the config file that you may wish to enable NOTE: Whenever you modify this file you should run the command "testparm" to check that you have not made any basic syntactic errors.
#======================= Global Settings ======================= [global] ## Browsing/Identification ### # Change this to the workgroup/NT-domain name your Samba server will # part of # No precisa ser igual raiz do diretrio LDAP workgroup = ldap.ime.usp.br # server string is the equivalent of the NT Description field server string = Servidor SAMBA netbios name = sambaserver # Windows Internet Name Serving Support Section: # WINS Support - Tells the NMBD component of Samba to enable its WINS # Server wins support = yes # This will prevent nmbd to search for NetBIOS names through DNS. dns proxy = no #### Debugging/Accounting #### # This tells Samba to use a separate log file for each machine # that connects log level = 2 log file = /var/log/samba/log.%m # Put a capping on the size of the log files (in Kb).
39
Integrao
max log size = 1000 # # # # We want Samba to log a minimum amount of information to syslog. Everything should go to /var/log/samba/log.{smbd,nmbd} instead. If you want to log through syslog you should set the following parameter to something higher. syslog = 0
# Do something sensible when Samba crashes: mail the admin a backtrace panic action = /usr/share/samba/panic-action %d ####### Authentication ####### # # # # # "security = user" is always a good idea. This will require a Unix account in this server for every user accessing the server. See /usr/share/doc/samba-doc/htmldocs/Samba-HOWTO-Collection/ServerType. html in the samba-doc package for details. security = user admin users = root
# You may wish to use password encryption. See the section on # 'encrypt passwords' in the smb.conf(5) manpage before enabling. encrypt passwords = true # If you are using encrypted passwords, Samba will need to know what # password database type you are using. passdb backend = ldapsam:ldap://ldapserver.ime.usp.br/ passdb expand explicit = no obey pam restrictions = no # Script para alterar e sincronizar as senhas dos usuarios ldap passwd sync = Yes passwd program = /usr/sbin/smbldap-passwd %u passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authentication*tokens*updated* ldap ldap ldap ldap ldap ldap ldap ldap ssl = start_tls admin dn = cn=admin,dc=ime,dc=usp,dc=br suffix = dc=ime,dc=usp,dc=br group suffix = ou=Groups user suffix = ou=Users machine suffix = ou=Computers idmap suffix = ou=Idmap delete dn = Yes
# Configuraes dos scripts do pacote smbldap-tools add user script = /usr/sbin/smbldap-useradd -m "%u" add machine script = /usr/sbin/smbldap-useradd -t 0 -w "%u" add group script = /usr/sbin/smbldap-groupadd -p "%g" add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g" delete user script = /usr/sbin/smbldap-userdel "%u" delete group script = /usr/sbin/smbldap-groupdel "%g"
40
Integrao
delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g" set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u" ########## Domains ########### # Is this machine able to authenticate users. Both PDC and BDC # must have this setting enabled. If you are the BDC you must # change the 'domain master' setting to no # domain logons = yes enable privileges = yes ############ Misc ############ # # # # Most people will find that this option gives better performance. See smb.conf(5) and /usr/share/doc/samba-doc/htmldocs/speed.html for details You may want to add the following on a Linux system: socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
# Domain Master specifies Samba to be the Domain Master Browser. If this # machine will be configured as a BDC (a secondary logon server), you # must set this to 'no'; otherwise, the default behavior is recommended. domain master = auto # Some defaults for winbind (make sure you're not using the ranges # for something else.) idmap uid = 10000-20000 idmap gid = 10000-20000
Cuidado
No se esquea de ajustar as permisses do arquivo /etc/samba/smb.conf para 644 e certifiquese de que o seu proprietrio seja o usurio root.
Dica
Ao finalizar a configurao do seu arquivo /etc/samba/smb.conf, execute o comando testparm para verificar se est tudo certo:
usuario@sambaserver:~$ sudo testparm Loaded services file OK. Server role: ROLE_DOMAIN_PDC Press enter to see a dump of your service definitions 2. Agora teremos que adicionar o schema do Samba no arquivo /etc/ldap/slapd.conf para que os atributos das entradas do domnio Windows sejam reconhecidos pelo servio de diretrio. Para isso, primeiro teremos que obter esse arquivo, que est contido no pacote samba-doc. Execute o seguinte comando no servidor que est rodando o servio slapd para instalar o pacote necessrio:
41
Integrao
Depois execute o comando abaixo para extrair o arquivo necessrio para o local correto:
usuario@ldapserver:~$ sudo zcat /usr/share/doc/samba-doc/examples /LDAP/samba.schema.gz > /etc/ldap/schema/samba.schema A seo schema's do arquivo /etc/ldap/slapd.conf ficar assim:
Vamos alterar a seo base de dados tambm para que fique de acordo com as nossas alteraes. Primeiro precisamos indexar a instncia de base de dados que contm o diretrio de maneira diferente para obter um desempenho adequado ao buscar registros do Samba:
## base de dados no. 1 index objectClass index uid,uidNumber,gidNumber,memberUid index cn,mail,surname,givenname index sambaSID index sambaPrimaryGroupSID index sambaDomainName
eq eq eq,subinitial eq eq eq
Tambm vamos precisar alterar as ACL's dessa instncia para proteger os dados confidenciais desses registros:
## ACL's para a base de dados no. 1 access to attrs=userPassword,sambaNTPassword,sambaLMPassword by dn.base="cn=admin,dc=ime,dc=usp,dc=br" write by anonymous auth by self write by * none Como alteramos as configuraes dos ndices da base de dados, teremos que reconstru-los. Para isso, primeiro pare o servio slapd:
42
Integrao
usuario@ldapserver:~$ sudo /etc/init.d/slapd start Starting OpenLDAP: running BDB recovery, slapd. 3. Precisamos armazenar a senha do usurio que ser usado para administrar o diretrio LDAP no arquivo /var/lib/samba/secrets.tdb. Para isso, execute o seguinte comando no servidor em que o Samba foi instalado:
usuario@sambaserver:~$ sudo /usr/bin/smbpasswd -w secret Setting stored password for "cn=admin,dc=ime,dc=usp,dc=br" in secrets.tdb 4. Finalmente, reinicie o servidor Samba:
usuario@sambaserver:~$ sudo /etc/init.d/samba restart * Stopping Samba daemons... * Starting Samba daemons... 5.
[ ok ] [ ok ]
Como dissemos anteriormente, a automao do gerenciamento dos registros do diretrio LDAP por parte do Samba feita com o auxlio de scripts. Esses scripts foram instalados pelo pacote smbldaptools, e j os inclumos no /etc/samba/smb.conf, agora precisamos configur-los. Os arquivos de configurao do smbldap-tools residem em /etc/smbldap-tools, mas eles no so instalados por padro. O pacote vem apenas com exemplos de configurao no diretrio /usr/share/doc/smbldap-tools/examples. Digite os seguintes comandos para fazer uma cpia dos arquivos necessrios para o local correto:
usuario@sambaserver:~$ sudo zcat /usr/share/doc/smbldap-tools/exa mples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf usuario@sambaserver:~$ sudo cp /usr/share/doc/smbldap-tools/examp les/smbldap_bind.conf /etc/smbldap-tools Agora precisamos ajust-los para as permisses adeqadas:
sudo chmod 644 /etc/smbldap-tools/smbldap. sudo chmod 600 /etc/smbldap-tools/smbldap_ sudo chown root:root /etc/smbldap-tools/sm sudo chown root:root /etc/smbldap-tools/sm
43
Integrao
O arquivo /etc/smbldap-tools/smbldap_bind.conf contm as informaes de autenticao ao diretrio, por isso suas permisses devem estar mais restritas. A seguir apresentamos um exemplo desse arquivo com os parmetros ajustados para o acesso ao diretrio:
c o n fi g u r a o
############################ # Credential Configuration # ############################ # Notes: you can specify two differents configuration if you use a # master ldap for writing access and a slave ldap server for reading # access # By default, we will use the same DN (so it will work for standard # Samba release) slaveDN="cn=admin,dc=ime,dc=usp,dc=br" slavePw="secret" masterDN="cn=admin,dc=ime,dc=usp,dc=br" masterPw="secret" O arquivo /etc/smbldap-tools/smbldap.conf contm as informaes de configurao dos scripts que sero usados pelo Samba. O primeiro parmetro que iremos configurar o Security Identifier (SID) do domnio Samba. Esse nmero uma hash utilizada pelos domnios Windows para identificar os recursos presentes na rede. Para obter esse nmero, digite o seguinte comando:
usuario@sambaserver:~$ sudo net getlocalsid SID for domain SAMBASERVER is: S-1-5-21-22440784161265281458-506834435 Copie essa hash para que possamos coloc-la no arquivo de configurao do smbldap-tools. No se esquea de que se o Samba tiver sido instalado em um servidor diferente do que est rodando o LDAP, precisaremos configurar o suporte a TLS para os scripts do smbldap-tools, e tambm vamos precisar de uma cpia do certificado do servidor LDAP em /etc/ssl/certs. Um exemplo do arquivo /etc/smbldap-tools/smbldap.conf configurado com suporte a TLS exibido a seguir:
44
Integrao
de
c o n fi g u r a o
###################################################################### # # General Configuration # ###################################################################### # Put your own SID. To obtain this number do: "net getlocalsid". # If not defined, parameter is taking from "net getlocalsid" return SID="S-1-5-21-2244078416-1265281458-506834435" # Domain name the Samba server is in charged. # If not defined, parameter is taking from smb.conf configuration file # Ex: sambaDomain="IDEALX-NT" sambaDomain="LDAP.IME.USP.BR" ###################################################################### # # LDAP Configuration # ###################################################################### # # # # # # # Notes: to use to dual ldap servers backend for Samba, you must patch Samba with the dual-head patch from IDEALX. If not using this patch just use the same server for slaveLDAP and masterLDAP. Those two servers declarations can also be used when you have . one master LDAP server where all writing operations must be done . one slave LDAP server where all reading operations must be done (typically a replication directory)
# Slave LDAP server # Ex: slaveLDAP=127.0.0.1 # If not defined, parameter is set to "127.0.0.1" slaveLDAP="ldapserver.ime.usp.br" # Slave LDAP port # If not defined, parameter is set to "389" slavePort="389" # Master LDAP server: needed for write operations # Ex: masterLDAP=127.0.0.1 # If not defined, parameter is set to "127.0.0.1" masterLDAP="ldapserver.ime.usp.br" # Master LDAP port # If not defined, parameter is set to "389" masterPort="389" # Use TLS for LDAP # If set to 1, this option will use start_tls for connection
45
Integrao
# (you should also used the port 389) # If not defined, parameter is set to "1" ldapTLS="1" # How to verify the server's certificate (none, optional or require) # see "man Net::LDAP" in start_tls section for more details verify="require" # CA certificate # see "man Net::LDAP" in start_tls section for more details cafile="/etc/ssl/certs/ssl-cert-ldapserver.pem" # certificate to use to connect to the ldap server # see "man Net::LDAP" in start_tls section for more details # clientcert="/etc/opt/IDEALX/smbldap-tools/smbldap-tools.pem" # key certificate to use to connect to the ldap server # see "man Net::LDAP" in start_tls section for more details # clientkey="/etc/opt/IDEALX/smbldap-tools/smbldap-tools.key" # LDAP Suffix # Ex: suffix=dc=IDEALX,dc=ORG suffix="dc=ime,dc=usp,dc=br" # Where are stored Users # Ex: usersdn="ou=Users,dc=IDEALX,dc=ORG" # Warning: if 'suffix' is not set here, you must set the full dn for # usersdn usersdn="ou=Users,${suffix}" # Where are stored Computers # Ex: computersdn="ou=Computers,dc=IDEALX,dc=ORG" # Warning: if 'suffix' is not set here, you must set the full dn for # computersdn computersdn="ou=Computers,${suffix}" # Where are stored Groups # Ex: groupsdn="ou=Groups,dc=IDEALX,dc=ORG" # Warning: if 'suffix' is not set here, you must set the full dn for # groupsdn groupsdn="ou=Groups,${suffix}" # Where are stored Idmap entries (used if samba is a domain member # server) # Ex: groupsdn="ou=Idmap,dc=IDEALX,dc=ORG" # Warning: if 'suffix' is not set here, you must set the full dn for # idmapdn idmapdn="ou=Idmap,${suffix}" # # # # # Where to store next uidNumber and gidNumber available for new users and groups If not defined, entries are stored in sambaDomainName object. Ex: sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}" Ex: sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}"
46
Integrao
sambaUnixIdPooldn="sambaDomainName=LDAP.IME.USP.BR,${suffix}" # Default scope Used scope="sub" # Unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT) hash_encrypt="SSHA" # if hash_encrypt is set to CRYPT, you may set a salt format. # default is "%s", but many systems will generate MD5 hashed # passwords if you use "$1$%.8s". This parameter is optional! crypt_salt_format="%s" ###################################################################### # # Unix Accounts Configuration # ###################################################################### # Login defs # Default Login Shell # Ex: userLoginShell="/bin/bash" userLoginShell="/bin/bash" # Home directory # Ex: userHome="/home/%U" userHome="/home/%U" # Default mode used for user homeDirectory userHomeDirectoryMode="700" # Gecos userGecos="System User" # Default User (POSIX and Samba) GID defaultUserGid="513" # Default Computer (Samba) GID defaultComputerGid="515" # Skel dir skeletonDir="/etc/skel" # Default password validation time (time in days) Comment the next line # if you don't want password to be enable for defaultMaxPasswordAge # days (be careful to the sambaPwdMustChange attribute's value) defaultMaxPasswordAge="45" ###################################################################### # # SAMBA Configuration # ######################################################################
47
Integrao
# The UNC path to home drives location (%U username substitution) # Just set it to a null string if you want to use the smb.conf 'logon # home' directive and/or disable roaming profiles # Ex: userSmbHome="\\PDC-SMB3\%U" userSmbHome="" # The UNC path to profiles locations (%U username substitution) # Just set it to a null string if you want to use the smb.conf 'logon # path' directive and/or disable roaming profiles # Ex: userProfile="\\PDC-SMB3\profiles\%U" userProfile="" # The default Home Drive Letter mapping # (will be automatically mapped at logon time if home directory exist) # Ex: userHomeDrive="H:" userHomeDrive="H:" # The default user netlogon script name (%U username substitution) # if not used, will be automatically username.cmd # make sure script file is edited under dos # Ex: userScript="startup.cmd" # make sure script file is edited under # dos userScript="logon.bat" # Domain appended to the users "mail"-attribute # when smbldap-useradd -M is used # Ex: mailDomain="idealx.com" mailDomain="ime.usp.br" ###################################################################### # # SMBLDAP-TOOLS Configuration (default are ok for a RedHat) # ###################################################################### # Allows not to use smbpasswd (if with_smbpasswd == 0 in smbldap_conf # .pm) but prefer Crypt::SmbHash library with_smbpasswd="0" smbpasswd="/usr/bin/smbpasswd" # Allows not to use slappasswd (if with_slappasswd == 0 in smbldap_ # conf.pm) but prefer Crypt:: libraries with_slappasswd="0" slappasswd="/usr/sbin/slappasswd" # comment out the following line to get rid of the default banner # no_banner="1" Com os scripts devidamente configurados, podemos inserir as entradas necessrias ao funcionamento do domnio do Samba no diretrio LDAP atravs do script smbldap-populate:
usuario@sambaserver:~$ sudo /usr/sbin/smbldap-populate Populating LDAP directory for domain LDAP.IME.USP.BR (S-1-5-21-22440
48
Integrao
78416-1265281458-506834435) (using builtin directory structure) entry dc=ime,dc=usp,dc=br already exist. adding new entry: ou=Users,dc=ime,dc=usp,dc=br adding new entry: ou=Groups,dc=ime,dc=usp,dc=br adding new entry: ou=Computers,dc=ime,dc=usp,dc=br adding new entry: ou=Idmap,dc=ime,dc=usp,dc=br adding new entry: uid=root,ou=Users,dc=ime,dc=usp,dc=br adding new entry: uid=nobody,ou=Users,dc=ime,dc=usp,dc=br adding new entry: cn=Domain Admins,ou=Groups,dc=ime,dc=usp,dc=br adding new entry: cn=Domain Users,ou=Groups,dc=ime,dc=usp,dc=br adding new entry: cn=Domain Guests,ou=Groups,dc=ime,dc=usp,dc=br adding new entry: cn=Domain Computers,ou=Groups,dc=ime,dc=usp,dc=br adding new entry: cn=Administrators,ou=Groups,dc=ime,dc=usp,dc=br adding new entry: cn=Account Operators,ou=Groups,dc=ime,dc=usp,dc=br adding new entry: cn=Print Operators,ou=Groups,dc=ime,dc=usp,dc=br adding new entry: cn=Backup Operators,ou=Groups,dc=ime,dc=usp,dc=br adding new entry: cn=Replicators,ou=Groups,dc=ime,dc=usp,dc=br entry sambaDomainName=LDAP.IME.USP.BR,dc=ime,dc=usp,dc=br already exist. Updating it... Please provide a password for the domain root: Changing UNIX and samba passwords for root New password: secret Retype new password: secret Ele pedir a senha do super-usurio do domnio Samba. Essa senha no precisa ser igual senha do administrador LDAP. Essa senha da conta root do domnio, que ser usada para incluir as estaes Windows ao mesmo.
49
Captulo 4. gerenciamento
Resumo
Ferramentas
de
Esse captulo apresenta algumas ferramentas de gerenciamento de linha de comando e ferramentas de gerenciamento grficas. Trabalhar com arquivos LDIF assim como com ferramentas de linha de comando construtivo para o aprendizado e o entendimento das estruturas de dados do diretrio. Porm no muito conveniente na prtica. Por isso existem vrias ferramentas grficas para isso. O uso de ferramentas de linha de comando interessante para testar se novos servios esto funcionando corretamente, medida em que eles so instalados e configurados. Alm disso, existem certos casos em que necessrio utilizar uma ferramenta de linha de comando, pois uma ferramenta grfica no atende a necessidade especfica que se quer. As ferramentas grficas de gerenciamento so muito teis para o uso no dia-a-dia, em que no necessrio resolver um problema muito especfico. A vantagem que ela fornece uma visualizao das estruturas dos diretrios mais concreta do que um arquivo LDIF ou do que uma ferramenta de linha de comando.
Ateno
J que essas ferramentas mexem diretamente na base de dados, o servidor LDAP no pode estar rodando quando essas ferramentas forem ser usadas, pois a base de dados LDAP poder ser corrompida. slapadd slapcat slaptest slapindex slappasswd L registros LDIF de um arquivo ou entrada padro e escreve as novas entradas na base de dados slapd. L entradas da base de dados slapd e as escreve em um arquivo ou sada padro. Verifica a sintaxe do arquivo /etc/ldap/slapd.conf. Regenera os ndices em uma base de dados slapd. Gera um hash de password apropriado para se usar no /etc/ldap/slapd.conf.
LDAP Tools
um conjunto de ferramentas clientes LDAP do OpenLDAP para se comunicar com qualquer servidor LDAPv3. Essas ferramentas podem ser usadas para verificar se o servidor LDAP est funcionando corretamente.
50
Ferramentas de gerenciamento
Existe uma relao um-para-um entre essas ferramentas e as operaes do protocolo LDAP. ldapadd ldapmodify ldapcompare ldapdelete ldapmodrdn ldappasswd ldapsearch Adiciona entradas (no formato LDIF) em em diretrio LDAP. Alteras entradas LDAP existentes. Verifica se uma entrada possui um dado valor de atributo. Apaga entradas LDAP. Renomeia (altera o RDN) uma entrada LDAP existente. Altera o password de uma entrada. Procura entradas LDAP.
smbldap-tools
Conjunto de ferramentas scripts, que vem junto com o Samba, para gerenciamento de contas Samba em um diretrio LDAP. Possui scripts para mostrar informaes, adicionar, deletar e alterar grupos, alterar o password, mostrar informaes, adicionar, deletar e alterar usurios e popular a base de dados LDAP. Um comando til
usuario@sambaserver:~$ sudo smbldap-usermod -a login que adiciona o objectclass sambaSAMAccount, permitindo a um usurio que antes era somente POSIX se tornar um usurio Samba.
MigrationTools
Conjunto de scripts Perl para migrar usurios, grupos, aliases, hosts, grupos de redes, redes, protocolos, RPC's e servios de nomes existentes (arquivos, NIS, NetInfo) para servidores LDAP. A seguir vamos citar apenas alguns scripts: migrate_passwd.pl migrate_group.pl migrate_hosts.pl Migra usurios do arquivo /etc/passwd. Migra grupos do arquivo /etc/group. Migra hosts do arquivo /etc/hosts.
Ferramentas grficas
phpLDAPadmin
Ele definido em seu site oficial [http://phpldapadmin.sourceforge.net/] como um "um navegador LDAP baseado na Web para gerenciar o seu servidor LDAP".
51
Ferramentas de gerenciamento
Essa ferramenta um cliente LDAP implementado em PHP, que pode ser acessada por navegadores Web. A sua visualizao da DIT e sua avanada funcionalidade de busca ajuda a tornar mais intuitiva a administrao do diretrio LDAP.
52
Ferramentas de gerenciamento
GOsa
O GOsa, assim como o phpLDAPadmin, um cliente LDAP implementado em PHP que pode ser acessada por navegadores Web. A diferena principal deles que o GOsa mostra os dados em um nvel mais alto de abstrao, deixando mais transparente a estrutura de rvore hierrquica do diretrio.
LAT
Essa ferramenta relativamente nova e significa LDAP Administration Tool. Ela permite navegar e modificar as entradas de diretrios LDAP. Ela integrada com o GNOME, pois escrita em C# usando Mono e Gtk#.
53
Captulo 5. Ajuda
Resumo
Esse um captulo contendo informaes que o ajudaro a resolver certos problemas e solucionar algumas dvidas. Organizamos ele em duas sees: uma de perguntas freqentes (tambm conhecida como FAQ e outra de soluo de problemas (Troubleshooting).
P: R:
usuario@ldapserver:~$ sudo /etc/init.d/slapd stop Stopping OpenLDAP: slapd. depois reconstrua os ndices utilizando o comando slapindex:
usuario@ldapserver:~$ sudo /etc/init.d/slapd start Starting OpenLDAP: running BDB recovery, slapd. Tente realizar novamente a busca.
54
Ajuda
2.
Executar o finger, id ou o getent como root retorna os registros que esto armazenados no diretrio. Porm, ao executar esses mesmos comandos como um usurio comum, no possvel obter esses resultados. Para que o NSS consiga realizar consultas no diretrio LDAP ele precisa ter acesso ao arquivo /etc/libnss-ldap.conf. Certifique-se de que esse arquivo possui acesso de leitura para todos os usurios, caso contrrio, apenas o usurio root conseguir realizar essas buscas. O ajuste de permisso recomendado para o arquivo /etc/libnss-ldap.conf 644, para permitir a pesquisa dos registros do diretrio atravs do finger, id ou getent por todos os usurios do sistema. No se esquea de que esse ajuste s recomendado caso esse arquivo no contenha nenhuma informao confidencial, como a senha do administrador do diretrio (rootdn). Ou seja, o NSS ter que fazer as buscas utilizando bind annimo (sem autenticao) e para isso o direito de leitura ter que ser liberado a todos os registros para todos os usurios, sem comprometer a segurana do sistema. Consulte o Apndice A, ACL's para maiores informaes.
55
Apndice A. ACL's
As ACL's (Access Control Lists) fornecidas pelo OpenLDAP possuem uma sintaxe simples e so muito flexiveis e poderosas na sua implementao. A idia bsica definir Quem tm qual Nvel de Acesso a O Qu? As principais formas de "Quem" so: * self anonymous users expresso regular Qualquer usurio conectado, incluindo conexes annimas. O DN do usurio atualmente conectado. Conexes de usurios no autenticadas. Conexes de usurios autenticadas. Que case com um DN ou com uma identidade SASL.
A seguir est uma tabela que resume os vrios nveis de acesso. Nveis maiores possuem todas as capacidades de nveis abaixo deles.
Finalmente, "O Qu" define as entradas ou atributos aos quais a ACL deve ser aplicada. Ele composto de trs partes, todas opcionais. Uma expresso regular definindo o DN. A sintaxe dn.targetstyle=regex, onde targetstyle base, one ou children, e regex uma expresso regular representando um DN. Um filtro LDAP que obedea o [RFC4515 Lightweight Directory Access Protocol (LDAP): String Representation of Search Filters [ftp://ftp.rfc-editor.org/in-notes/rfc4515.txt]]. A sintaxe bsica para especificar um filtro filter=filtroLDAP. Uma lista de nomes atributos separados por vrgula, cuja forma attrs=listaDeAtributos. * para incluir tudo.
56
ACL's
Uma ACL listada antes tem precedncia sobre as ACL's listadas depois. Isso significa que as ACL's mais restritas devem ser listadas antes das mais gerais para que tenham efeito. A primeira configurao listada no exemplo garante direito de acesso aos atributos userPassword, sambaNTPassword e sambaLMPassword para escrita ao cn=admin,dc=ime,dc=usp,dc=br, para autenticao aos usurios no autenticados (annimos), de escrita aos usurios autenticados (apenas para as suas prprias entradas), ou seja, permite que os usurios alterem a prpria senha, e nenhum acesso aos outros. A segunda configurao garante direito de acesso todo o diretrio ao cn=admin,dc=ime,dc=usp,dc=br, e para leitura para todos os outros usurios.
57
Definio do LDIF
Um arquivo LDIF : Uma coleo de registros separados por linhas em branco. Um mapeamento de atributos a valores. Uma coleo de diretivas que dizem ao parser como processar a informao.
Um registro consiste de uma seqncia de linhas descrevendo uma entrada do diretrio ou um conjunto de modificaes em uma entrada do diretrio. Ele especifica um conjunto de entradas do diretrio ou um conjunto de mudanas a ser aplicado nas entradas do diretrio, mas no ambos. Existe uma relao um-para-um entre as operaes LDAP que modificam o diretrio (add, delete, modify e modrdn) e os tipos de registros. Essa correspondncia intencional, pois permite uma traduo direta do registro LDIF para as operaes do protocolo. Mais informaes sobre as operaes no Apndice D, Operaes do LDAP. A forma bsica de um registro :
# comentrio dn: distinguished name attrdesc: attrvalue attrdesc: attrvalue A seguir est um exemplo de um arquivo LDIF.
58
Arquivo LDIF
dn: dc=ime,dc=usp,dc=br objectClass: domain dc: ime Esse registro define o domnio, que a raiz da rvore de diretrio.
dn: cn=admin,dc=ime,dc=usp,dc=br objectClass: organizationalRole objectClass: simpleSecurityObject cn: admin description: Administrador do LDAP userPassword: {CRYPT}NHiC2OYs6eym2 Esse registro define a entrada que ser usada como administrador do diretrio. A classe organizationalRole define entradas que representam cargos desempenhados pelas pessoas em uma organizao. A classe simpleSecurityObject permite o uso de passwords por outras classes. cn um atributo obrigatrio da classe organizationalRole. description um atributo da classe organizationalRole, que define a descrio do cargo. userPassword um atributo obrigatrio da classe simpleSecurityObject, que define o password da entrada. cn (Common Name) um atributo usado para definir o nome (RDN) de uma entrada no diretrio. Ele bem genrico, pois seu tipo no diz nada a respeito do que representa a entrada. O atributo dc (Domain
59
Arquivo LDIF
Component) usado para definir uma parte do nome de um domnio. Ele tambm pode definir o RDN de uma entrada, no exemplo, seria dc=ime.
dn: ou=Users,dc=ime,dc=usp,dc=br objectClass: organizationalUnit ou: Users description: Usurios da organizao dn: ou=Groups,dc=ime,dc=usp,dc=br objectClass: organizationalUnit ou: Groups description: Grupos do sistema Esses registros definem duas unidades organizacionais, ou=Users,dc=ime,dc=usp,dc=br, que contm os usurios, e ou=Groups,dc=ime,dc=usp,dc=br, que contm os grupos de usurios. ou (Organizational Unit) um atributo da classe organizationalUnit. Ela permite definir uma entrada como uma unidade organizacional e tambm usado para definir o RDN da entrada. Outro exemplo:
60
Arquivo LDIF
Dica
Trabalhar com arquivos LDIF assim como com ferramentas de linha de comando construtivo para o aprendizado e entendimento das estruturas de dados do diretrio. Porm no muito conveniente na prtica. Por isso existem vrias ferramentas grficas para isso. Mais informaes no Captulo 4, Ferramentas de gerenciamento.
61
usuario@servidor:~$ sudo aptitude install openssl Tendo o pacote OpenSSL instalado, execute o script CA com o parmetro newreq para criar os arquivos do certificado auto-assinado e de sua respectiva chave privada:
62
usuario@servidor:~$ /usr/lib/ssl/misc/CA.sh -newreq Generating a 1024 bit RSA private key ...........++++++ ..++++++ writing new private key to 'newkey.pem' Enter PEM pass phrase:secret Verifying - Enter PEM pass phrase:secret ----You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----Country Name (2 letter code) [AU]:BR State or Province Name (full name) [Some-State]:Sao Paulo Locality Name (eg, city) []:Sao Paulo Organization Name (eg, company) [Internet Widgits Pty Ltd]:Universidade de Sao Paulo Organizational Unit Name (eg, section) []:Instituto de Matematica e Estatis tica Common Name (eg, YOUR name) []:servidor.ime.usp.br Email Address []:. Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:. An optional company name []:. Request is in newreq.pem, private key is in newkey.pem No necessrio preencher os trs ltimos campos, por isso colocamos um ponto ('.') em cada um deles. Voc pode preench-los se achar conveniente. importante que o campo Common Name seja preenchido com o endereo correto do servidor (nome e domnio). Teremos como resultado da execuo do script CA dois arquivos: newreq.pem, que contm o certificado auto-assinado do servidor; e newkey.pem, que contm a chave privada do certificado protegida por uma senha. Esses dois arquivos esto listados abaixo:
63
usuario@servidor:~$ openssl rsa -in newkey.pem -out openkey.pem Enter pass phrase for newkey.pem:secret writing RSA key Esse comando vai abrir o arquivo da chave privada, para isso ele pedir a mesma senha que voc digitou no incio da gerao do certificado. Ele criar ento um novo arquivo, contendo a mesma chave privada, porm sem senha de acesso, que ser guardado no openkey.pem ou outro arquivo especificado na linha de comando. A seguir temos um exemplo desse arquivo:
64
65
Compare - O servidor recebe um DN, um atributo e um valor, e responde se a entrada com aquele DN comparar possui aquele atributo com aquele valor. Add adicionar Modify modificar Delete apagar Modrdn modificar RDN Abandon abandonar Adiciona uma nova entrada no diretrio. Modifica uma entrada existente. O servidor recebe o DN da entrada a ser modificada e as modificaes a serem feitas. Apaga uma entrada existente. O servidor recebe o DN da entrada a ser apagada do diretrio. Renomeia uma entrada existente. O servidor recebe o DN original da entrada, o novo RDN, e se a entrada movida para um local diferente na DIT, o DN do novo pai da entrada. O servidor recebe o ID da mensagem da operao a ser abandonada.
As operaes de atualizao so atmicas, ou seja, so transaes. Elas so: Add, Delete, Modify e Modrdn. LDAP no tem suporte para mltiplas operaes serem tratadas como uma nica transao. Se essa caracterstica for desejada, fica a cargo do servidor LDAP implement-la.
66
Parte Subjetiva
A Epopia
Quando estvamos no terceiro ano do Bacharelado em Cincia da Computao, trabalhvamos na SI (Seo de Informtica) do IME-USP. ramos encarregados da assistncia tcnica para todo tipo de problema que surgia nos equipamentos do Instituto. Nosso servio ia desde instalar um sistema Linux em uma mquina e configurar alguns servios, at trocar uma placa de rede queimada. Isso no era nenhum trabalho acadmico, mas foi muito construtivo, pois acreditamos que a pessoa tem que ter conhecimentos gerais em toda rea da computao, incluindo at mesmo a parte tcnica. Tudo ajuda para a formao do indivduo. Na poca, quem ocupava o cargo de administrador da rede IME era o ex-BCC Alex Camargo. Um dia ele chegou com uma proposta para ns: estudar LDAP para uma futura implantao de um servidor no IME, visando integrar a autenticao dos clientes Windows e Linux/Unix atendidos pela nossa rede. Na poca, o nosso amigo Paulo Cheque trabalhava conosco no SI e fazia parte de nossa equipe no projeto, mas ele no est mais entre ns... Hoje ele um fiel discpulo do professor Fabio Kon e faz o seu trabalho de formatura sob a sua orientao. No fatdigo dia em que o Alex apresentou para ns a proposta, nunca havamos ouvido falar em LDAP. Ele ento explicou o que era e comeamos a estudar sobre o assunto. LDAP no era to divulgado na poca como atualmente. Ele estava numa poca de trevas onde no existia muita documentao, algumas das que existiam eram desatualizadas e no seguiam nenhum padro. Alm disso, alguns programas que tinham que ser usados no existiam na forma de pacotes do Debian com suporte a TLS. Na poca, o Debian havia sido a distribuio Linux escolhida, pois era o padro no Instituto e alm disso ns j estvamos bem familiarizados com ela. Depois foi decidido que usaramos a distribuio brasileira Kurumin, que tem compatibilidade com o Debian. Inclusive utiliza os mesmos repositrios de pacotes. Hoje, a que estamos usando a distribuio Ubuntu, pois apesar de ser relativamente nova, j est bem madura hoje em dia. Alm disso, ela tem pacotes mais novos e estveis do que os da distribuio original Debian.
67
Parte Subjetiva
Mas a rede no est mais rf: nosso administrador hoje em dia o Marcelo Succi (SUUUUUUUUUUUUUCCIIIIII!!!!).
Desafios e Frustraes
Para ns realmente foi um desafio comear a trabalhar com LDAP em uma poca em que ele no estava to popular e no existia tanta documentao a respeito dele. Os pacotes Debian no tinham suporte a TLS, ento era preciso compilar alguns pacotes, em vez de simplesmente usar o gerenciador de pacotes APT. Hoje esses pacotes j vem com suporte TLS. Os pacotes do Ubuntu que usamos atualmente tambm possuem suporte a TLS. Isso de vital importncia para manter a segurana da rede. Alm disso, os desenvolvedores do OpenLDAP e do Samba adoram modificar os seus arquivos de configurao. Muitas vezes acontecia de ns apenas atualizarmos os pacotes instalados e o servidor parar de funcionar ou no funcionar corretamente. Esse um problema que enfrentamos ainda hoje de vez em quando. Os arquivos de exemplo de alguns pacotes que acompanham as distribuies (Debian, Ubuntu), os encontrados em documentaes sobre o assunto e at mesmo nos sites oficiais so todos despadronizados. s vezes exemplos encontrados nos sites oficiais so os mais bagunados, no passando de um monte de linhas de configurao jogadas de qualquer jeito sem nenhum critrio de organizao.
O pior de tudo so as documentaes que no explicam direito pontos importantes da configurao. Tm at mesmo configuraes cujos parmetros que vm de padro parecem verdadeiras "Pegadinhas do Mallandro". Se o usurio no for atento, e deixar a configurao padro que vem com o programa, simplesmente ao reiniciar o computador, corre o risco de no conseguir logar mais. A idia inicial do projeto era implantarmos o servio de diretrio LDAP no IME inteiro, mas tivemos vrios contratempos. Um deles era a mudana na administrao da rede. Cada administrador tinha um enfoque diferente e idias diferentes do que devia ser feito. Ento, no incio desse semestre, recebemos uma proposta do professor Alexandre Roma, que o responsvel pelo laboratrio de Matemtica Aplicada. O problema que ele e os usurios do laboratrio enfrentavam era um caso tpico que requeria o uso de um servio de diretrio LDAP para solucionar os problemas de autenticao. Ele ento deixou em nossas mos o problema do laboratrio, para que tentssemos resolv-lo. O plano havia, naquele momento, sido modificado. Ns iramos fazer a implantao do LDAP no laboratrio de Matemtica Aplicada, o que serviria como uma implantao modelo para o Instituto. A implantao na Rede IME ser feita pelos seus administradores, mas eles usaro a nossa instalao como base, alm de darmos assessoria para eles. Apesar da mudana de planos, gostamos bastante do trabalho realizado, pois a nossa implantao e a do IME faro parte de algo maior: o futuro servio de diretrio da USP.
68
Parte Subjetiva
depois era necessrio tirar o atraso. Em casos crticos, como na ocasio em que a rede do Instituto foi atacada por uma avalanche de vrus que exploravam uma falha de segurana dos sistemas Windows 2000 e XP, todo o tempo livre da semana era utilizado nesses atendimentos. Aps um tempo de estgio, os administradores da rede perceberam a nossa vontade em aprender mais do que o que seria possvel apenas com os atendimentos. Na poca, o administrador era o Alex Camargo, que um ex-aluno do BCC. Ele sabia que ns teramos que fazer algo de maior profundidade, para que ajudasse em nossa formao acadmica. Ele estava, na poca, procurando uma maneira de melhorar o gerenciamento da rede do Instituto. Durante uma reunio com a administrao da rede, o Alex resolveu passar para ns (eu, o Flavio e o Paulo), a tarefa de pesquisar a soluo que ele estava procurando. No tivemos muita informao a respeito do assunto, ele apenas disse que seria algo baseado em LDAP e que ele estava planejando implantar na rede do IME, para acabar com problemas de sincronismo entre as contas dos usurios dos ambientes Windows e Linux/Unix. Como material, recebemos um exemplar da revista Linux Journal, em que o assunto de capa era justamente o gerenciamento centralizado baseado em servio de diretrio LDAP. No incio no fazamos a menor idia do que era LDAP nem servio de diretrio. O contedo da revista que ele nos passou ajudou a entender o objetivo de forma mais clara, mas era uma matria meramente ilustrativa. A maior parte do material que conseguamos na poca era resultado de pesquisas na Internet. Naquela poca o material sobre LDAP era escasso, e o que encontrvamos no tinha uma qualidade muito boa. Ou era tcnico demais, apenas com as especificaes das RFC's e do protocolo, ou era superficial de forma que no resolvia nossas dvidas sobre o assunto. Mesmo assim, reunimos informaes suficientes para, depois de muito esforo, colocar o servio pela primeira vez em funcionamento na nossa mquina de testes (um antigo servidor da rede, IBM NetFinity 5000). Para ns, o sistema ainda estava funcionando como se fosse um "passe de mgica". Ainda no tnhamos idia do que muitos parmetros faziam. Somente aps vrias tentativas e instalaes, reunimos informaes suficientes sobre as principais configuraes e comeamos a escrever o nosso "manual de instalao". Vimos que era necessrio uma fonte de informao mais embasada para entender certos aspectos e conceitos relacionados ao servio de diretrio que estvamos implantando. Foi quando descobrimos o livro LDAP System Administration de Gerald Carter, publicado pela editora O'Reilly. A princpio iramos comprar o livro com recursos prprios, mas aps uma conversa com o pessoal do SI, vimos a possibilidade de utilizar uma verba que estava disponvel para a nossa seo para realizar essa aquisio. Foi tambm mais ou menos nessa poca que o Paulo decidiu deixar o projeto. Mesmo depois que j tnhamos um conhecimento mais aprofundado, e demonstramos os testes que fizemos no laboratrio com algumas poucas mquinas que nos foram disponibilizadas, enfrentamos problemas para implantar o servio na rede do IME, j que esse era o objetivo do nosso projeto. Aps a sada do Alex do cargo de administrao, a prioridade do projeto de implantao passou a ter um carter indefinido. Em um dado momento, o administrador seguinte, o Paul, queria colocar todas as contas dos usurios do Instituto no nosso servidor de testes. Isso parecia perigoso demais, j que apesar dos testes que havamos feito no laboratrio, a dimenso da rede do IME era incomparvel. De qualquer maneira, no tivemos tempo para realizar a loucura, pois o Paul desapareceu sem deixar vestgios... Depois, a espera sempre tinha um motivo diferente: uma hora era pelo futuro administrador, j que ele teria que acompanhar a nossa instalao, outra hora por um novo servidor, j que as mquinas que tnhamos disponveis no iriam suportar a carga da rede inteira a longo prazo. Mesmo assim, as experincias que desenvolvemos no foram em vo. A documentao que criamos vai ajudar os administradores da Rede IME a implantar o servio de forma definitiva em um futuro prximo, e tambm pudemos transformar o nosso ambiente de testes em uma implantao real dentro do prprio Instituto, atravs de uma oportunidade que surgiu no Departamento de Matemtica Aplicada, graas ao Prof. Alexandre Roma. De uma forma geral, gostei bastante do contato que tivemos com administrao de redes, e espero continuar meus estudos nessa rea tambm. Pretendo estudar para as provas de certificao, aproveitando o fato de que LDAP e
69
Parte Subjetiva
autenticao de redes so os assuntos da prova de nvel mais avanado do LPI (Linux Professional Institute), para a certificao de administradores de rede Linux avanados. claro que ainda terei que estudar muito para obter essa certificao, pois o contedo dos nveis I e II, que so pr-requisitos para o nvel III, muito mais abrangente do que esse assunto que estudamos. No entanto, o fato de ter surgido um exame de certificao sinaliza que esse conhecimento est sendo valorizado pelo mercado de trabalho atual. Tambm desenvolvi interesses na rea de desenvolvimento de sistemas, atravs de paradigmas orientados a objetos e mtodos geis, e pretendo estudar estes tpicos no futuro.
MAC0441 - Programao Orientada Orientao a objetos um paradigma que ajuda a resolver muitos problemas da a Objetos rea da computao e, com criatividade, at de outras reas. Essa matria com certeza nos ajuda a sair com mais preparo para o mercado de trabalho e com a viso mais aberta a novos conceitos. difcil acreditar que ela no obrigatria para a graduao. MAC0448 - Programao para Redes Essencial para quem quiser ter experincia com a programao em ambientes de Computadores de rede. Essa matria foi um timo exerccio para os conceitos apresentados em PCS0210.
70
Parte Subjetiva
Apresenta os conceitos necessrios a qualquer pessoa que queira atuar na rea de redes de computadores. Seus conhecimentos so teis no apenas na rea de programao para redes, como na rea de administrao de redes. * Gostaria muito de ter feito essa matria como optativa eletiva, mas infelizmente no consegui aproveitar o oferecimento dela em um semestre que tivesse horrio compatvel. Espero ter a oportunidade de freqent-la no futuro, mesmo que como ouvinte.
71
Parte Subjetiva
Essas mudanas na administrao tambm foram desafiadoras para ns. Tnhamos que chegar a um acordo entre as idias do Arnaldo e a dos administradores, j que cada vez era um diferente. Passou-se at mesmo uma poca entre o Paul e o Succi em que a rede ficou sem administrador. O Marcelo e o Airton, que veio do CEC para o SI, tambm acompanharam o desenvolver do nosso trabalho. De uma forma geral, o trabalho com o Erich e os outros membros do SI fluiu bem. Aprendemos com isso a ter jogo de cintura e a trabalhar em equipe. Eu gosto da rea de gerenciamento de redes, pois atualmente todo sistema grande de computao em qualquer empresa envolve uma rede de computadores. O servio de diretrio do LDAP vem de uma idia muito boa de centralizao de informao. Sabemos que no mundo de hoje, o armazenamento e gerenciamento de informao algo vital, principalmente com a demanda crescente pelo seu acesso. Eu provavelmente vou querer seguir a minha vida profissional na rea de conhecimento relacionada com o trabalho de formatura. Alm do LDAP propriamente dito, em reas relacionadas a gerenciamento de rede, banco de dados e segurana. Eu pretendo prestar as provas da LPI. At mesmo porque a terceira prova cobra muito do conhecimento que usamos no nosso trabalho: autenticao, Samba e LDAP. Uma outra certificao muito boa para gerenciamento de redes, que eu viso fazer, a da CISCO. Alm disso, tambm quero outras certificaes relacionadas a outras reas, como a de Java.
MAC0332 - Engenharia de Software Nessa matria aprendemos como fazer a anlise e especificao de requisitos e tambm testes, necessrios para esse nosso projeto. MAC0426 - Sistemas de Bancos de Dados As informaes do servio de diretrio so armazenados em uma base de dados que funciona como backend. Nessa matria aprendemos os conceitos de bancos de dados necessrios para o entendimento de como funciona o armazenamento das informaes. O objetivo do nosso trabalho autenticao integrada de diferentes sistemas operacionais em uma rede de computadores. Com essa matria, entendemos melhor a diferena entre o funcionamento dos diferentes sistemas operacionais.
72
Parte Subjetiva
MAC0448 - Programao para Redes Essas matrias ajudaram a entender melhor como funciona uma rede de de Computadores e PCS0210 - Redes computadores. Foram inmeros tpicos fundamentais para desenvolvermos de Computadores nosso trabalho de formatura, como TCP/IP, servios de rede e segurana de dados. MAC0441 - Programao Orientada Na implementao do servidor LDAP existem vrios conceitos de programao a Objetos e MAC0413 - Tpicos de orientada a objeto. Por exemplo: uma entrada do diretrio pertence a uma ou Programao Orientada a Objetos mais classes, que determinam quais os atributos a entrada tem. Alm disso, essas matrias ensinaram a gente como organizar um projeto. FLC0474 - Lngua Portuguesa Essa matria importante, pois sem saber o uso correto da lngua portuguesa, no seria possvel escrever essa monografia!
Agradecimentos
Agradecemos primeiramente ao professor Arnaldo Mandel, o nosso orientador nesse trabalho de formatura. Nas reunies que tnhamos com ele eram levantados requisitos importantes para serem analisados. Isso serviu como uma linha-guia para o nosso projeto. Tambm agradecemos ao Alex Camargo, pois foi ele quem teve a iniciativa de implantar LDAP no IME e nos apresentou a proposta do trabalho. Foi atravs dele que tivemos o contato inicial com LDAP. Tambm agradecemos aos funcionrios do SI, que sempre estiveram conosco desde a poca em que trabalhvamos como tcnicos. Eles sempre estiveram acompanhando o desenvolver do nosso trabalho. O Marcelo Modesto at mesmo foi em um workshop sobre LDAP conosco e o Airton Vilela de Oliveira tem nos acompanhado muito ultimamente. Ao professor Alexandre Megiorin Roma, que teve a confiana de deixar sob nossa administrao o laboratrio de Matemtica Aplicada, o qual ele o responsvel. Agradecemos a todos os amigos que conhecemos na faculdade e tambm aos bons professores que fazem parte do corpo docente do IME (Carlos Eduardo Ferreira, Joo Eduardo Ferreira, Jos Coelho de Pina Jnior, Siang Wun Song, entre outros). As ilustraes presentes nesta monografia foram feitas por uma amiga nossa chamada Camila Torrano e por isso agradecemos a ela. Tambm no podemos deixar de agradecer s nossas famlias e s nossas maravilhosas namoradas, Fabiana Vidoto e Karina Andrade, que sempre estiveram ao nosso lado, ajudando a liberar a tenso e agentando a gente quando estvamos sob grande presso na faculdade!!!
73
Glossrio
A
ACL's - Access Control Lists Active Directory Definem quem tem qual nvel de acesso a qual informao no diretrio LDAP. Implementao do servio de diretrio da Microsoft, que possui suporte a LDAP.
B
backend uma base de dados. Esse termo est relacionado ao termo front-end, que aplicao que acessa a base de dados. Ver Tambm Banco de dados. Conjunto de dados com uma estrutura definida para organizar informaes. Normalmente gerenciado por um SGBD. Ver Tambm SGBD - Sistema Gerenciador de Banco de Dados.
Banco de dados
C
CA - Certificate Authority CA's so entidades responsveis por emitir certificados digitais para terceiros. Essas autoridades so tpicas de esquemas de Infra-estrutura de Chaves Pblicas (ICP). Ver Tambm ICP - Infra-estrutura de Chaves Pblicas. Sistema que fornece uma camada de impresso portvel para sistemas operacionais Unix.
D
daemon DAP Protocol Diretrio Directory Access Processo que roda em background e realiza uma funo especfica ou uma tarefa relacionada ao sistema. Protocolo para acessar servios de diretrio X.500, que funciona sobre a pilha de protocolos OSI. Ver Tambm LDAP - Lightweight Directory Access Protocol. Repositrio de informaes sobre objetos, organizados segundo um critrio que facilite a sua consulta. Ver Tambm Servio de diretrio. Estrutura de rvore hierrquica em que so organizadas as entradas do servio de diretrio LDAP. Atributo de uma entrada em um diretrio LDAP usado para se referir a uma entrada sem ambigidade. Ver Tambm Diretrio. Um servio de diretrio distribudo que faz o mapeamento entre o os hostnames e endereos IP.
74
Glossrio
I
ICP - Infra-estrutura de Chaves Pblicas Uma Infra-Estrutura de Chaves Pblicas um rgo ou inciativa pblica ou privada que tem como objetivo manter uma estrutura de emisso de chaves pblicas, baseando-se no princpio da terceira parte confivel, oferecendo uma mediao de acreditao e confiana em transaes entre partes que utilizam certificados digitais. Protocolo que roteia os pacotes de dados de uma mquina a outra. Grupo de mecanismos que permite aos processos transferirem informao entre si.
L
LDAP - Lightweight Directory Access Protocol Protocolo leve para acessar servios de diretrio baseados nos padres X.500, que funciona sobre a suite de protocolos TCP/IP. considerado leve em comparao com o protocolo DAP, do qual se originou. Ver Tambm DAP - Directory Access Protocol. Formato padro de arquivo texto para armazenamento de informaes de configurao e contedos de diretrios LDAP. Ver Tambm LDAP - Lightweight Directory Access Protocol.
N
NFS - Network File System NSS - Name Service Switch Sistema de arquivo projetado para compartilhar arquivos entre hosts Unix. Framework que fornece um servio que permite aos administradores especificarem em quais arquivos ou servios de diretrio sero realizadas pesquisas de nomes, no ambiente Linux/Unix.
O
OpenLDAP OSI - Open Interconnection Systems Uma sute de aplicativos LDAP open-source. Ver Tambm LDAP - Lightweight Directory Access Protocol. Modelo de referncia desenvolvido pela ISO (International Standards Organization) para que os fabricantes pudessem criar protocolos a partir desse modelo. Usado para representar uma unidade organizacional, por exemplo usurios, grupos, computadores, etc, em um diretrio LDAP. Ver Tambm Diretrio.
OU - Organizational Unit
P
PA M Pluggable Authentication Modules Framefork que permite desenvolvedores e administradores personalizarem os servios usados para autenticar usurios.
75
Glossrio
Domain
um servidor Windows responsvel por manipular todas as contas em um domnio. Ele quem autentica os usurios. Ramo do IEEE (Institute of Electrical and Electronics Engineers) cujo objetivo padronizar os comandos, chamadas de sistema e bibliotecas de interface.
S
SAM Manager Samba Security Account Base de dados que armazena as informaes de usurios do domnio Windows. Ver Tambm Samba. Sute de aplicativos open-source que fornece servios de rede a clientes SMB/CIFS (incluindo vrias verses do Microsoft Windows) em hosts Linux. Ver Tambm SMB - Server Message Block. Mecanismo genrico de autenticao que pode ser integrado em uma variedade de protocolos. Ver Tambm TLS. Arquivos que definem qual tipo de informao poder ser armazenada no diretrio. um servio de armazenamento de informaes otimizado para busca e leitura. Conjunto de programas responsveis pelo gerenciamento de um banco de dados. O principal objetivo retirar da aplicao cliente a responsabilidade de gerenciar o acesso, manipulao e organizao dos dados. Ver Tambm Banco de dados. Identificador nico atribudo a todos os elementos de um domnio Windows (usurio, grupo ou computador). daemon da sute de aplicativos OpenLDAP que implementa o servidor LDAP. Ver Tambm OpenLDAP. daemon da sute de aplicativos OpenLDAP usado para fornecer um servio replicado de diretrio. Protocolo para o compartilhamento de arquivos, impressoras e portas seriais entre computadores. Funciona segundo os modelos cliente-servidor e requisio-resposta. Ver Tambm Samba. Linguagem de consulta estruturada para bancos de dados relacionais. Ver Tambm Samba. Protocolo projetado para fornecer criptografia de dados e autenticao entre um cliente e um servidor sobre TCP/IP. a base do protocolo TLS. Ver Tambm TLS.
SASL
Query
T
TLS Protocolo projetado para fornecer criptografia de dados e autenticao entre um cliente e um servidor sobre TCP/IP. Ver Tambm SSL - Secure Sockets Layer.
76
Glossrio
Transao
uma operao all-or-nothing, ou seja, que s deve ser realizada totalmente, no podendo ser concluida parcialmente. Ver Tambm Samba. usada em sistemas, como sistemas gerenciadores de bancos de dados, para evitar que mais de uma pessoa edite o mesmo arquivo ao mesmo tempo. Ver Tambm SGBD - Sistema Gerenciador de Banco de Dados.
Trava de escrita
X
X.500 Um conjunto de padres para servios de diretrio. Ver Tambm DAP - Directory Access Protocol.
77
Bibliografia
[LSA03] LDAP System Administration [http://www.oreilly.com/catalog/ldapsa/index.html]. Gerald Carter. O'Reilly Media, Inc.Maro de 2003. Primeira Edio. ISBN 1-56592-491-6. [OAG05] OpenLDAP Software 2.3 Administrator's Guide [http://www.openldap.org/doc/admin23/]. The OpenLDAP Project.9 de Agosto de 2005. [ULD04] Using LDAP for Directoty Integration. Steven Tuttle, Kedar Godbole, e Grant McCarthy. IBM.Fevereiro de 2004. Segunda Edio. SG24-6163-01. [PPG05] Plug-in Programmer's Guide [http://www.redhat.com/docs/manuals/dir-server/plugin/7.1/titlepg.html]. Red Hat Directory Server. Red Hat, Inc.26 de Maio de 2005. Verso 7.1. [LAH02] Linux Administration Handbook. Evi Nemeth, Garth Snyder, e Trent R. Hein. Prentice Hall PTR.2002. Primeira Edio. ISBN 0-13-008466-2. [FDL02] Licena de Documentao Livre GNU [http://www.ic.unicamp.br/~norton/fdl.html]. Norton T. Roman e Joo S. O. Bueno Calligaris. Free Software Foundation, Inc.Novembro de 2002. Verso 1.2. [ T L S 0 3 ] W h a t i s T L S / S S L ? [http://technet2.microsoft.com/WindowsServer/en/library/ed5ae700-e05e-45ef-b536-45795dbb99a21033.mspx?mfr=true]. Copyright 2006 Microsoft Corporation. Microsoft TechNet.28 de Maro de 2003.
78