NIS Serviço de Informação em Rede

Transcrição

NIS Serviço de Informação em Rede
NIS ­ Serviço de Informação em Rede Artigo extraído do link: http://wiki.sintectus.com/bin/view/GrupoLinux/ArtigoServidorNIS Este capítulo trata do Serviço de Informação em Rede, que permite que as configurações de um servidor, como senhas de usuários possam ser compartilhadas e utilizadas em outros clientes da rede. NIS ­ O Serviço de Informação em Rede. O Serviço de Informação em Rede ­ Network Information Service ­ tem como finalidade a centralização da Administração dos Serviços em um Servidor, denominado servidor NIS. Entre as várias funções do NIS, a mais importante é a centralização da administração de usuários. O servidor NIS utiliza uma base de dados baseada em mapas, que são gerados a partir de arquivos como o /etc/passwd, ou seja, a partir de arquivos de administração e configuração local, o NIS cria mapas que são necessários para gerar seu banco de dados. Mapas são armazenados em um servidor central ­ servidor NIS ­ e podem ser acessados por clientes. Estes mapas onde o cliente obtém as informações necessárias são armazenados geralmente no formato DBM. DBM é um formato de armazenamento de informações que usa técnicas de hashing que aceleram o processo de pesquisa. Existe uma implementação livre de biblioteca para manipulação de base de dados DBM no projeto GNU e é chamada de gdbm, que faz parte de muitas distribuições do Linux. Assim como o NFS, o NIS utiliza da tecnologia RPC, Chamada de Procedimento Remoto, a partir do qual os clientes acessam as informações no servidor. Isto permite que as informações contidas em arquivos administrativos do servidor possam ser disseminados por toda uma rede. O NIS foi desenvolvido pela empresa Sun Microsystems® e era originalmente conhecido como Páginas Amarelas, que é traduzido em inglês por Yellow Pages, mas seu nome teve quer ser alterado devido a problemas de direitos autorais, uma vez que a empresa Bell South já era dona da marca registrada "Yellow Pages". Devido a isso, os pacotes de instalação, arquivos de configuração do serviço e nomes de arquivos binários do NIS continuam com as iniciais YP. O objetivo desse sistema era implementar um ambiente comum para todos os usuários da rede, fazendo com que informações básicas como nomes de usuários, senhas, relação de máquinas da rede, e etc fossem compartilhadas. Outras tecnologias semelhantes Existem outras tecnologias para o compartilhamento de informações em rede, podemos citar o NIS+ (NISPLUS) e o LDAP. A Sun Microsystems também desenvolveu uma versão aprimorada do NIS chamada NIS+ (NISPLUS). Essa nova versão inclui algumas diferenças como: o NIS+ não usa mapas para a distribuição de informações, mas sim tabelas. Cada tabela é dividida de modo a que suas linhas representam objetos de sua base de dados e as colunas representam as propriedades desses elementos. Além disto, sua organização se parece com a hierarquia do DNS. Neste documento não iremos tratar do NIS+, mas apenas do NIS. Para mais informações sobre o NIS+ você pode consultar seu site oficial : http://www.linux­nis.org, que coincidentemente também é o site oficial do NIS. Você pode obter os fontes para compilação e instalação em: ftp://ftp.kernel.org/pub/linux/utils/net/NIS+. O LDAP (Lightweight Directory Access Protocol) é também uma tecnologia utilizada para compartilhamento de informações, mas diferente do NIS, pois provê serviços de "Diretório", inclusive permitindo funcionar como um banco de dados distribuído, tal como o DNS. Um Diretório é organizado em forma de árvore, e suas informações tendem a ser mais lidas do que escritas e são organizadas para darem respostas rápidas e suportar um grande volume de pesquisas. Mais informações sobre o LDAP e sua implementação você pode encontrar no LDAP How­To em http://www.linuxdoc.org/HOWTO/LDAP­HOWTO.html e na página do grupo que mantém seu desenvolvimento: http://www.openldap.org.
Instalando o NIS Os pacotes necessários para instalação do NIS são: ypserv e ypbind, o primeiro é o pacote referente ao servidor, o segundo é referente ao cliente NIS. Você pode encontrar a instalação do NIS em pacotes rpm e pode encontrar os fontes em arquivos compactados com o tar. Para instalar o NIS a partir de pacotes rpm, execute: #rpm ­ivh ypserv.X.Y.Z.i386.rpm #rpm ­ivh ypbind.X.Y.Z.i386.rpm Repare que X.Y.Z é a versão do pacote a ser instalado. Outro pacote que deve ser instalado é o yp­tools.X.Y.Z.i386.rpm, que contém ferramentas administrativas, como o yppasswd, que permite troca de senha. Este pacote é necessário para instalação do cliente NIS. Verifique antes de instalar os pacotes do NIS se o portmap já está instalado. Caso não esteja, será necessário instalá­lo. %DEBIAN% Podemos instalar o nis pela ferramenta apt. lab152:~# apt­get install nis Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: libc6 libc6­dev locales Suggested packages: glibc­doc manpages­dev The following NEW packages will be installed: nis The following packages will be upgraded: libc6 libc6­dev locales 3 upgraded, 1 newly installed, 0 to remove and 451 not upgraded. Need to get 11.6MB of archives. After unpacking 647kB of additional disk space will be used. Do you want to continue? [Y/n] lab152:~# apt­get install portmap Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: libc6 libc6­dev locales Suggested packages: glibc­doc manpages­dev The following packages will be upgraded: libc6 libc6­dev locales portmap 4 upgraded, 0 newly installed, 0 to remove and 450 not upgraded. Need to get 11.4MB of archives. After unpacking 20.5kB disk space will be freed. Do you want to continue? [Y/n] Durante a instalação do nis será perguntado sobre o domínio nis da maquina
Entendendo o Servidor NIS O principal uso de um servidor NIS é oferecer uma autenticação centralizada. Ou seja, podemos criar contas de usuários no servidor e estes usuários podem efetuar logon nas estações clientes NIS, ou seja, as contas de usuários necessitam apenas ser criadas no servidor, permitindo uma administração centralizada. Assim, não é necessário criação de contas de usuários nas estações de trabalho, poupando um esforço considerável, ainda mais quando se tem muitas estações na rede. Com a tecnologia cliente/servidor NIS, todas as configurações serão definidas no servidor e os clientes consultarão o servidor através de chamadas de procedimentos remotos ­ RPC (tecnologia criada pela Sun Microsystems). Como foi citado, o NIS trabalha com mapas, que podem ser classificados em duas categorias: Arquivos de Administração do Sistema Arquivos de Administração de Redes Segue abaixo a relação de arquivos de configuração do Sistema: /etc/passwd Através deste arquivo o NIS gera os mapas passwd.byaddr e passwd.byname. Este arquivo é o arquivo de administração de usuários. /etc/shadow Os dados deste arquivo são anexados ao mapa passwd.byaddr, pelo fato de ser o arquivo de senhas do Linux, este arquivo é consideravelmente novo no Linux, pois antigamente o arquivo passwd guardava também as senhas do usuários. Por este motivo o NIS não cria necessariamente um mapa relativo a este arquivo, ele apenas anexa­o no mapa passwd.byaddr. /etc/group Através deste arquivo o NIS gera os mapas group.byaddr e group.byname. Os próximos arquivos são referentes à Administração de Redes. /etc/hosts
Produz os mapas hosts.byname e hosts.byaddr. Este arquivo é responsável pela resolução de nomes quando não se deseja resolver nomes não providos por um servidor DNS (Vide capítulo 2). Da mesma forma será criado mapas para os arquivos /etc/protocols, /etc/services, /etc/aliases, etc. Para você checar quais arquivos que o NIS armazenará os mapas. Para isto use o comando: # ypcat ­x Use "ethers" for map "ethers.byname" Use "aliases" for map "mail.aliases" Use "services" for map "services.byname" Use "protocols" for map "protocols.bynumber" Use "hosts" for map "hosts.byaddr" Use "networks" for map "networks.byaddr" Use "group" for map "group.byname" Use "passwd" for map "passwd.byname" Todos este mapas serão armazenados no Servidor NIS que terá como serviço o ypserv (Daemon do Servidor NIS). No caso dos clientes, o serviço que deve ser iniciado é o ypbind (Daemon do Cliente NIS).
Fig. 1 ­ Conversão para o formato dbm. Tanto o servidor como o cliente NIS devem pertencer a um domínio, este domínio é denominado domínio NIS e deve ser definido no servidor. O NIS utiliza do nome do domínio NIS para criar um diretório dentro do diretório /var/yp, o nome deste diretório será o nome do domínio. Dentro deste diretório serão armazenados os mapas da base de dados NIS. Exemplo: caso você defina o domínio NIS como sistemasabertos.com.br, o diretório onde estará a base de dados NIS será /var/yp/sistemasabertos.com.br. Este domínio não tem nenhuma relação com o domínio Internet, podendo ser um nome completamente diferente. Definindo um domínio NIS. Fig. 2 ­ Definindo um domínio NIS. Há duas formas de definir um domínio NIS:
1.O domínio NIS pode ser definido através do comando domainname, veja o exemplo: #domainname sistemasabertos.com.br Este comando atribui o domínio NIS temporariamente, quando a máquina é reinicializada o mesmo perde esta configuração. Para isto existe arquivo para armazenar este parâmetro. Nas distribuições Conectiva e Red Hat o arquivo utilizado é /etc/sysconfig/network, em outras distribuições existem um arquivo chamado /etc/defaultdomain. Veja o exemplo de configuração para a distribuição Conectiva: NETWORKING=yes FORWARD_IPV4="no" HOSTNAME="intranet.sistemasabertos.com.br" DOMAINNAME=sistemasabertos.com.br GATEWAY="10.1.0.3" GATEWAYDEV="eth0" NISDOMAIN=dominio­nis O parâmetro NISDOMAIN define o domínio NIS que o servidor irá gerenciar. Insira nesse valor o nome do seu domínio NIS para que seu servidor se configure na inicialização. #/etc/rc.d/init.d/network start 2.Esta última forma é mais adequada, pois trata de uma configuração especifica para o NIS. Imagine se você quer que o domínio da máquina (Domínio relativo ao DNS) seja diferente do domínio do NIS. Neste caso você deve usar este exemplo de configuração. Para este tipo de configuração existe o comando nisdomainname, veja a sintaxe: # nisdomainname meudominio Neste exemplo o domínio NIS será "meudominio". Assim como domainname, o nisdomainname apenas configura temporariamente o domínio NIS, logo você deve alterar o arquivo /etc/sysconfig/networks; eis aqui um exemplo: NETWORKING=yes FORWARD_IPV4="no" HOSTNAME="intranet.sistemasabertos.com.br" DOMAINNAME=sistemasabertos.com.br GATEWAY="10.1.0.3" GATEWAYDEV="eth0" NISDOMAIN=meudominio Para que as alterações tenham efeito reinicie o serviço network. Depois destas configurações devemos, no caso do servidor, inicializar o serviço ypserv, mas antes disto deve ser inicializado o serviço portmap, pelo fato do NIS trabalhar com a tecnologia RPC. O servidor portmap é responsável por organizar quais são as portas corretas que se deve procurar para ter acesso a determinados dados de programas que utilizam chamadas RPC (Remote Procedure Calls). Quando programas que utilizam RPC´s são inicializados eles dizem ao portmap que portas estarão escutando e, qualquer tentativa de acesso a esses programas irá passar pelo portmap primeiro. Para mais informações sobre o portmap você deve consultar a página de manual desse programa ou o livro Guia do Administrador de Redes de Olaf Kirch, traduzido pela Conectiva informática e disponível para download gratuito em http://www.conectiva.com.br/docs. Para isso devemos executar: #/etc/rc.d/init.d/portmap start #/etc/rc.d/init.d/ypserv start
O que define a máquina como sendo servidor NIS ou cliente NIS é o serviço que está rodando na mesma. Logo, podemos concluir que a configuração do cliente é apenas inicializar o ypbind?. A resposta é não, você deve definir o domínio NIS da mesma forma que foi apresentada para o servidor, e ainda definir quem será o seu servidor NIS. Esta última afirmação não precisa ser exatamente desta forma, o ypbind (serviço do cliente) pode enviar um pedido via broadcast [anúncio] perguntando por algum servidor NIS na rede, caso exista ele se ajuntará ao mesmo, portanto existe mais de uma forma para encontrar um servidor NIS na rede. Veremos a configuração do cliente passo a passo na seção referente à configuração do cliente. %DEBIAN% Editar o arquivo com o dominio #vi /etc/defaultdomain sa.com.br Arquivos de Configuração do NIS /etc/yp.conf Este arquivo é utilizado pelo ypbind (serviço cliente) para o mesmo encontrar o Servidor NIS. Veja o exemplo deste arquivo: # /etc/yp.conf ­ ypbind configuration file # Valid entries are # #domain NISDOMAIN server HOSTNAME # Use server HOSTNAME for the domain NISDOMAIN. # #domain NISDOMAIN broadcast # Use broadcast on the local net for domain NISDOMAIN # #ypserver HOSTNAME # Use server HOSTNAME for the local domain. The # IP­address of server must be listed in /etc/hosts. # Através deste exemplo verificamos que há três formas de encontrarmos o servidor NIS em uma rede.
·
·
·
No primeiro caso, você deve passar como parâmetro o NISDOMAIN e o nome do servidor NIS. No parâmetro HOSTNAME você pode usar o endereço IP ou o nome da máquina. Se você for usar o nome de máquina servidora, o endereço IP do servidor deve estar citado no arquivo /etc/hosts.
No segundo, você necessita apenas conhecer o nome do domínio NIS, este caso é conhecido como pedido via anúncio, pois ao inicializar o serviço ypbind, o mesmo envia um sinal por broadcast [difusão] solicitando um servidor NIS. Esta forma de configuração tem desvantagem em relação a segurança, pois o ypbind se conectará ao primeiro servidor NIS que ele encontrar em rede. Assim, sua máquina poderá utilizar de um servidor não autorizado na rede, o que pode ser problemático.
Nesta última somente é necessário o nome ou endereço IP do Servidor NIS. Para usar o nome do host, o endereço IP deve estar listado no arquivo /etc/hosts, ou ser resolvível via DNS. /etc/ypserv.conf Este é o arquivo de configuração do serviço ypserv. Este arquivo contém opções de configuração do ypserv. Ao ser carregado o serviço ypserv, este serviço lê este arquivo e a partir deste ele cria os mapas da base de dados NIS. Este arquivo será detalhado mais nas seções posteriores. 3.3 %DEBIAN% No debian, p ypsev não é chamado através do comando #/etc/init.d/ypserv restart
Ele é tratado como um comando executável #ypserv /etc/nsswitch.conf Este arquivo define a ordem de pesquisa das fontes de informações. Veja um exemplo deste arquivo: passwd: files nisplus nis shadow: files nisplus nis group: files nisplus nis hosts: files nis dns ethers: files netmasks: files networks: files protocols: files rpc: files services: files netgroup: nisplus publickey: nisplus automount: files nisplus aliases: files nisplus Para exemplificação do uso deste arquivo utilizaremos a entrada hosts deste arquivo. Esta diretiva define que a resolução de nome para endereço IP será primeiramente baseado no arquivo hosts, pois o parâmetro é files. Caso o arquivo /etc/hosts falhe na resolução, a resolução é então passada para o nis, somente depois é verificado o DNS, se o nis falhar. Para os outros parâmetros do arquivo a lógica é semelhante, sempre que o Linux tentar encontrar informações sobre algo, seja lista de usuários, senhas, grupos e etc, ele irá fazer a busca na ordem imposta pelo arquivo /etc/nsswitch.
Configurando o Servidor NIS Neste tópico estaremos apresentando todos os passos para configurar o Servidor NIS. Segue abaixo as etapas de configuração numerados: 1.Definir um domínio NIS, para isto execute os seguintes passos: #vi /etc/sysconfig/network NETWORKING=yes FORWARD_IPV4="no" HOSTNAME="lab1.sistemasabertos.com.br" DOMAINNAME=sistemasabertos.com.br GATEWAY="10.1.0.3" GATEWAYDEV="eth0" NISDOMAIN="meudominio" Depois de configurado reinicie o serviço network, #/etc/rc.d/init.d/network restart Observe que neste exemplo definimos o nome do domínio NIS como sendo meudominio. Você observou anteriormente que poderíamos usar o comando domainname e nisdomainname para atribuir o nome do domínio NIS. Neste caso, nós usaremos este comando para verificarmos se realmente depois de reiniciado o serviço network o domínio estará configurado. Logo, ao executar o nisdomainname devemos ter como saída o nome "meudominio". #nisdomainname meudominio Caso a saída seja a apresentada acima, sua configuração está correta. 2.Devemos agora iniciar o serviço do Servidor NIS, não esquecendo que o serviço portmap deve estar rodando anteriormente. /etc/rc.d/init.d/ypserv start 3.Devemos agora criar os mapas da base de dados NIS. #cd /var/yp #make O comando criará o diretório meudominio onde estará o mapas da base de dados NIS. 4.Agora inicie o serviço yppasswd: #/etc/rc.d/init.d/yppasswd start Este serviço permite que o cliente mude sua senha através de uma máquina cliente. É importante salientar que toda vez que é criado um novo usuário ou é alterado uma senha, a base de dados do NIS deve ser atualizada; isto é visto posteriormente. Aqui termina a configuração do Servidor NIS. Não se esqueça também de configurar os serviços portmap e ypserv para serem inicializados automaticamente quando a máquina é inicializada.
%DEBIAN% Após definirmos o dominio nis durante a instalaçao e o dominio atraves do /etc/defaultdomain, devemos adicionar os usuarios que desejamos com o comando adduser usuario. A seguir, devemos carregar o ypserv por linha de comando e criaremos os mapas de dados atraves de: #cd /var/yp #make Editaremos /etc/default/nis para definir o comportamento da maquina (servidor ou cliente) #vi /etc/default/nis # /etc/defaults/nis Configuration settings for the NIS daemons. # # Are we a NIS server and if so what kind (values: false, slave, master) NISSERVER=master # Are we a NIS client (i.e. start ypbind?) NISCLIENT=false # Location of the master NIS password file (for yppasswdd). # If you change this make sure it matches with /var/yp/Makefile. YPPWDDIR=/etc # Do we allow the user to use ypchsh and/or ypchfn ? The YPCHANGEOK # fields are passed with ­e to yppasswdd, see it's manpage. # Possible values: "chsh", "chfn", "chsh,chfn" YPCHANGEOK=chsh # NIS master server. If this is configured on a slave server then ypinit # will be run each time NIS is started. NISMASTER= # Additional options to be given to ypserv when it is started. YPSERVARGS= # Additional options to be given to ypbind when it is started. YPBINDARGS= # Additional options to be given to yppasswdd when it is started. Note # that if ­p is set then the YPPWDDIR above should be empty. YPPASSWDDARGS= # Additional options to be given to ypxfrd when it is started. YPXFRDARGS= Reiniciando o serviço NIS e o portmap #/etc/init.d/portmap restart #/etc/init.d/nis restart
Configurando o Cliente NIS. A configuração do cliente NIS se baseia nas seguintes etapas: 1.Esta primeira etapa é análoga à primeira do servidor, pois o cliente necessita de um domínio NIS. Você deve editar novamente o arquivo /etc/sysconfig/network. Veja abaixo: #vi /etc/sysconfig/network NETWORKING=yes FORWARD_IPV4="no" HOSTNAME="lab2.sistemasabertos.com.br" DOMAINNAME=sistemasabertos.com.br GATEWAY="10.1.0.3" GATEWAYDEV="eth0" NISDOMAIN="meudominio" Neste arquivo observamos que a máquina cliente será a lab2.sistemasabertos.com.br, e que ela pertence ao domínio NIS "meudominio". Reinicie o serviço network e execute nisdomainname para ver se as alterações tiveram efeito. 2.Edite o arquivo /etc/yp.conf #vi /etc/yp.conf # /etc/yp.conf ­ ypbind configuration file # Valid entries are # #domain NISDOMAIN server HOSTNAME # Use server HOSTNAME for the domain NISDOMAIN. # #domain NISDOMAIN broadcast # Use broadcast on the local net for domain NISDOMAIN # #ypserver HOSTNAME # Use server HOSTNAME for the local domain. The # IP­address of server must be listed in /etc/hosts. # ypserver 10.1.0.101 Note que este arquivo aceita vários tipos de entrada, com várias formas de identificar o servidor para este cliente. Neste caso, estamos utilizando a última forma, que é a mais simples, e lembrando também que o endereço IP referente neste cliente será o endereço IP do servidor, logo este endereço apresentado no exemplo é o endereço IP da máquina lab1.sistemasabertos.com.br. Uma entrada interessante deste arquivo é o uso do pedido via anúncio (broadcast), neste caso você não precisa saber o endereço IP do servidor, você precisa saber apenas o domínio NIS, para isto, no lugar de ypserver coloque a seguinte entrada no arquivo yp.conf: domain "meudominio" broadcast 3.Para terminar a configuracão do NIS, basta inicializarmos o serviço do cliente NIS, sabemos que o serviço que gerencia o cliente NIS é o ypbind, então: #/etc/rc.d/init.d/portmap start #/etc/rc.d/init.d/ypbind start Ligando ao domínio NIS... [ OK ] Aguardando por um servidor de domínios em NIS: 10.1.0.101
Observe que o cliente deve estar com o serviço portmap rodando antes de executar o ypbind. Se a saída do comando for similar à apresentada acima, sua configuração está correta. Repare que o servidor encontrado é o servidor 10.1.0.101 4.Em nossa configuração daremos ênfase na sincronização de usuários e informação de contas em todas as máquinas de um domínio NIS. Você deve alterar a ordem de pesquisa no arquivo nsswitch.conf relativo as campo passwd, group e shadow. Veja como deve ficar a configuração: passwd: nis files nisplus shadow: nis files nisplus group: nis files nisplus A partir deste momento você conseguirá efetuar logon na máquina cliente com um usuário que foi criado no servidor. Depois de funcionando o cliente e servidor NIS, você pode utilizar os programas oferecidos pelo pacote yp­tools, dentre os mais importantes temos os comando ypwhich e ypcat. Estes comandos são utilizados para verificação e teste no servidor e cliente NIS. Para listar todos os comandos, execute rpm ­ql yp­tools, por uma questão didática, iremos demonstrar a utilização de apenas alguns. O ypcat pode lhe mostrar quais são os mapas que seu servidor está armazenando. Para isso use­o com a opção ­x. # ypcat ­x Use "ethers" for map "ethers.byname" Use "aliases" for map "mail.aliases" Use "services" for map "services.byname" Use "protocols" for map "protocols.bynumber" Use "hosts" for map "hosts.byname" Use "networks" for map "networks.byaddr" Use "group" for map "group.byname" Use "passwd" for map "passwd.byname" Já o comando ypwhich pode lhe retornar o nome do servidor NIS que sua máquina está configurada para utilizar. # ypwhich dominio­nis Existe uma ferramenta também útil para configurar o cliente NIS, a ferramenta authconfig. Esta ferramenta faz exatamente os procedimentos dos itens de 1 a 3 explicado anteriormente, ou seja, configurar o cliente NIS para se autenticar em algum servidor da rede, realizando as alterações necessárias nos arquivos de configuração correspondentes. Vejamos sua aplicação: #authconfig As opções apresentadas no programas são :
·
·
·
Arquivo de senhas e NIS : essas opções definem que tipo de autenticação sua máquina irá usar. Se for escolhida "Arquivo de senhas" seu cliente irá consultar seus arquivos locais para realizar autenticação de usuários. Se for escolhido "NIS", ele irá então tentar encontrar o servidor NIS que lhe for indicado para realizar a autenticação de usuários.
Domínio NIS : uma vez que a opção NIS foi marcada, você deverá então especificar qual será o domínio NIS que seu cliente faça parte. Se marcado o item Pedido via anúncio quando utilizado não é preciso especificar o endereço IP do servidor, pois o cliente faz um pedido via broadcast na rede, procurando pelo servidor NIS indicado.
Servidor : você pode aqui especificar que máquina é a responsável pelo domínio NIS citado nos passos anteriores. Esse é o campo onde você deve colocar o endereço IP, ou nome, da máquina que é seu servidor NIS. As opções "usar senhas shadow" e "usar senhas MD5" só terão valor quando for utilizada a opção "Arquivo de senhas". %DEBIAN% Direcionando para o servidor NIS #vi /etc/yp.conf
ypserver 10.1.0.13 Definindo o comportamento do cliente NIS #vi /etc/default/nis # /etc/defaults/nis Configuration settings for the NIS daemons. # # Are we a NIS server and if so what kind (values: false, slave, master) NISSERVER=false # Are we a NIS client (i.e. start ypbind?) NISCLIENT=true Reiniciar o serviço NIS e o portmap #/etc/init.d/portmap restart #/etc/init.d/nis restart Atualizando os mapas do NIS automaticamente Os mapas que são criados no servidor NIS, contém informações do sistema, como: lista de usuários, senhas, grupos e etc. Deste modo, se qualquer alteração for realizada na sua relação de usuários, por exemplo, seus mapas do NIS já não irão refletir o estado atual do seu sistema. Para que sua base de dados do NIS fique atualizada você deve periodicamente executar a linha de comando "/var/yp/make". Automatizar essa tarefa com o cron pode lhe liberar algum tempo e evitar que seus mapas NIS fiquem desatualizados. Para agendar essa tarefar com o cron, chame o comando crontab com a opção ­e. # crontab ­e Adicione então uma linha, relativa a essa tarefa, que pode ser algo parecido com: 0,30 * * * * /var/yp/make Deste modo, seu servidor irá atualizar seus mapas do NIS a cada meia hora, de modo que não será mais necessário que você se preocupe com isso. Não se esqueça de manter seu servidor cron (crond) sempre em execução, senão essa tarefa não será executada.
Segurança no Servidor NIS Neste tópico veremos como aumentar a segurança no servidor NIS através de alguns arquivos de configuração. O NIS pode deixar o arquivo de senhas da rede acessível virtualmente a todos os usuários da rede local e a outras que possam estar conectadas a esta rede, o que torna o sistema vulnerável a intrusos, pois estes podem fazer uma requisição ao servidor NIS pedindo pelo mapa passwd.byaddr. Tendo acesso a este mapa, o intruso terá em mãos todas as contas e senhas do servidor NIS, pois com um simples programa de quebra de senhas e um ótimo dicionário este intruso poderá “quebrar” as senhas. Para isso o intruso precisa somente saber o nome do domínio NIS e o número IP do servidor NIS. Para consultar o mapa passwd.byaddr do servidor basta que o cliente NIS esteja configurado corretamente e executar: #ypcat passwd main:$1$T6utdAKu$7T93GpsfcpeVcYSt7NBGy1:511:515::/home/main:/bin/bash beltrano:$1$8INDBVA7$SMcIV6G4WKOCJqLXDmXB//:505:505::/home/beltrano:/bin/bash avalia1:$1$WY6Yr2Eg$89iuEFwWEtciJoWyp1iIQ1:685:685::/home/avalia1:/bin/bash ronaldo:$1$H9BkEwgy$yDg5dfH8WQRz3bYLWXb1R/:503:503::/home/ronaldo:/bin/bash marcos:$1$BTkl.xpQ$.I1uccaR/bQBk.XVQjMnf.:512:516::/home/marcos:/bin/bash Para algumas versões do NIS é criado um mapa separado para o arquivo /etc/shadow, neste caso o comando deverá ser ypcat shadow.byname e não ypcat passwd. Observe que este comando mostra as contas de usuários do servidor NIS com suas respectivas senhas criptografadas. Isto compromete a segurança do servidor, pois um usuário com um programa de quebras de senha pode facilmente descobrir senhas de outros usuários. Para o Linux o quebra de senha mais conhecido e utilizado é John the Ripper (Vide endereço http://www.openwall.com/jonh). Uma forma de garantir uma maior segurança no servidor é através do arquivo /etc/ypserv.conf, este arquivo tem como objetivo garantir o controle de acesso, para isso o mesmo contém uma lista de regras necessária para determinar quais máquinas podem acessar os mapas do servidor NIS. Vejamos um exemplo 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 # Not everybody should see the shadow passwords, not secure, since # under MSDOG everbody is root and can access ports < 1024 !!! * : shadow.byname : port : yes * : passwd.adjunct.byname : port : yes # If you comment out the next rule, ypserv and rpc.ypxfrd will # look for YP_SECURE and YP_AUTHDES in the maps. This will make # the security check a little bit slower, but you only have to # change the keys on the master server, not the configuration files # on each NIS server. # If you have maps with YP_SECURE or YP_AUTHDES, you should create # a rule for them above, that's much faster. * : * : none As linhas que começam com o caractere # são consideradas comentários. Uma linha deste arquivo pode ter o seguinte formato: opção: [sim|nao]
A linha deste arquivo ainda pode ser uma regra de acesso: host: mapa : segurança: campo­seguro Onde o valor de campo­seguro pode ser yes ou no. Se o campo for habilitado, será testado 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. As seguintes opções são suportadas por este arquivo: dns O servidor NIS irá consultar o servidor de nomes para os nomes de hosts, quando a resolução de nomes não é conseguida através dos mapas hosts.*. Você pode sobrescrever está opção com a opção "­dns" através da linha de comando. A opção "no" não irá sobrescrever a opção "­dns". xfr_check_port Os valores para esta entrada é "yes"(ativa), "no"(inativa). Com esta opção ativa, o Servidor NIS tem que funcionar com uma porta inferior a porta 1024. Esta opção é ativa por padrão. As próximas entradas definem os campos de descrições para o acesso. Estas entradas podem ser observada no arquivo: # Host : Map : Security : Passwd_mangle # # * : passwd.byname : port : yes # * : passwd.byuid : port : yes Neste exemplo observamos que existem 4 campos, estes campos estão explicados a seguir: host É utilizado para definir quais hosts podem ter acesso às tabelas de consulta do NIS. Logo, você deve passar como parâmetro o endereço IP de uma máquina específica ou o endereço IP de uma rede. Vejamos um exemplo: 10.1. = 10.1.0.0/255.255.0.0. map Define o nome do mapa, um asterisco identifica todos os mapas. security Esta opção é utilizada para definir políticas de acesso. Os parâmetros suportados podem ser: none permite total acesso, está opção é ativada por padrão. port permite acesso somente se a requisição vier de portas inferiores a portas 1024. deny não permite acesso para este mapa. DES requere autenticação DES. No momento esta opção não é suportada pela biblioteca libc e, portanto, não deve ser utilizada. Passwd_mangle Esta entrada define qual campo será monitorado que neste caso é o campo de senha. Com a opção "yes" este campo é monitorado, com a opção "no" ele não é monitorado. Outra forma de restringir acesso ao servidor NIS é através do arquivo /var/yp/securenets. Este é o meio mais fácil e eficiente de garantir a autenticação de usuários. Este arquivo permite definirmos quais máquinas ou rede podem fazer uso do servidor NIS. Este arquivo por padrão permite que todos acessem o servidor NIS. Vejamos: # Always allow access for localhost 255.0.0.0 127.0.0.0 # This line gives access to everybody. PLEASE ADJUST! 0.0.0.0 0.0.0.0 Este exemplo apresentado já vem pré­configurado, observe que a segunda entrada define acesso para todos. Para restringir o acesso para a rede 10.1.0.0/255.255.0.0 substitua a segunda entrada para: 255.255.0.0 10.1.0.0 %DEBIAN% #vi /etc/ypserv.securenets 255.255.0.0 10.1.0.0
Links Indicados
·
·
·
·
·
·
·
·
·
·
http://www.linux­nis.org o Página oficial do projeto Linux NIS/NIS+. É uma página mantida por Thorsten Kukuk, possui várias documentações, inclusive o Como­Fazer (How­To) oficial do NIS. Também mantém a versão atual (no formato *.tar.gz) das fontes do NIS/NIS+.
http://www.linux­nis.org/nis­howto/HOWTO/index.html o How­To [como­fazer] oficial do NIS. Neste documento você poderá encontrar informações de como instalar e configurar seu servidor NIS.
http://www.eng.auburn.edu/users/doug/nis.html o Um documento de Doug Hughes sobre como melhorar a segurança de NIS. Um conjunto de procedimentos adotados na Escola de Engenharia da Universidade de Auburn para melhorar a segurança em seu ambiente NIS.
http://www.linux­nis.org/doc/nis.debian.howto o Como­fazer do nis na distribuição debian. Documento que relata os passos para configuração tanto do servidor quanto do cliente NIS na distribuição Debian.
http://www.linux­nis.org/doc/secure_networking.ps o Documento a respeito de segurança em servidores NIS.
http://www.linux­nis.org/doc/NISPlus.ps o Documento em postscript que traz informações detalhadas sobre o NIS+.
http://www.openldap.org o Site oficial do grupo que mantém o desenvolvimento do serviço LDAP. Nesse site você pode encontrar informações diversas e também um Guia para o administrador.
http://www.linuxdoc.org/HOWTO/LDAP­HOWTO.html o Documento How­To (Como Fazer) referente ao LDAP. Neste documento você pode encontrar informações de configuração e implementação do LDAP.
http://www.linuxdoc.org/HOWTO/LDAP­Implementation­HOWTO o Documento que mostra como o LDAP pode interagir com outras ferramentas como PAM e Radius.
http://www.nfsv4.org o Site do projeto de desenvolvimento da versão 4 do protocolo NFS. Neste site você pode encontrar a RFC que explica as características dessa nova versão do NFS.
Terminologia utilizada neste capítulo Anúncio Também conhecido como broadcast. É um procedimento de comunicação onde um computador lança uma mensagem destinada para todos os computadores da rede. dbm é um formato hashing de arquivo. Possui uma versão GNU denominada gdbm. Domínio NIS: nome único que identifica um conjunto de clientes e um servidor que compartilham informações NIS. Hashing é o formato de arquivo binário utilizado pelo NIS em seus mapas, é baseado em uma estrutura baseada em chave associada a valores e permite uma consulta bastante eficiente. LDAP É o acrônimo de Lightweight Directory Access Protocol ­ é um protocolo de funcionalidades semelhante ao NIS, porém mantém suas informações em uma estrutura de diretórios. Mapas são os arquivos convertidos para formato hash e mantidos pelo servidor, formando a base de consulta do NIS. NFS Acrônimo de Network File System ­ Sistema de Arquivo em Rede, que permite compartilhar seus arquivos para clientes. NIS+ É a versão atualizada do NIS pela empresa Sun Microsystems. Possui mais funcionalidades que o NIS do qual é baseado. NIS é o acrônimo de Network Information Server, ou Serviços de Informações de Rede, desenvolvido pela empresa Sun Microsystems e com versões GNU disponíveis para Linux, que permitem que informações de um servidor sejam compartilhadas com clientes da rede, tal como senhas de usuários. Portmap Serviço que roda escutando tipicamente a porta TCP 111, obtendo de clientes RPC solicitações para executar um determinado procedimento remoto por um número de identificação; o portmap então fornece ao cliente RPC uma porta TCP onde este procedimento é disponibilizado. Em outras palavras, o portmap mapeia números de procedimentos remotos à portas TCP. RPC é o acrônimo para Remote Procedure Call, ou Chamada de Procedimento Remoto. É uma tecnologia que tem analogia à chamada de procedimentos em linguagens de programação, porém a chamada é realizada de um cliente para um servidor remoto. Cada RPC possui um número de identificação único (veja /etc/rpc). Yellow Pages: É uma marca registrada pela empresa Bell South que denomina as "páginas amarelas" de uma lista telefônica. ypbind É o cliente NIS, que permite que a estação cliente possa se conectar (bind) e utilizar as informações compartilhadas pelo servidor NIS. ypserver É o servidor NIS, que controla a interação e disponibiliza informações de rede para os clientes NIS.