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, leMakefilede/var/ypgé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`