Yellow Pages 2 : Do lado do cliente
ArticleCategory:
System Administration
AuthorImage:
TranslationInfo:
Original in fr Fr�d�ric Raynal
fr to pt Patrick Carpalhoso
AboutTheAuthor:
Frederic Raynal prepara uma tese em inform�tica no
INRIA. Ele gosta tamb�m ler (tanto Tolkien como
Balzac) e ouvir musica (de Mozart a Philip Glass e de Led Zeppelin a Massive
Attack passando por Bj�rk e Boris Vian, mas evitando cautelosamente o rap, a
techno e outros ru�dos ;-)
Abstract:
O artigo anterior era uma introdu��o aos conceitos girando a
volta das yellow pages (YPs). Neste artigos iramos ver como configurar o
cliente, um exemplo pratico de funcionamento do cliente e uma apresenta��o das
diferentes ferramentas que vem juntas. Por fim, veremos um pouco o NIS+
ArticleIllustration:
ArticleBody:
Introdu��o
O lado cliente dos servi�os ligados as yellow pages � baseado
essencialmente sobre o dem�nio ypbind :
ele emite os pedidos para o servidor das YPs. Em primeiro veremos ao pormenor o
seu funcionamento e explicaremos como configura-lo. Depois veremos tamb�m como
funciona o protocolo NIS. E na ultima parte deste artigo mostrara as diferentes
ferramentas presentes no lado do cliente das YPs (as yp-tools).
Configurar o seu cliente NIS
A �nica coisa a fazer para por a funcionar
um cliente NIS numa maquina � de executar o dem�nio ypbind.
ypbind
ypbind estabelece uma liga��o entre o
cliente e o servidor NIS (to bind significa, entre outra coisa, ligar ou atar em
ingl�s). Essa liga��o � vis�vel na directoria /var/yp/binding1
pelo o ficheiro convencional chamado domainname.version. A �nica vers�o
actualmente suportada � a vers�o 2. Ent�o se o nome do meu dom�nio NIS �
"messie", o ficheiro sera messie.2
O programa ypbind pertence ao
super-utilizador (i.e. root), ele deve de estar ent�o no /sbin, ou no
/usr/sbin.
Quando � executado, ypbind vai
buscar as suas instru��es no ficheiro
/etc/yp.conf. As entradas nesse ficheiro s�o :
- domain nisdomain server hostname : o cliente dirige-se ao
hostname para o dom�nio nisdomain ;
- domain nisdomain broadcast : o cliente faz um broadcast sobre
a rede local para o que diz respeito ao dom�nio nisdomain ;
- ypserver hostname : o cliente dirige-se directamente ao
hostname para o dom�nio local. Nessa configura��o o endere�o IP do servidor
tem de estar no ficheiro /etc/hosts.
Se esse ficheiro de configura��o esta incorrecto ou n�o existe, ypbind broadcast2
sobre toda a rede local a pesquisa de um servidor NIS para o dom�nio local.
Algumas opera��es b�sicas permitam de verificar que ypbind esta correctamente configurado.
- criar o seu ficheiro /etc/yp.conf ;
- verificar que portmap funciona
(ps aux | grep portmap). Se n�o for o caso, executa-lo. Esse programa
associa as ports TCP/IP (ou UDP/IP) do computador aos programas. A
inicializa��es de um servidor RPC, este assinala ao portmap as portas que ele escuta e
os n�meros dos programas que ele � suscept�vel de executar. Quando um cliente
faz um pedido RPC para um numero de programa, ele contacta em primeiro
portmap para saber a porta
para a qual os pacotes RPC devem ser enviados. Como o descreve o funcionamento
anterior, � ent�o necess�rio que portmap
seja inicializado antes
ypbind ;
- criar o direct�rio /var/yp ;
- executar ypbind ;
- utilizar o comando rpcinfo para se assegurar que ypbind funciona correctamente :
- "rpc -p localhost" deveria dar :
program |
vers |
proto |
port |
|
100000 |
2 |
tcp |
111 |
portmapper |
100000 |
2 |
udp |
111 |
portmapper |
100007 |
2 |
tcp |
637 |
ypbind |
100007 |
2 |
udp |
639 |
ypbind |
ou
program |
vers |
proto |
port |
|
100000 |
2 |
tcp |
111 |
portmapper |
100000 |
2 |
udp |
111 |
portmapper |
100007 |
2 |
udp |
758 |
ypbind |
100007 |
1 |
udp |
758 |
ypbind |
100007 |
2 |
tcp |
761 |
ypbind |
100007 |
1 |
tcp |
761 |
ypbind |
ou ent�o
- "rpcinfo -u localhost ypbind" tem de mostrar :
program 100007 version 2 ready and waiting |
ou
program 100007 version 1 ready and waiting |
program 100007 version 2 ready and
waiting |
em fun��o da vers�o de ypbind. A mensagem importante �
aquela sobre a vers�o 2.
Agora que ypbind funciona correctamente, a vossa maquina
passou a cliente NIS. Voc� j� pode utiliza-lo para efectuar pedidos a vosso
servidor. Por exemplo, "ypcat passwd.byname" renvio todas as palavras-chave,
ordenado por nome de utilizador presente na map correspondente.
Ultimos detalhes
Alguns ficheiros devem ainda ser ligeiramente alterados
para que as YPs funcionam de maneira eficaz :
- /etc/host.conf : adicionar "nis" para a pesquisa dos hosts ;
- /etc/passwd : � necess�rio adicionar a linha
+::::::
Isso autoriza todas as
pessoas presentes na map do servidor a conectar-se sobre o cliente.
Podemos afinar essas autoriza��es com a ajuda dos s�mbolos + e - para autorizar
ou proibir o acesso ao cliente. Por exemplo, para proibir o utilizador
guest, � necess�rio adicionar a linha
-guest::::::
Os campos que n�o
desejamos para modificar devem ficar vazios. Todavia podemos sobrecargar
:
+moi::::::/bin/ksh
O utilizador "moi" utilizara ksh em vez do seu
shell habitual (definido no /etc/passwd do servidor NIS).
Ultimo ponto
importante, NIS suporta perfeitamente a utiliza��o das netgroups3
+@sysadmins:::::::
autorizara
as conex�es dos membros do netgroup sysadmin.
- /etc/group (e/ou /etc/shadow para algumas vers�es da libc) : como
para /etc/passwd, � necess�rio adicionar
+:
Podemos igualmente brincar com as
autoriza��es sobre os grupos com a ajuda de + et -.
- /etc/nsswitch.conf : o Network Services Switch permita de definir a ordem
na qual as informa��es devem ser pesquisadas, da mesma maneira que
/etc/host.conf. As escolhem s�o entrem :
nisplus |
pesquisar via NIS+ (i.e. NIS vers�o 3, uma vers�o segura de
NIS) |
nis |
pesquisa via NIS (NIS version 2, alias as YPs |
dns |
pesquisa via um DNS (Domain Name Server) |
files |
pesquisar nos ficheiros locais |
db |
pesquisar na base /var/db |
|
Ap�s cada op��o de pesquisa, podemos utilizar
um comando da forma
`[' ( `!'? STATUS `=' ACTION )+ `]'
com :
- STATUS => "success" ou "notfound" ou "unavail" ou "tryagain"
- ACTION => "return" ou "continue"
Em fun��o da libc
utilizada, as pesquisas n�o s�o todas as mesmas. Por exemplo, as shadow
passwords n�o s�o geradas com a libc5. Os servi�os suportados sobre uma
maquina utilizam uma libraria /lib/libnss_SERVICE.so.X Para mais informa��o
sobre esse servi�o, ver a pagina man de nsswitch.conf
O que diz respeito
as shadow passwords via NIS, o seu suporte s� � poss�vel com a glibc2.x.
� ent�o necess�rio pensar a especific�-lo no ficheiro nsswitch.conf
O protocolo NIS
Agora que o nosso cliente NIS esta completamente operacional, vamos ver como ele
faz para recuperar as informa��es que ele necessita.
Quando um cliente necessita uma informa��o numa map das YPs, ele
come�a por pesquisar no servidor YP. Para o encontrar, ele abre uma conex�o TCP
para o ypbind local. O cliente
informe-o do dom�nio (falamos aqui do dom�nio NIS) onde ele pertence ypbind broadcast via a fun��o RPC
YPPROC_DOMAIN_NOACK. Os servidores NIS que servem esse dom�nio respondem com um
ACK, os outros fazem de orelhas surdas.
ypbind reenvia ao cliente o resultado
da pesquisa (falhan�o ou sucesso) e, se ele a tiver, o endere�o do primeiro servidor
YP que lhe respondeu. O cliente pode agora fazer o pedido a esse servidor,
composto do dom�nio, da map e da chave.
Esse protocolo � relativamente lente porque ele utiliza as conex�es RCP. Ainda mais, ele
utiliza tamb�m muitas sockets. Para evitar essa situa��o, ypbind n�o espera que o cliente o contacta
para encontrar os servidores. Na realidade ele guarda no ficheiro
/var/yp/binding/. uma lista de servidor para cada dom�nio
e verifica regularmente que eles funcionam correctamente.
As yp-tools
Esta sec��o apresenta muito rapidamente algumas ferramentas do package yp-tools.
Para saber mais, cada uma das instru��es disp�em de uma p�gina man muita detalhada ;-P
- domainname : reenvia (ou fixa segunda a op��o) o nome do dom�nio NIS ;
- ypcat : mostra os valores de todas as chaves de uma map NIS ;
- ypmatch : mostra os valores de uma ou varias chaves de uma map NIS ;
- ypset : permite de definir a que servidor NIS ypbind
tem de se conectar ;
- ypwhich : reenvia o nome do servidor NIS. Com o argumento -m seguido do nome
do map, reenvia o nome da map master.
- yppoll : pega numa map em argumento e reenvia o nome do dom�nio e o servidor master.
Algumas palavras sobre NIS+
Ao longo deste artigo, em nenhum momento abordamos uma variante de NIS, a saber NIS+.
Numa rede, NIS causa enormes problemas em termo de seguran�a. Por exemplo, se o servidor NIS
esta mal protegido e que uma pessoa mal intencionada descobre :
- o nome do dom�nio NIS
- o endere�o IP de um cliente NIS
s� lhe resta ent�o fazer passar-se
por a maquina com o IP do cliente e enviar um ypcat passwd
para recuperar de uma forma descansada o ficheiro das palavras-chave :-(
NIS+ ofere�a uma camada suplementar de seguran�a integrando um protocolo
de autentifica��o baseado sobre uma troca de chaves e suportando a numera��o dos dados.
Os dados s�o armazenados em tabelas, que s�o por elas colocadas em directorias diferentes.
Cada coluna de uma tabela disp�em de um qualificativo definindo, por exemplo, se os dados s�o
"case sensitive", em formato bin�rio, etc ...
A estrutura descrita permita simplesmente gerir os direitos de acceso sobre as directorias
e as tabelas, mas tamb�m sobre as colunas das tabelas. Isso implica que podemos proibir o
acesso a tabelas das palavras-chaves a todos os utilizadores que n�o s�o autenticados
no servidor NIS+, mas autorizar a todos os utilizadores certificados a aceder a toda a
tabela das palavras-chaves, excepto os campos "passwd". S� o propriet�rio do campo "passwd"
podera v�-lo.
Existem 4 niveis de direitos :
- Nobody (ningu�m) : o utilizador n�o � autenticado ;
- Owner (propriet�rio) : o utilizador � autenticado e ele � o proprietario ;
- Group (groupe) : o utilizador � autenticado e ele esta no grupo para esse
objecto ;
- World (mondo) : o utilizador � autenticado mas ele n�o � nem
proprietatio, nem no grupo para esse objecto.
Nessa configura��o, root � um utilizador como os outros ... enfim, quase ;-)
Se ele n�o tiver as permiss�es adequadas, ele n�o pode mais ver as palavras-chaves
dos outros utilizadores. Ele n�o poder� mais se autentificar como um outro utilizador
... mas, ele poder� sempre fazer descansadamente um su :)
Os dados que transitam pela a rede n�o ser�o cryptados, a exep��o das
palavras-chaves : nenhuma palavra-chave transita em claro sobre a rede.
NIS+ � uma ferramenta potente ... mas complicado a implementar. Como
Thorsten Kuduk (ele trabalha sobre NIS, NIS+, NIS-HOWTO ... enfim, uma pessoa
que sabe do que se trata ;-) escreve :
"A escolhe emtre NIS e NIS+ �
f�cil de fazer : utiliza NIS quando n�o tem necessidade de seguran�a importante.
NIS+ � bem mas problem�tico a administrar (particularmente do lado do servidor)"
Conclus�o
Agora sabemos como inserir uma nova maquina numa rede existente e tendo
um servidor NIS. Veremos, no pr�ximo epis�dio, como configurar o servidor
e o seu funcionamento.
Footnotes
- ... var/yp/binding1
- As localiza��es dos ficheiros s�o raramente especificadas porque elas varient
de uma distribui��o a outra. Por exemplo, para ter um dem�nio ypbind inicializado ao arranque : /etc/init.d/nis,
/sbin/init.d/ypclient, /etc/rc.d/init.d/ypbind, /etc/rc.local
- ... broadcast2
- isso significa que a mensagem � emitida sobre todo a sub-rede sem
destinat�rio especifico com um endere�o do tipo X.Y.0.0
- ... netgroup3
- O ficheiro /etc/netgroup define os grupos compostos dos triplets (host,
user, domain) servem para verificar as permiss�es quando se utiliza os
comandos "a distancia" (remote logins, shells ou mount por exemplo). Ver a
p�gina man para mais pormenor.