Académique Documents
Professionnel Documents
Culture Documents
Alguns cuidados a tomar sobre o OpenLDAP Note !ue" apesar desta s#rie estar focada no $ed %at & '" a maioria dos mesmos princ(pios aplicam)se ao Debian e outras distribui*es
Ainstalao e configurao do OpenLDAP; Amigrao para o OpenLDAP e a configurao de consultas LDAP; A configurao do PAM e NSS para o LDAP; A proteo da conta root; Algumas ferrametnas LDAP; A proteo do OpenLDAP; O OpenLDAP e o SSL;
O que o LDAP?
O LDAP" ou Lig.t:eig.t Director; Access Protocol" # um protocolo de rede !ue # usado para acessar informa*es em um banco de dados orientado a ob7etos O LDAP inclui funcionalidades !ue o tornam =til tanto para o PAM !uanto para o NSS" pois pode autenticar usu+rios" bem como fornecer informa*es sobre o usu+rio como nomes de diret<rios .ome e s.ell padro para o NSS /m Ser6idor LDAP ou Ser6idor de Diret<rio 2>s 6e,es abre6iado como DS5 # um ser6idor !ue pode en6iar e receber informa*es 6ia protocolo LDAP ?ipicamente" um ser6idor LDAP # um soft:are !ue @ou6e@ as portas padro LDAP 2ABC e >s 6e,es DAD5 por cone-*es" e responde a solicita*es e consultas LDAP Para fa,er uma analogia com bancos de dados" o LDAP # o e!ui6alente do SEL" e o ser6idor SEL # como um ser6idor de bancos de dados" como o Oracle ou M;SEL Ser6idores LDAP so particularmente =teis para arma,enar informa*es sobre pessoas 0sto por causa da nature,a orientada a ob7eto do LDAP Diferente de um banco de dados relacional" um ob7eto em um diret<rio LDAP pode conter um n=mero arbitr+rio de atributos" e cada atributo pode ter um n=mero arbitr+rio de 6alores 0sto o torna =til por 6+rias ra,*es Por e-emplo" uma lin.a de bancos de dados contendo uma coluna para um n=mero de telefone ir+ permitir uma =nica entrada na!uela coluna de n=mero de telefone para cada lin.a no banco de dados /ma pessoa" entretanto" pode ter mais de um n=mero de telefone" assim o LDAP permite !ue m=ltiplos n=meros de telefones se7am arma,enados no mesmo ob7eto de pessoa Note a diferena sutil de terminologia a!ui: n<s dissemos um Fdiret<rioF LDAP" em 6e, de Fbanco de dadosF" n<s c.amamos as entradas no diret<rio de Fob7etosF" em 6e, de Flin.asF" e c.amamos os 6alores de
O#enLDAP
O OpenLDAP # uma implementao open source de um ser6idor de diret<rio LDAP O OpenLDAP # instalado por padro no $ed %at & ' e posteriores" e est+ dispon(6el nas 6ers*es D I e posteriores do $ed %at Note !ue 6ers*es anteriores do $ed %at usam a 6erso ' do OpenLDAP Apesar de ser considerado uma 6erso est+6el pelo time OpenLDAP" por um n=mero de ra,*es de segurana eu alerto contra o uso do mesmo Por e-emplo" ele no suporta o SSL ou c.ecagem de es!uema Sua 6erso do OpenLDAP de6e ser a I J &)A ou posterior
Insta&ando o O#enLDAP
8omo sempre" 6ocK pode instalar o OpenLDAP a partir do c<digo fonte" bai-ando o mesmo do :eb site do OpenLDAP" e seguindo as intru*es de compilao Min.a preferKncia" entretanto" # instalar os pacotes OpenLDAP dos ar!ui6os $PM conforme segue Note !ue 6ocK precisa instalar tanto o pacote do ser6idor !uanto do cliente se 6ocK !uiser configurar um ser6idor OpenLDAP Primeiro" colo!ue seu 8D)$OM do $ed %at na unidade de leitura e use a seguinte se!LKncia de comandos: mount 9de69cdrom 9mnt9cdrom cd 9mnt9cdrom9$ed%at9$PMS rpm )/.6 openldap)I J &)'M iABD rpm openldap)ser6ers)I J &)'M iABD rpm umount 9mnt9cdrom
G poss(6el !ue os pacotes 7+ este7am realmente instalados em seu sistema 2para 6erificar isto 6ocK pode e-ecutar o comando rpm )! openldap5 ?amb#m # poss(6el !ue 6ocK precise resol6er alguma dependKncia na instalao dos $PMs acima Em particular" os pacotes do OpenLDAP e-igem o pacote OpenSSL" e" pelo menos" o pacote NrbO)libs
umount 9mnt9cdrom
Se 6ocK precisar obter o c<digo fonte das bibliotecas pamPldap e nssPldap" elas esto dispon(6eis no PADL com" nos seguintes locais: .ttp:99::: padl com9pamPldap .tml para o pamPldap .ttp:99::: padl com9nssPldap .tml para o nssPldap
(on)i*urando o O#enLDAP
A configurao do OpenLDAP # feita atra6#s do ar!ui6o 9etc9openldap9slapd conf E-iste uma p+gina man descre6endo o conte=do do ar!ui6o slapd conf 26e7a man slapd conf5 bem como um e-celente guia de administrao no site do OpenLDAP 8omo ponto inicial" 6ocK pode !uerer usar este ar!ui6o simples de configurao: R R See slapd conf2O5 for details on configuration options R ?.is file s.ould NO? be :orld readable R include include include include include include include 9etc9openldap9sc.ema9core sc.ema 9etc9openldap9sc.ema9cosine sc.ema 9etc9openldap9sc.ema9inetorgperson sc.ema 9etc9openldap9sc.ema9nis sc.ema 9etc9openldap9sc.ema9rfcBII)MailMember sc.ema 9etc9openldap9sc.ema9autofs sc.ema 9etc9openldap9sc.ema9Nerberosob7ect sc.ema
R R A8Ls R
defaultaccess read
/ma coisa !ue de6e ser notada no ar!ui6o de configurao acima: os usu+rios de6em substituir @oSM;8ompan;"cSA/@ no ar!ui6o com um Tase DN !ue represente sua organi,ao Note !ue eu prefiro utili,ar a especificao estilo 1 OJJ acima" mas 6ocK pode usar a especificao DNS" !ue # @dcSm;compan;"dcScom"dcSau@ ou similar Por e-emplo" se sua comania for c.amada @farnarNle com@" 6ocK pode usar @dcSfarnarNle"dcScom@ ou pode usar @oSfarnarNle"cS/S@ Lembre desta Tase DN" ela ser+ importante mais tarde Eu resol6i incluir algum 8ontrole de Acesso elementar no ar!ui6o O ar!ui6o padro slapd conf inclu(do com o $ed %at Linu- no inclui A8Ls" mas elas so obrigat<rias em uso real UocK pode !uerer e-pandir as A8Ls acima 26e7a o manual slapd conf ou o guia do administrador5 Eu inclu( uma sen.a root padro ) FsecretF Esta # uma m+ id#ia uma 6e, !ue 6ocK ten.a dados no seu diret<rio LDAP 0remos tratar isto mais tarde /ma 6e, !ue 6ocK ten.a um ar!ui6o slapd conf funcional" 6ocK pode iniciar seu ser6idor G bem f+cil fa,er isto" 6ocK s< precisa e-ecutar o seguinte comando: 9etc9rc d9init d9ldap start Desde !ue o ar!ui6o slapd conf este7a correto" 6ocK de6e poder usar o pstree para 6er um processo slapd em e-ecuo Se o ar!ui6o slapd conf esti6er errado" procure as mensagens de erro 2e-ecutar o slapd )d pode ser de a7uda5" corri7a !ual!uer problema !ue 6ocK 6e7a" e tente no6amente
diret<rio" e comece a trabal.ar Primeiro" edite o ar!ui6o migratePcommon p. Perto da lin.a &I 6ocK 6K um par de lin.as parecidas com estas: VDEWA/L?PMA0LPDOMA0N S @babel com au@; VDEWA/L?PTASE S @oSTabel"cSA/@;
UocK precisar+ editar estas duas lin.as" colocando seu dom(nio de correio padro e a Tase DN !ue 6ocK definiu anteriormente no ar!ui6o slapd conf A seguir" # s< e-ecutar as ferramentas de migrao 0sto pode ser feito usando um comando simples" assumindo !ue 6ocK est+ migrando do 9etc9pass:d para o LDAP: migratePallPonline s. 2certifi!ue)se !ue seu ser6idro LDAP est+ sendo e-ecutado antes de usar o comando acima5 Este comando ir+ perguntar !ual o seu DN root e sen.a 2entre a sen.a secret !ue definimos no ar!ui6o slapd conf5" e ir+ inciar a popular seu diret<rio LDAP
Lembre)se de substituir o Tase DN pelo !ue 6ocK definiu no ar!ui6o slapd conf" no lugar do oSM;8ompan;"cSA/ mostrado acima Em uma rede" 6ocK pode ter !ue substituir o endereo 'I& J J ' pelo endereo 0P do seu ser6idor LDAP Para a!ueles !ue entendem um pouco mel.or os conceitos do LDAP: o OpenLDAP no suporta 2ainda5 a locali,ao base SLP ou DNS $$" assim" 6ocK precisa ser bastante perciso acerca da locali,ao do ser6idor )) ou um endereo 0P" um nome de .ost em 9etc9.osts" ou algo !ue possa ser encontrado no DNS /ma 6e, !ue 6ocK ten.a feito isto" 6ocK de6e poder e-ecutar uma pes!uisa simples UocK pode comear procurando seu usu+rio root usando o comando abai-o: ldapseac. )- FuidSrootF UocK de6e 6er uma entrada bastante parecida com a abai-o: 6ersion: I
sn: root mail: root,m-com#an-.com.au ob7ect8lass: person ob7ect8lass: organi,ationalPerson ob7ect8lass: inetOrgPerson ob7ect8lass: account ob7ect8lass: posi-Account ob7ect8lass: top ob7ect8lass: NerberosSecurit;Ob7ect ob7ect8lass: s.ado:Account s.ado:Ma-: CCCCC s.ado:Xarning: & NrbName: root,M/(OMPAN/.(OM.A+ loginS.ell: 9bin9bas. uidNumber: J gidNumber: J .omeDirector;: 9root gecos: root
Agora !ue 6ocK c.egou to longe" pare e sorria UocK conseguiu fa,er o LDAP funcionar" o !ue >s 6e,es no # uma tarefa f+cilY 0sto nos le6a ao fim do primeiro artigo desta s#rie de dois artigos No pr<-imo artigo" iremos continuar a discusso do OpenLDAP e do Linu-" cobrindo assuntos como: 8onfigurar o PAM e NSS para o LDAP" Werramentas LDAP" tornar o OpenLDAP mais seguro e a gerao de c.a6es SSL para o OpenLDAP
c.amado aut.config !ue fa, isto automaticamente para 6ocK Para usar o mesmo" e-ecute aut.config na lin.a de comando Dentro do aut.config" isto # um e-erc(cio direto Mar!ue o !uadro F/se LDAPF Nos pr<-imos !uadros" entre um 6alor para o ser6idor 2o mesmo endereo 0P !ue 6ocK usaou em 9etc9openldap9ldap conf5" e um Tase DN 2o mesmo Tase DN especificado em 9etc9openldap9slapd conf5 /ma 6e, finali,ado" tudo de6e estar configurado Eu descobri !ue a mel.or forma de descobrir isto # como segue: Primeiro" encontre uma conta no diret<rio LDAP" usando um comando como ldapsearc. )- FuidSsomeaccountF Esta conta de6e ser uma !ue foi copiada do ar!ui6o 9etc9pass:d !ue 6ocK tin.a no sistema antes de configurar o LDAP Uerifi!ue se a conta e-iste" usando Ffinger someaccountF UocK de6e obter uma resposta mostrando o user id" nome" e outros detal.es /sando o 6i ou outro editor de te-to" edite o ar!ui6o 9etc9pass:d e remo6a a conta" e /sando o finger no6amente" 6erifi!ue se a conta ainda e-iste Se tudo esti6er correto" ela ainda e-istir+ ) os detal.es da conta esto agora sendo recuperados do LDAP em 6e, de 9etc9pass:d
Sua sen.a root de6e ter sido obtida do ar!ui6o 9etc9pass:d ou 9etc9s.ado: e inserida no LDAP Para testar isto" repita a pes!uisa acima usando a opo )D no ldapsearc. para tentar um logon em seu diret<rio LDAP" como segue: ldapsearc. )- )D FuidSroot"ouSPeople"oSM;8ompan;"cSA/F )X FuidSrootF
O ldapsearc. ir+ pedir uma sen.a ) entre sua sen.a de superusu+rio a!ui e" se tudo correr de acordo com o plane7ado" de6e funcionar corretamente
Etas ferramentas admitem um con7unto de parZmetros de lin.a de comando comuns" !ue incluem op*es como: 6 ) modo 6erboso;
N ) use autenticao 4erberos - ) use autenticao simples c ) operao cont(nua 2no aborta se .ou6er um erro5; f ) leia a informao de um ar!ui6o; D ) especifi!ue um DN LDAP para se conectar; X ) solicite uma sen.a para autenticao; e" % ) use um ser6idro LDAP em particular" e-emplo: )% ldap:99ldap m;compan; com
O 3E tamb#m permite !ue 6ocK entre dentro do diret<rio LDAP e 6e7a as fun*es internas do LDAP O 3E est+ dispon(6el na forma de c<digo fonte do site :eb" e o c<digo fonte inclui um ar!ui6o spec" de forma !ue 6ocK pode criar um ar!ui6o $PM se !uiser
Director- Administrator
O Director; Administrator # uma aplicao para administrar entradas de usu+rio e grupos em ser6idores de diret<rio LDAP Ela fornece uma interface amig+6el para administrar os detal.es pessoais dos usu+rios" informa*es de li6ro de endereo" e roteamento de email 2para 6ers*es do sendmail !ue suportam informa*es de roteamento de email arma,enadas em LDAP5 Eu ac.ei a interface do Director; Administrator simples e intuiti6a" apesar de no ser to poderoso !uanto o 3E e no ir al#m da administrao simples de usu+rios e grupos O autor do Director; Administrator tem prometido uma no6a 6erso por algum tempo" e eu ten.o alguns poucos itens na min.a lista de pedidos para ele" o principal problema # !ue sua 7anela principal fornece uma 6isuali,ao no ordenada e no estruturada de todos os usu+rios na +r6ore do diret<rio Se e-iste um n=mero muito grande de usu+rios no diret<rio" isto # insatisfat<rio 2eu ten.o cerca de 'OJJ em uma +r6ore LDAP !ue administro" e no ser+ incomum organi,a*es !ue tem de,enas de mil.ares5 8omo uma ferramenta b+sica de administrao de usu+rios em uma rede Linu- pe!uena com um diret<rio LDAP" entretanto" o Director; Administrator # uma e-celente ferramenta
O $ed %at tamb#m inclui alguma informao sobre o OpenLDAP no seu $ed %at Linu- $eference 3uide" especialmente o cap(tulo M Se 6ocK 6ai usar a autenticao 4erberos com o OpenLDAP" ento 6ocK precisa ler tamb#m o cap(tulo C
A maneira principal em !ue 6ocK pode mel.orar a segurana do OpenLDAP # incluir o modo secure socNets la;er 2SSL ) camada segura de so!uetes5" e o modo transport la;er securit; 2?LS ) segurana de camada de transporte5 na sua cone-o cliente9ser6idor 0sto criptografa todo o tr+fego LDAP usando o protocolo SSL O OpenLDAP 6erso I J e posterior possui a capacidade de rodar nos modos SSL e ?LS usando as bibliotecas OpenSSL" mas 6ocK de6e estar usando uma 6erso posterior > I J & para !ue funcione corretamente Os passos principais !ue 6ocK de6e serguir para conseguir !ue o OpenLDAP funcione com o SSL so: 8ertifi!ue)se !ue o OpenLDAP este7a compilado com as bibliotecas OpenSSL; e" 3ere as c.a6es SSL para o OpenLDAP 8onfigure o OpenLDAP para usar as c.a6es SSL ?esteY
Note !ue e-iste duas formas diferentes de operar o OpenLDAP com o SSL So elas: ?LS" tamb#m con.ecido como modo Start ?LS Esta # a abordagem mais moderna a comunica*es protegidas" pois usa a mesma porta ?8P !ue # usada para conectar ao ser6idor OpenLDAP 2ABC5 mas fa, a mudana para a comunicao segura usando um comando @Start ?LS@ antes !ue !ual!uer dado se7a transferido; e" O modo SSL" !ue opera em uma porta ?8P diferente 2DAD5 da porta LDAP padro" e comea a cone-o em modo seguro
O modo ?LS # mais fle-(6el !ue o modo SSL 2uma 6e, !ue clientes ou ser6idores !ue no entendem o SSL podem continuar a comunicao ignorando o comando Start ?LS5" mas infeli,mente muitos ser6idores e clientes LDAP antigos no implementaram este modo e s< usam o modo SSL Assim # prefer(6el" na min.a opinio" para fe,er os seus ser6idores e clientes LDAP funcionando tanto no modo ?LS !uanto SSL
Durante o processo de criao da c.a6e" o programa ir+ pedir 6+rios detal.es sobre seu ser6idor Estes incluem o c<digo do pa(s" estado" nome da organi,ao" endereo email" nome do ser6idor" etc $esponda estas !uest*es da forma mais completa poss(6el ) elas sero codificadas no ar!ui6o PEM Se 6ocK no tem o ar!ui6o MaNefile do OpenSSL" ou no pode e-ecutar o comando @maNe@ por alguma ra,o" ento ter+ de criar o ar!ui6o PEM manualmente Segue um roteiro apro-imado dos comandos necess+rios: 9usr9bin9openssl re! )ne:Ne; rsa:'JIM )Ne;out tempfile' )nodes )-OJC )da;s ADO )out tempfileI cat tempfile' \ ldap pem
Note !ue este comando ir+ criar uma c.a6e $SA e ir+ auto)assinar a mesma c.a6e 8.a6es auto)assinadas no so usuais em 2por e-emplo5 comunica*es %??PS" pois as c.a6es so geralmente assinadas por uma terceira empresa con.ecida como 8ertification Aut.orit; Neste caso" entretanto" uma c.a6e auto)assinada # aceit+6el" 7+ !ue a maioria dos clientes LDAP no c.eca a assinatura da c.a6e Ob6iamente" para usu+rios mais a6anados" # poss(6el gerar uma c.a6e e ter a mesma assinada por uma 8ertification Aut.orit; e-terna Wica a seu crit#rio o !ue fa,er Nota importante: uma 6e, !ue 6ocK ten.a gerado as c.a6es" # importante !ue elas se7am tornadas Fread onl;F pelo usu+rio !ue est+ rodando o ser6idor LDAP Para o $ed %at Linu-" o ser6idor OpenLDAP 2slapd5 # e-ecutado como um usu+rio no pri6ilegiado" c.amado FldapF" em um grupo c.amado FldapF Para tornar este usu+rio e grupo os propriet+rios da c.a6e rec#m criada" e-ecute o seguinte comando: c.o:n ldap ldap slapd pem
Note !ue e-istem diferentes 6alores 6+lidos para a lin.a ?LS8ip.erSuite" mas a lin.a acima # o !ue eu recomendo UocK pode tamb#m ter !ue modificar seu script de iniciali,ao do LDAP Se 6ocK est+ usando o $ed %at Linu- 6erso & J ou posterior" no ser+ necess+rio 8aso contr+rio" 6ocK de6e locali,ar a lin.a no seu script de iniciali,ao 2pro6a6elmente 9etc9rc d9init d9ldap ou 9etc9init d9ldap5 !ue cont#m a lin.a !ue incia o slapd" e modificar a mesma para ficar assim: slapd ). F@ldap:999 ldaps:999@F G a opo ap<s o @).@ !ue nos interessa neste ponto UocK de6e notar !ue estmos informando ao ser6idor LDAP para funcionar tanto nos modos ldap !uanto ldaps 2seguro5 ?eoricamente" uma 6e, !ue isto se7a feito" 6ocK pode desligar o modo ldap e usar somente o modo seguro" mas isto no # recomendado" 7+ !ue muitos clientes LDAP no suportam o modo seguro Note !ue podem .a6er mais op*es na lin.a !ue roda o slapd em seu script de inciali,ao: dei-e as mesmas intactas G preciso reiniciar o ser6idor LDAP para !ue o mesmo re)leia o ar!ui6o slapd conf: 9etc9rc d9init d9ldap stop 9etc9rc d9init d9ldap start
Note !ue eu escol.i usar a cone-o direta ao LDAP no modo SSL em 6e, de ir atra6#s do ?LS ) o =ltimo # poss(6el" mas um pouco complicado Se tudo correr bem" 6ocK de6e 6er alguma sa(da do ser6idor LDAP na 7anela de comando" mostrando informa*es sobre o certificado" bem como o certificado" 0Ds da sesso" e c.a6es mestre" !ue esto em uso pelo ser6idor Se 6ocK puder encontrar um cliente LDAP !ue suporta SSL ou ?SL" como o 3E" ati6e a opo no cliente !ue .abilita o modo ?LS" e 6e7a se ele funciona Uoila" 6ocK tem agora um ser6idor LDAP seguroY