NIS

Um dos principais objetivos em uma rede local é fornecer para os usuários um ambiente que torne a rede transparente. Um importante passo é manter dados importantes, como informações de todas as contas de usuários na rede sincronizadas em todas as máquinas, pois isto permite ao usuário mover-se de uma máquina para outra sem o inconveniente de ter que se lembrar de diferentes senhas, ou copiar dados de uma máquina para outra.

Esse é o principal objetivo do serviço NIS (Network Information Service ou Serviço de Informação de Rede). A informação administrativa que é armazenada no servidor não precisa ser duplicada, e assim é possível medir a consistência dos dados, aumentar a flexibilidade para os usuários e também tornar a vida do administrador do sistema muito mais fácil através da manutenção de uma única cópia da informação requerida.

Sendo este o seu principal propósito, o servidor deve conter uma quantidade considerável de informações disponíveis na rede local, sendo que estas poderão ser:

Se, por exemplo, uma entrada contendo uma senha é gravada em uma base de dados NIS, o usuário será capaz de acessar qualquer máquina da rede que contenha os programas-cliente do NIS que estão sendo executados, como se fosse sua própria máquina.

NIS é baseado em RPC (Remote Procedure Call ou Chamada de Procedimento Remoto), e é composto basicamente do servidor, que armazena as informações do cliente, que acessa o servidor, e de várias ferramentas administrativas. Originalmente, NIS era chamado de YP (Yellow Pages ou Páginas Amarelas), que ainda é utilizado para referenciá-lo. Infelizmente, “páginas amarelas” é uma marca registrada da British Telecom™, e portanto a Sun®, desenvolvedora do NIS, descartou este nome. Entretanto, estes nomes são utilizados nos comandos e pacotes utilizados para a configuração do servidor, tais como ypserv e ypbind.

O NIS mantém as informações da base de dados em arquivos chamados mapas, que contêm pares formados por chave-valor. Um exemplo deste par é o nome de usuário mais a senha de acesso criptografada. Os mapas são armazenados em uma máquina que está executando o NIS, da qual os clientes podem recuperar as informações através de chamadas RPC.

Os mapas são gerados usualmente a partir dos arquivos “mestre”, tais como /etc/hosts ou /etc/passwd. Para alguns arquivos são criados vários tipos de mapas, cada um para um tipo de chave de procura. Por exemplo, um cliente pode buscar o nome de uma certa máquina tanto pelo nome da máquina como pelo seu endereço IP. Em conseqüência, dois mapas são derivados: hosts.byname e hosts.byaddr.

Existem dois tipos de servidores: servidores mestre e escravo. Um servidor mestre é uma máquina exclusiva, com um domínio particular, que mantém os mapas autenticados. O mestre executa o servidor ypupdated, que alerta os servidores escravos, pedindo para que eles atualizem suas cópias dos mapas (todas as outras máquinas no domínio devem obter suas informações do servidor mestre, direta ou indiretamente). Os servidores escravos agem como intermediários entre os clientes e o mestre, mantendo réplicas exatas dos mapas contidos no servidor principal. Todas as mudanças de mapas são feitas no mestre, e portanto, as mudanças se propagam do mestre para os servidores escravos. As máquinas cliente, por sua vez, executam o servidor ypbind, que as torna capazes de executar processos para obterem as informações de um servidor. As máquinas cliente não mantêm os mapas, porém, preferivelmente, consultam os servidores para informações sobre o sistema e conta de usuários.

Implementação do serviço de NIS

Pré-requisitos

Para a instalação de um servidor NIS são necessários os seguintes pré-requisitos:

  • sua rede deve estar corretamente configurada e funcional;

  • o serviço portmap deve estar sendo executados no servidor.

Instalação

Para a instalação dos pacotes necessários para um servidor NIS, execute o Synaptic e instale os seguintes pacotes:

  • ypserv

  • ypbind-mt

  • yp-tools

Para as máquinas cliente são suficientes os pacotes:

  • ypbind-mt

  • yp-tools

ou utilize o apt-get para a instalação:

# apt-get install ypbind-mt yp-tools ypserv

Configuração

Esta seção refere-se à configuração de um servidor e das máquinas clientes. Se você estiver interessado em montar um servidor mestre e outros servidores escravos, procure na documentação indicada na .

Após a instalação dos pacotes, deve-se primeiramente verificar se o nome do servidor NIS está correto. Para isso, basta executar o comando nisdomainname e verificar o resultado. É importante observar que o domínio NIS não está relacionado de nenhuma forma com o domínio DNS, mesmo que na maioria das vezes o nome de domínio seja o mesmo.

# nisdomainname
minhaorganizacao.

É importante verificar o ponto após o domínio. Se algo estiver incorreto, basta executar nisdomainname [dominio_correto].

O próximo passo é incluir a máquina que deverá ser o servidor. Para isso, execute o seguinte comando:

# /usr/lib/yp/ypinit -m

At this point, we have to construct a list of the hosts which 
will run NIS servers.  kepler in the list of NIS server hosts.
Please continue to add the names for the other hosts, one per
line.  When you are done with the list, type a
<control D>.
        next host to add:  kepler
        next host to add: 

# Digite aqui o Control-d

The current line of NIS servers looks like this:

kepler.minhaorganizacao

# Pressione y (sim) na próxima linha, se 
# tudo estiver correto 

Is this correct?  [y/n: y]  y
We need some  minutes to build the databases...
Building /var/yp/servidor./ypservers...
Running /var/yp/Makefile...
gmake[1]: Entering directory `/var/yp/servidor.'
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
Updating hosts.byname...
...

kepler has been set up as a NIS master server.

Este comando irá gerar a base de dados do NIS e incluir as informações para que as máquinas da rede possam acessar o servidor.

Após estas configurações execute o Webmin e acesse o menu Rede -> Cliente e Servidor NIS -> Servidor NIS. A Figura 13.5. Configuração do Servidor NIS mostra esta tela.

Modifique as seguintes opções:

Habilitar o servidor NIS?: Marque o botão Sim.

Nome do servidor NIS: Marque o botão mais à esquerda, e preencha o campo com o nome do domínio que está sendo configurado, como mostrado no exemplo.

Tipo de servidor: Marque a opção Servidor NIS Primário.

Configuração do Servidor NIS

Figura 13.5. Configuração do Servidor NIS

As outras opções podem ser deixadas como estão mostradas. Pressione Salvar e Aplicar para finalizar a configuração do servidor, que será iniciado automaticamente.

[Note]Nota

Em muitos casos, o servidor NIS funciona corretamente apenas se o cliente NIS estiver configurado na mesma máquina que é o servidor, ou seja, muitas vezes além de configurar a máquina como servidor, também é necessário configurá-la como cliente.

As máquinas cliente podem ser configuradas através do Webmin em Rede -> Cliente e Servidor NIS -> Cliente NIS. Veja a Figura 13.6. Configuração de um Cliente NIS:

Configuração de um Cliente NIS

Figura 13.6. Configuração de um Cliente NIS

Você deve preencher o primeiro campo com o domínio do servidor (marcando o botão mais à esquerda, e preenchendo a caixa de texto), e o segundo campo deve ser configurado com a opção Encontrar por broadcast.

Para garantir controle de acesso, pode-se também configurar, no servidor, o arquivo /etc/ypserv.conf, que contém uma lista de regras e máquinas, úteis para a segurança do sistema. Uma linha do arquivo pode ser composta por uma opção, contendo o seguinte formato:

opção: [sim|não]

ou, uma linha pode ser uma regra de acesso:

host: mapa: segurança: campo_seguro

os possíveis valores do campo campo_seguro podem ser yes ou no. Se o campo for habilitado, será testada a segurança do campo, ou seja, o campo será substituído por um “x” se a verificação da porta revelar que existe uma requisição que não possua os privilégios necessários.

Veja um exemplo simples deste arquivo:

# Some options for ypserv. This things are all not 
# needed, if you have a Linux net.
dns: no

# The following, when uncommented, will give you shadow 
# like passwords.
# Note that it will not work if you have slave NIS 
# servers in your network that do not run the same 
# server as you.

# Host : Map                   : Security   : Passwd_mangle
#
  *    : passwd.byname         : port       : yes
  *    : passwd.byuid          : port       : yes
...

  *    : shadow.byname         : port       : yes
  *    : passwd.adjunct.byname : port       : yes

A opção dns é opcional em uma rede Linux. Em seguida, são mostradas as regras de acesso, indicando as máquinas (hosts) que possuem acesso às regras e mapas (neste caso, todas as máquinas - “*”). Os mapas devem ser indicados (por exemplo, o primeiro mapa indica a busca de senhas pelo nome) seguidos pelo meio de segurança; existem as seguintes opções de segurança:

none: sem restrições ao mapa indicado.

port: permite acesso somente se a requisição vem de uma porta menor que 1024.

deny: não permite acesso algum ao mapa indicado.

des: necessita de uma autenticação DES (ainda não implementada).

Por fim, o último campo indica qual campo será monitorado (neste caso, o campo de senha). Se for colocada a opção no, este campo não será monitorado.

[Note]Nota

As regras de acesso para determinados mapas não garantem um aumento real de segurança, mas dificultam o trabalho de um possível invasor. Veja as páginas de manual para mais detalhes (man ypserv.conf e man ypbind).

Você pode também configurar estas opções em Segurança do Servidor, na página inicial de configuração do módulo NIS.

Um outro modo de restringir o acesso aos usuários em seu servidor NIS é através do arquivo /etc/passwd. Primeiro, deve-se configurar o servidor como uma máquina cliente (veja logo a seguir) e adicionar as linhas iniciadas com o sinal “+” no meio do arquivo, antes de listar os usuários. Veja o exemplo:

root:x:0:0:root:/root:/bin/bash
daemon:*:1:1:daemon:/usr/sbin:
bin:*:2:2:bin:/bin:
sys:*:3:3:sys:/dev:
sync:*:4:100:sync:/bin:/bin/sync
man:*:6:100:man:/var/catman:
lp:*:7:7:lp:/var/spool/lpd:
mail:*:8:8:mail:/var/spool/mail:
uucp:*:10:50:uucp:/var/spool/uucp:
...
+ana::::::
+marcio::::::
+:*:::::
[ Todos os usuários normais após esta linha! ]
ana:x:500:500:ana:/home/ana:/bin/bash
marcio:x:501:501:marcio:/home/marcio:/bin/bash

O sistema irá ignorar todas as entradas marcadas, e irá buscá-las no servidor. Esse é um meio de se garantir integridade e segurança.

[Note]Nota

A tabela de usuários NIS pode também ser editada pelo Webmin, através da opção Tabelas NIS na página inicial de configuração do módulo NIS.

Um meio mais rápido e eficiente de garantir a autenticação de usuários é através do arquivo /var/yp/securenets. Ele define acessos diretos de clientes NIS ao servidor. O arquivo contém pares de máscara_rede/end_IP. Se a máquina cliente estiver na mesma rede que o servidor, pode-se colocar a palavra host ou a máscara 255.255.255.255. Veja o exemplo:

# Always allow access for localhost
255.0.0.0       127.0.0.0

# This line gives access to everybody. PLEASE ADJUST!
host 10.0.2.62
host 10.0.2.85

Testes de Configuração

Após as configurações, você pode fazer os seguintes testes:

  • Configure o servidor como uma máquina cliente, e execute o serviço ypbind. Se ele achar o servidor, a configuração estará correta.

  • Configure uma máquina cliente qualquer e execute o serviço ypbind. Tente acessar a máquina com um outro usuário que esteja autenticado no servidor NIS, mas que anteriormente não tinha uma conta de acesso na máquina. Se o acesso foi permitido, a configuração está correta.

  • Digite nisdomainname na máquina cliente e verifique se o domínio está correto.

Referências