|
sistema
(continuação)
Na última edição começamos a desvendar os
segredos da rede Linux. Este mês, vamos continuar a série e conhecer um
pouco mais
sobre alguns de seus aspectos.
Como de costume, tanto a edição
de arquivos quanto a execução de comandos devem ser feitas como
superusuário. Então todo cuidado é pouco. Além disso, como algumas
distribuições não seguem padrões, é possível que algumas ações não
funcionem na sua. Se este for o caso, consulte a documentação.
Desvendando o NIS
Num ambiente com muitos usuários
e muitas máquinas, manter cópias dos usuários e grupos em todas as máquinas
é, no mínimo, não muito prático. Para simplificar, você pode usar o Network
Information Service, ou NIS. A função do NIS é levar informações da rede
para todas as máquinas que dela fazem parte. Estas informações são
geralmente os usuários e os grupos do sistema.
Vejamos como colocar nossa
máquina kepler em uma rede NIS.
Vamos supor que nosso servidor
NIS seja a máquina newton e que seu endereço IP seja 192.168.1.1
Antes de mais nada, editemos o
arquivo
/etc/sysconfig/network
para configurar o nome do nosso domínio:
HOSTNAME=kepler
NISDOMAIN=ciencia.
Em seguida, executemos o comando
abaixo para que a configuração fique ativa sem necessidade de reiniciar a
rede:
#
nisdomainname ciencia.
Agora que a máquina já possui um
domínio NIS, precisamos configurar o serviço ypbind para que este conecte a
máquina ao servidor NIS durante a inicialização do sistema. Para isso,
devemos editar o arquivo
/etc/yp.conf para que
se pareça com:
domain
ciencia. server newton.ciencia
Este é, aliás, mais um motivo
para se usar apelidos (vide edição pas--sada). Poderíamos dar à máquina
newton o apelido de nis. Assim, se por alguma razão a máquina newton não
pudesse mais ser usada como servidor NIS, bastaria configurar outra máquina
como servidor e dar-lhe o apelido de nis e as máquinas clientes jamais
notariam a diferença, pois já estariam “apontando” para nis.ciencia.
Precisamos, então, iniciar o
serviço ypbind para ligar a máquina ao servidor:
#
/etc/init.d/ypbind start
#
chkconfig --add ypbind
Há um pequeno detalhe que não
podemos esquecer: O serviço ypbind tem de ser capaz de encontrar o servidor
NIS. Como durante a iniciali-zação pode acontecer de o servidor DNS ainda
não ter sido contactado quando o NIS é iniciado, precisamos ter certeza de
que nossa máquina pode achar o servidor de qualquer maneira. Como fazer
isso? É nosso velho amigo
/etc/hosts quem vai
nos ajudar. Aliás, notaram como o hosts é muito útil para um arquivinho que
teve sua função primária roubada pela criação do DNS e já deveria ter
morrido há tempos?
Para que o ypbind sempre encontre
o servidor, incluímos a seguinte linha no arquivo /etc/hosts:
192.168.1.1
newton.ciencia newton
Precisamos ainda nos assegurar de
que o serviço portmap está sendo inicializado antes do ypbind.
Agora os usuários da rede podem
conectar-se à nossa máquina. Notemos que eles não terão um diretório /home, a não ser que criemos um para aqueles
que o necessitarem.
Como funciona
o inetd.conf
Uma das grandes dúvidas de
administradores menos experientes é quanto ao suposto desaparecimento dos
serviços de telnet e FTP em versões mais recentes de algumas distribuições.
Na verdade, este “desapareci-mento” foi apenas uma medida de segurança.
Algumas distribuições, preocupadas com a segurança de seus clientes,
resolveram que, por padrão, as portas associadas a diversos serviços iriam
fechadas. É o caso do FTP, do telnet, do POP3 e muitas outras.
Para resolver este problema,
apelamos para um dos arquivos mais importantes no /etc: o inetd.conf.
Se visualizarmos o conteúdo deste
arquivo, veremos diversas linhas semelhantes às abaixo:
#ftp
stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
#telnet
stream tcp nowait root /usr/sbin/tcpd in.telnetd
Cada uma destas linhas representa
um serviço. Para habilitar o FTP e o Telnet, simplesmente desco-men-ta-mos
as linhas correspondentes e reiniciamos o serviço inetd.
As linhas do inetd.conf têm o seguinte formato:
[serviço]
[tipo de socket] [protocolo] [wait/nowait] [usuario] [exec] [arg]
Estes campos são:
Serviço: é
o nome do serviço
Tipo de
Socket: pode ser “stream’’, “dgram’’, “raw’’ ou “rdm’’. Para mais
informações vide man socket
Protocolo:
é o protocolo usado pelo serviço. Pode ser “tcp” ou “udp”, por exemplo, ou
qualquer protocolo especificado em /etc/protocols
wait/nowait: com exceção de sockets do tipo “dgram”, todos os outros
deveriam sempre usar “nowait”. Este campo indica se o serviço libera o
socket para o inetd logo após a conexão, permitindo que o mesmo socket seja
usado para outras conexões (nowait) ou se o socket fica “preso” (wait)
Usuário:
especifica com qual usuá-rio o serviço será executado. Isto permite que
sejam dadas menos permissões a um serviço
Exec: o
nome do programa a ser exe-cutado para processar a conexão.
Arg: a
linha de comando completa com os parâmetros a serem passados para o
programa especificado em
[exec].
Este arquivo é de suma
importância na rede. É muito comum em listas de segurança perguntas sobre
linhas “estranhas” no arquivo. Realmente é comum que um usuário mal
intencionado inclua uma linha no inetd.conf para lhe dar acesso futuro.
Veja, por exemplo, a linha abaixo:
asp
stream tcp nowait root /bin/ls /bin/ls -l
Se nos conectarmos a esta máquina
usando a porta do serviço asp (telnet localhost asp), receberemos uma
listagem detalhada do diretório. Podemos imaginar o que um usuário mal
intencionado poderia fazer al-terando esta linha, para executar outros
comandos como, por exemplo, o bash.
Devemos sempre verificar se não
há linhas “estranhas” no arquivo, e nunca abrir portas que não têm
necessidade de ser abertas.
Roberto Teixeira
maragato@conectiva.com.br
| |