segunda-feira, 14 de julho de 2008

Criando servidor-cliente NFS/NIS

Neste tutorial vamos mostrar uma forma simples de como se criar
um em uma rede interna uma forma de montagem e autenticação
remota. Vamos aprender mesmo como fazer um servidor-cliente
de NIS rodar em sua rede, que em conjunto com o NFS poderá
lhe dar uma forma simples de autenticção remota.

Este tutorial não o ensinará o que é NIS e NFS, ele tem como
alvo os que já possuem um breve conhecimento em Linux ou que
sejam esforçados e queiram aprender como usar o Linux. Ao
final do tutorial haverão links para paginás que lhes darão
mais informação sobre os servidores NIS e NFS.


PACOTES:
========

Para tudo seja feito com classe lhe aconselho os seguintes pacotes.

- NFS:nfs-server, nfs-utils, portmap, nmap, rpcinfo
- NIS:ypserv, yp-tools, yppasswdd, ypbind, portmap


1° passo
========


Para que possamos fazer com o NIS faça autenticação remotamente
temos que primeiro ter algo que permita isso, esse é o NFS. Nós
não entramos a fundo no NFS pois existe muito documento
sobre o assunto na internet e também por se tratar de algo
extramente simples.

O que vc precisa é de editar o arquivo /etc/exports e colocar
as seguintes linhas.


/home/ ip_da_maquina_remota(rw,no_root_squash)


O que temos aqui é o seguinte.

/home/: Este é o o poderemos montar uma ou mais maquina remotas, no caso o /home desta maquiná.

ip_da_maquina_remota: Este é o ip da maquina que iremos permitir
que tenha seguindo por exemplo o /home(mostrado e explicado
acima) montado em uma maquina ou rede(para dar permissões
pode-se usar o '*', que especifica tudo.

(rw,no_root_squash): são as opções que usamos aqui.
rw: da permissão de leitura e gravação para os ip's
especificados. no_root_squash: da permissão ao root
também.

(Nossa, disse que não iria falar de nfs, mas agora já quase
montei um servidor de nfs... :D)


2° passo
========


AGORA O NIS

Vamos começar a montar o NIS pelo o arquivo /etc/ypserv.conf.

o ypserv.conf normalmente ja vem configurado... porém....


#
# ypserv.conf In this file you can set certain options for the NIS server,
# and you can deny or restrict access to certain maps based
# on the originating host.
#
# See ypserv.conf(5) for a description of the syntax.
#

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

# Should we do DNS lookups for hosts not found in the hosts table ?
# This option is ignored in the moment.
dns: no

# How many map file handles should be cached ?
files: 30

# Should we register ypserv with SLP ?
slp: no

# xfr requests are only allowed from ports < 1024
xfr_check_port: yes

# 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 : Domain : Map : Security
#
# * : * : passwd.byname : port
# * : * : passwd.byuid : port

# Not everybody should see the shadow passwords, not secure, since
# under MSDOG everbody is root and can access ports < 1024 !!!
* : * : shadow.byname : port
* : * : passwd.adjunct.byname : port

# 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.
# *



3° passo
========


agora vamos configurar o /etc/yp.conf


domain nome_do_dominio hostname x.x.x.x


O arquivo /etc/sysconfig/network(para distos estilo redhat)
coloque na última linha "NISDOMAIN="nome_do_dominio_nis""

Se for por não houver /etc/sysconfig/network isso quer dizer que seu arquivo é o
/etc/defaultdomain(em slack's, debian e etc...), é só colocar dentro do arquivo
o nome do dominio NIS e mais nada.

domain nome_do_dominio: este é o nome do seu dominio NIS(não coloque o mesmo nome do donimio DNS, isso pode ser ruim!!)
hostname x.x.x.x: este é o ip do seu servidor NIS

existem outras saidas, para vê-las de o comando "man yp.conf"


4° passo
========


Agora entre no diretório /var/yp/
edite o arquivo Makefile e troque as seguintes linhas.


MERGE_PASSWD=true
MERGE_GROUP=true


por


MERGE_PASSWD=false
MERGE_GROUP=false



5° passo
========


securenets


#
# securenets This file defines the access rights to your NIS server
# for NIS clients. This file contains netmask/network
# pairs. A clients IP address needs to match with at least
# one of those.
#
# One can use the word "host" instead of a netmask of
# 255.255.255.255. Only IP addresses are allowed in this
# file, not hostnames.
#
# Always allow access for localhost
255.0.0.0 127.0.0.0

# This line gives access to everybody. PLEASE ADJUST!
x.x.x.x x.x.x.x


Para sua segurança modifique este arquivo de acordo com suas
necessidades. no primeiro x.x.x.x você coloca sua mascara de
rede, e no segundo você coloca sua rede para que somente sua
rede tenha acesso.

EX:

# This line gives access to everybody. PLEASE ADJUST!
255.255.255.0 192.168.1.0



6° passo
========


Se você está por em um slackware terá que fazer algumas coisinhas a mais...

Para iniciar o seu servidor toda vez que a máquina for iniciada,
teremos que tornar o arquivo /etc/rc.d/rc.yp executável:


chmod +x /etc/rc.d/rc.yp


Agora, temos que fazer o servidor iniciar, edite as seguintes linhas:
No /etc/rc.d/rc.yp, descomente as linhas abaixo:


if [ -r /etc/defaultdomain ]; then
nisdomainname `cat /etc/defaultdomain`
fi


Para fazer com que o nome do domínio NIS seja carregado deixa as linhas assim.


if [ -x /usr/sbin/ypserv ]; then
echo "Starting NIS server: /usr/sbin/ypserv"
/usr/sbin/ypserv
fi


Para fazer com que seus usuários alterem suas senhas, habilite o rpc.yppasswdd. Assim
com o comando yppasswd poderam fazê-lo.


if [ -x /usr/sbin/rpc.yppasswdd ]; then
echo "Starting NIS master password server: /usr/sbin/rpc.yppasswdd"
/usr/sbin/rpc.yppasswdd
fi


Se gosta de praticidade coloque dentro do adduser(na última linha) a seguinte linha:


( cd /var/yp ; make )


Isso fará com que o NIS atualize sua base de dados toda vez que você adicinar um usário.


7° passo
========


AGORA É A VEZ DO CLIENTE

repita o 3° passo

Agora, edite o /etc/rc.d/rc.yp e deixe as seguintes linhas assim:


if [ -r /etc/defaultdomain ]; then
nisdomainname `cat /etc/defaultdomain`
fi

if [ -d /var/yp ]; then
echo "Starting NIS services: /usr/sbin/ypbind -broadcast"
/usr/sbin/ypbind -broadcast
fi


Fora do arquivo, torne o rc.yp executável.


chmod +x /etc/rc.d/rc.yp



8° passo
========



/etc/nsswitch.conf


se você está usando uma distro estilo redhat deixe-o como
esta. Se usa um slack mude as seguintes linhas.

Comente as seguintes linhas:


passwd: compat
group: compat


E descomente estas:


# passwd: files nis
# shadow: files nis
# group: files nis



9° passo
========


Agora você deve compartililhar os arquivos para que o servidor
NIS saber quais serviços ele poderá buscar na sua rede.
No nosso caso vamos compartilhar os arquivos /etc/passwd,
group, shadow e gshadow para isso vamos colocar um sinal de
mais na última linha de cada um deles.


echo + >> /etc/passwd
echo + >> /etc/group
echo + >> /etc/shadow
echo + >> /etc/gshadow



10° passo
=========


Agora no servidor NIS entre no diretório /var/yp/ e de o
comando ypserv e depois make, deverá aparecer uma pasta com
o nome do seu dominio, pronto, as maquinas que estão no NFS e
que estão no NIS já podem fazer login em qualquer maquiná da
rede que tenha um cliente configurado.

Outra coisa... o diretório home do cliente deve sempre ser
o mesmo diretório home do servidor, O que digo é que o o
diretório no servidor onde ficam os usários deve ser o mesmo
nome no cliente, por exemplo..

Se no seu servidor for o /home, você deverá montar no /home
do cliente, se no servidor for /home/usuarios, nos clientes
também deverá ser /home/usuários e assim por diante.

Nenhum comentário: