Configurer un serveur NIS

Auteur : Olivier BOYER - oboyer () ajoute ! org

Mots clés

NetBSD 1.6, NetBSD 2.0, NIS, YP, ypserv, rpcbind, yppasswdd, rpc

Introduction

Ce document décrit comment mettre en place un serveur NIS (aussi connu sous le nom de YP) sur NetBSD.

Le service NIS permet la gestion réseau des données des fichiers passwd, group et hosts grâce aux fonctions getpwent(3), getgrent(3) et gethostbyname(3). D’autres bases peuvent être gérées par ce système. Des programmes tesl que amd(8), bootparamd(8), peuvent accéder à leurs fichiers de tables via le système NIS.

Dans notre exemple, il n’existe qu’un seul serveur NIS. Il n’y a pas de serveur de secours. Dans une configuration de production il est préferrable d’avoir au moins un serveur esclave. En effet, si le serveur maître s’arrête, plus aucun utilisateur du réseau ne peut se s’authentifier.

Paramètres du domaine NIS

Nom  du domaine NIS	= leaves
Nom  du domaine DNS	= leaves.org
FQDN du Serveur NIS	= smoking.leaves.org
IP   du Serveur NIS	= 192.168.1.1

Note

Toutes les commandes présentées dans ce document sont à executer, sauf mention contraire, en tant qu'utilisateur root.

Présentation des daemons

Les daemons suivants vont être mis en oeuvre :

  • rpcbind

Le daemon rpcbind(8) est nécessaire pour tous les services rpc(3).

  • ypserv

Le daemon ypserv(8) est le serveur NIS (YP) qui distribue l'information (les maps). Il prend comme paramètres ypserv_flags depuis le fichier /etc/rc.conf.

  • yppasswdd

Le daemon yppasswdd(8) permet aux utilisateurs NIS distants de mettre à jour leur mot de passe sur le serveur NIS maître. Il prend comme paramètres yppasswdd_flags depuis le fichier /etc/rc.conf.

  • ypbind

Le daemon ypbind(8) permet aux clients NIS d'obtenir les informations (maps) du serveur NIS. Il prend comme paramètres ypbind_flags depuis le fichier /etc/rc.conf.

Nom de domaine

Il exsite deux possibilités pour positionner le nom de domaine NIS :

  • Remplir le champ “domainname” du fichier /etc/rc.conf
# echo "domainname=leaves" >> /etc/rc.conf
  • Laisser le champ précédent vide (par défaut) et créer le fichier /etc/defaultdomain
# echo "leaves" > /etc/defaultdomain

Activer le service NIS au démarrage

  • Paramètres par défaut du fichier /etc/defaults/rc.conf :
 # rpcbind (formerly known as 'portmap') is used to look up RPC-based services.
 #
 rpcbind=NO              rpcbind_flags="-l"      # -l logs libwrap

 # The NIS domain name (formerly known as Yellow Pages); not in any way
 # related to Internet domain names.
 # If blank, use /etc/defaultdomain.
 # 
 domainname=""   

 # YP (NIS) daemons.
 #
 ypbind=NO               ypbind_flags=""
 ypserv=NO               ypserv_flags="-d"
 yppasswdd=NO            yppasswdd_flags=""
  • Paramètres spécifiques dans le fichier /etc/rc.conf
 # Start rpcbind
 # rpcbind (formerly known as 'portmap') is used to look up RPC-based services.
 # Required for any rpc(3) services (include NFS, NIS, ...)
 rpcbind=YES              rpcbind_flags="-l"      # -l logs libwrap

 # The NIS domain name (formerly known as Yellow Pages); not in any way
 # related to Internet domain names.
 # If blank, use /etc/defaultdomain.
 # 
 domainname=""   

 # YP (NIS) daemons.
 #
 ypbind=YES               ypbind_flags=""
 ypserv=YES               ypserv_flags="-d"
 yppasswdd=YES            yppasswdd_flags="-d /var/yp"

Initialiser les fichiers et les répertoires du serveur NIS

La commande ypinit initialise les fichiers et les répertoires nécessaires pour un client et/ou un serveur NIS. Exécutez la commande suivante :

 # ypinit -m leaves
 Server type: master
 Domain:      leaves

 A YP client needs a list of YP servers to bind to.
 Whilst ypbind supports -broadcast, its use is not recommended.

 Please enter a list of YP servers, in order of preference.
 When finished, press RETURN on a blank line or enter EOF.

	 next host: smoking.leaves.org
	 next host: ^D

The current servers are:

smoking.leaves.org

Is this correct? [y/n: n] y

Installing the YP database may require that you answer a few questions.
Any configuration questions will be asked at the beginning of the procedure.

Done.  Be sure to run `make' in /var/yp.

Le répertoire /var/yp/leaves est créé.

# ls -lR leaves
total 29
-r--------  1 root  wheel  12250 Mar 11 23:32 Makefile
-rw-------  1 root  wheel     38 Mar 11 23:32 ypservers
-rw-------  1 root  wheel  16384 Mar 11 23:32 ypservers.db

Initialiser les maps NIS

Modifier le fichier /var/yp/Makefile.yp

  • NOPUSH

Par défaut, le serveur master NIS va avertir ses serveurs esclaves que les bases ont été modifiées. Dans notre exemple, il n'a pas de serveurs esclaves. Pour annuler cette opération, modifier comme suit le Makefile.yp :

# Invoke with NOPUSH != "" to prevent the maps from being yppushed upon rebuild
#
#NOPUSH?=       ""
NOPUSH?=        NO
  • DIR

Par défaut, le serveur NIS utilise les fichiers contenus dans /etc pour générer ses map. Il est préferrable de distinguer les fichiers du system (ceux de /etc), des fichiers servis via le service NIS. En effet, le service NIS s'appuie sur le mécanisme des rpc(3) qui est très loin d'être sécurisé. Toute station du réseau peut demander peut lire la map des mots de passe cryptés, et ainsi, par “brute force” obtenir le mot de passe d'un utilisateur. Il est donc préferrable que le mot de passe crypté de root ne soit pas véhiculé via NIS.

Pour ce faire, nous allons créer le répertoire /var/yp/etc qui contiendra les fichiers sources du service NIS. Pour indiquer le nouvel emplacement des bases, modifier comme suit le fichier Makefile.yp

#YPDBDIR=        /var/yp
#DIR=            /etc
#AMDDIR=         /etc/amd

YPDBDIR=        /var/yp
DIR=            /var/yp/etc
AMDDIR=         /var/yp/etc/amd

Créer le répertoire des Map

Créez le répertoire des bases :

# mkdir /var/yp/etc
# chown root:wheel /var/yp/etc
# chmod 700 /var/yp/etc

Map d'authentification des utilisateurs

Map passwd

# cp /etc/master.passwd /var/yp/etc/master.passwd

Supprimer TOUS les comptes systèmes (root,tty, daemon, …) et ne garder QUE les comptes des utilisateurs.

# chown root:wheel /var/yp/etc/master.passwd
# chmod 600 /var/yp/etc/master.passwd

Remarques :

  • A partir du fichier master.passwd, le Makefile de /var/yp générera

automatiquement les maps passwd.* et shadow.*

  • Si vous voulez créer les maps shadow.*, il faut modifier comme suit

le fichier /var/yp/Makefile.yp pour qu'il prenne en compte cette règle.

all: passwd aliases ${AMDMAPS} ethers group hosts ipnodes netgroup networks rpc 
services protocols netid

en

all: passwd aliases ${AMDMAPS} ethers group hosts ipnodes netgroup networks rpc 
services protocols netid shadow

Map group

# cp /etc/group /var/yp/etc/group

Supprimer TOUS les comptes systèmes (root,tty, daemon, …) et ne garder QUE les comptes des utilisateurs.

# chown root:wheel /var/yp/etc/group
# chmod 600 /var/yp/etc/group

Génération des bases password

pwd_mkdb creates db(3) style secure and insecure databases for the speci-
fied file.  These databases are then installed into ``/etc/spwd.db'' and
``/etc/pwd.db'' respectively.

Pour que le daemon yppasswdd puisse modifier le password d'un utilisateur, il faut créer les bases de données des mots de passe à la racine du service NIS (/var/yp/etc dans notre exemple). Pour ce faire, utiliser la commande pwk_mkdb(8). Procédez comme suit :

# pwd_mkdb -d /var/yp /var/yp/etc/master.passwd

Map AMD, autofs et aliases

Créez au départ l'arborescence, et les maps vides :

# mkdir  /var/yp/etc/{amd,mail}
# touch /var/yp/etc/mail/aliases
# touch /var/yp/etc/amd/amd.conf
# touch /var/yp/etc/amd/amd.master
# touch /var/yp/etc/amd/amd.home
# touch /var/yp/etc/amd/auto.home
#   
# chown -R root:wheel /var/yp/etc/{amd,mail}
# chmod 700 /var/yp/etc/{amd,mail}
# chmod 600 /var/yp/etc/amd/* /var/yp/etc/mail/*

Contenu de la map NIS : amd.master

/home amd.home

Contenu de la map NIS : amd.conf

-a /amd -l /var/log/amd -x all /home amd.home

Contenu de la map NIS : amd.home

/defaults       type:=nfs;rhost:=smoking
*               rfs:=/home/*;sublink:=${key} \
                opts:=rw,grpid,resvport,vers=3,proto=udp,nosuid,nodev

Contenu de la map NIS : auto.home

*        smoking:/home/&

Autres maps

Pour éviter les messages d'erreurs à la génération des maps, il est préferable de créer toutes les maps, quitte à en laisser certaines vides.

# touch /var/yp/etc/ethers /var/yp/etc/hosts /var/yp/etc/netgroup \
/var/yp/etc/networks /var/yp/etc/rpc /var/yp/etc/services \
/var/yp/etc/passwd var/yp/etc/protocols
#
# chmod 600 /var/yp/etc/ethers /var/yp/etc/hosts /var/yp/etc/netgroup \
/var/yp/etc/networks /var/yp/etc/rpc /var/yp/etc/services \
/var/yp/passwd /var/yp/etc/protocols
# 

Démarrer les services NIS

Pour démarrer le service NIS, procédez comme suit :

# cd /etc/rc.d
# ./network start                                                              
# ./rpcbind start                                                              
Starting rpcbind.
# ./ypserv star
Starting ypserv.
# ./yppasswdd start                                                            
Starting yppasswdd.
# 

Contrôle d'accès au service NIS

La version de ypserv livrée avec NetBSD intègre le support de la libwrap. Voir la page de manuel hosts_access(5).

Configuration de syslogd

Canaux utilisés par les daemons NIS

  • pour ypserv

All messages are sent to the system log with the facility LOG_DAEMON. Error messages have the priority LOG_ERR. Refused requests are logged with the priority LOG_WARNING. All other messages are logged with the priority LOG_INFO

  • pour ypbind

Messages are send to syslog daemon using facility LOG_DAEMON

  • pour yppasswdd

Messages are send to syslog daemon using facility LOG_AUTH ou LOG_AUTHPRIV

Configuration du fichier /etc/syslog.conf

  • modifiez la ligne :
*.info;auth,authpriv,cron,ftp,kern,lpr,mail.none /var/log/messages

en

*.info;daemon,auth,authpriv,cron,ftp,kern,lpr,mail.none /var/log/messages
  • ajoutez la ligne :
# Extract messages send with the facility LOG_DAEMON
# ypserv, ypbind, ...
daemon.info                                             /var/log/daemon.log
  • Créez le fichier de log
# touch /var/log/daemon.log
# chown root:wheel /var/log/daemon.log
# chmod 600 /var/log/daemon.log
#
  • Relancez le daemon syslogd
# kill -HUP `cat /var/run/syslogd.pid`
 
doc/netbsd/serveur_nis.txt · Dernière modification: 2009/12/23 22:36 (édition externe)     Haut de page