Mise en place du serveur

Le serveur est sous Debian Etch et mettra à disposition NIS pour l'authentification des utilisateurs et NFS pour l'accès aux répertoire utilisateurs et à un répertoire commun.

NFS côté serveur

Installation et configuration

Pour l'installer il suffit d'exécuter

aptitude install nfs-kernel-server

Le serveur NFS installé gère toutes les versions du protocole NFS. La version 4 va être mise en place, car comportant pas mal d'avantages par rapport à la version 3. Pour cela, il faut éditer le fichier /etc/exports et utiliser la syntaxe de NFSv4, ce qui va permettre au serveur NFS de savoir quelle version proposer :

/export         *(sync,secure,rw,crossmnt,no_subtree_check,fsid=0)
/export/home    *(sync,secure,rw,crossmnt,no_subtree_check)
/export/partage *(sync,secure,rw,crossmnt,no_subtree_check)

La principale nouveauté par rapport à NFSv3 est qu'il faut déclarer une racine pour les partages. Ici, c'est le répertoire /export et on l'indique avec l'option fsid=0. On déclare ensuite les deux répertoires à partager.

Détails des options utilisées :

  • * : l'étoile indique que le répertoire est accessible par n'importe qui et que l'on n'utilisera pas les nouveautés de NFSv4 (kerberos entre autre),
  • sync : le serveur NFS ne répondra aux requêtes qu'après l’exécution de tous les changements sur le support réel, ce qui apporte un peu de fiabilité et évite de perdre des informations qui étaient encore stockées dans les tampons mémoires en cas de coupure de courant,
  • secure : malgré le nom, rien de transcendant, elle impose juste au client d'utiliser un port réservé (donc inférieur à 1024) pour sa requête,
  • rw : le partage est accessible en lecture et écriture,
  • crossmnt : option quasiment obligatoire, car elle permet de lire les répertoires partagés en-dessous de la racine
  • no_subtree_check : cette option neutralise la vérification des sous-répertoires. Pour plus d'infos, lire le man de exports qui est très bien fait).

Voilà, la configuration côté serveur de NFS est terminée.

Sécurité

NFS est un protocole à ports aléatoires. Afin de pouvoir mettre en place un pare-feu, il convient donc de fixer les ports utilisés par les services du serveur NFS : statd, mountd, nfsd et lockd. Si on utilise les quotas, il y a aussi quotad.

Pour statd, il faut alors éditer le fichier /etc/default/nfs-common et modifier

STATDOPTS="--port 32765 --outgoing-port 32766"

en mettant complètement arbitrairement 32765 et 32766.

Pour mountd, il faut éditer /etc/default/nfs-common et indiquer

RPCMOUNTDOPTS="-p 32767"

encore une fois le port est choisi au hasard.

Pour nfsd, il n'y a rien à faire, car par défaut, il est à 2049 et ne varie pas.

Pour lockd, on crée un fichier /etc/modprobe.d/options.local contenant

options lockd nlm_udpport=32768 nlm_tcpport=32768

Pour quotad, c'est /etc/default/quota qu'il faut modifier

 RPCRQUOTADOPTS="-p 32769"

Une très bonne documentation à ce sujet est sur le wiki de Debian.

NIS côté serveur

Installation et configuration

NIS va uniquement être utilisé pour authentifier les utilisateurs réseaux.

Comme précédemment, pour l'installer, il suffit de faire un

aptitude install nis

L'installation demandera alors quel est le domaine NIS concerné.

Pour le configurer, il faut éditer le fichier /etc/default/nis et renseigner :

NISSERVER=master
NISCLIENT=true

Se déclarer en tant que client NIS permet de démarrer ypbind.

On indique ensuite le serveur qui va être utilisé dans /etc/yp.conf :

ypserver 127.0.0.1

A noter que tous les fichiers relatifs aux bases de données NIS sont stockés par défaut dans /var/yp. Ainsi, on trouve le fichier Makefile destiné à manipuler les différentes bases.

On peut maintenant commencer à peupler l'annuaire NIS. On va d'abord rentrer les différentes machines du réseau. Pour cela, il faut les indiquer dans /etc/hosts.

Avant de procéder avec les utilisateurs, une modification qui peut-être intéressante afin de ne pas s'embrouiller entre les utilisateurs locaux et les utilisateurs réseaux est de spécifier l'identifiant utilisateur et l'identifiant groupe minimums. Il faut donc éditer /var/yp/Makefile et indiquer par exemple :

MINUID=2000
MINGID=2000

pour que les identifiants pour NIS commencent à partir de 2000. En général, pour les utilisateurs locaux, ils commencent à 500 chez Redhat et 1000 chez Debian.

Une fois le Makefile configuré, on lance la création des bases avec

/usr/lib/yp/ypinit -m

La seule question qui sera posée sera sur les machines faisant office de serveurs NIS. On peut sortir de la liste avec un Control-D.

Une fois NIS initialisé, on peut créer les utilisateurs de manière classique avec un

 adduser --home /nfs/home/toto --uid 2000 toto

Le répertoire de l'utilisateur (home) est celui qui sera utilisé sur les machines clientes.

Sécurité

Par défaut, le serveur NIS peut être interrogé par n'importe quelle IP. Afin de limiter cette portée, on édite le fichier /etc/ypserv.securenets et on modifie la ligne

0.0.0.0           0.0.0.0

en

255.255.255.0           192.168.0.0

par exemple si on est sur un réseau en 192.168.0.0/24.

Ensuite, on peut protéger l'accès à certaines bases de NIS grâce à /etc/ypserv.conf. Par défaut, sous Debian, tout est accessible sauf la base relative à shadow, les mots de passe chiffrés, qui nécessité de se connecter avec un port réservé. Chaque ligne est composé de quatre éléments :

  • les adresses IP concernées
  • le domaine NIS concerné,
  • une base,
  • la sécurité appliquée.

On peut commencer par restreindre les adresses en spécifiant un sous-réseau au lieu de *. Ensuite, il faut jouer sur le paramètre sécurité qui peut prendre trois valeurs :

  • none : autorise toujours l'accès,
  • port : autorise seulement si la requête provient d'un port réservé,
  • deny : refuse l'accès à la base.

Pour que l'authentification avec NIS fonctionne sous Fedora, qui effectue des requêtes avec des ports non réservés (supérieurs à 1024) et éviter les messages du genre

ypserv[5149]: refused connect from 192.168.0.11:32770 to procedure ypproc_match (mondomaine.net,shadow.byname;-1

il faut modifier la ligne

*                            : *       : shadow.byname : port

en

*                            : *       : shadow.byname : none

Mise en place du client

Le client est sous Fedora Core 8.

NFS côté client

Il faut installer le paquet nfs-utils :

yum install nfs-utils

. Ensuite, il n'y a plus qu'à renseigner le fichier /etc/fstab en rajoutant :

serveur:/home           /home                   nfs4    defaults        0 0 
serveur:/partage        /media/partage          nfs4    defaults        0 0

A remarquer qu'on ne fait pas référence à /export. /export est défini comme racine donc / sur le serveur NFS. Les options par défaut conviennent normalement, sous Fedora, defaults correspond =à :

  • rw : lecture et écriture,
  • relatime : met à jour les heures d'accès des inodes relatives à des opérations de modifications ou de changement d'heure,
  • vers=4 : version 4 de NFS,
  • rsize=32768 : taille en octets pour la lecture d'informations sur le serveur,
  • wsize=32768 : taille en octets pour l'écriture d'informations sur le serveur,
  • hard : dans le cas d'un délai dépassé (timeout) majeur lors d'une opération, l'opération continuera indéfiniment,
  • intr : permet d'envoyer une interruption à une opération ayant un timeout majeur sur un partage monté avec l'option hard
  • proto=tcp : NFS peut utiliser deux protocoles, UDP ou TCP. UDP est plus rapide mais peut-être moins fiable que TCP du fait qu'il ne vérifier pas la bonne transmission des paquets,
  • timeo=600 : valeur en secondes avant que le client n'envoie le premier RPC timeout,
  • retrans=3 : nombre de retransmission et de timeout avant d'envoyer un timeout majeur,
  • sec=sys : utilise le mode de sécurité système qui utilise les UID et les GID locaux pour authentifier les opérations NFS,
  • addr=serveur :adresse du serveur NFS.

NIS côté client

Pour pouvoir interroger un serveur NIS, il faut installer les yptools :

yum install yp-tools

Ensuite, on passe par le bel outil graphique de Fedora pour activer l'authentification par NIS, on lance system-config-authentication. Il faut cliquer sur Activer la gestion NIS et sur Configurer NIS. Dans la nouvelle fenêtre, il faudra remplir Domaine NIS en mettant exactement le même que celui qui a été spécifié lors de l'installation du paquet nis sur le serveur, et le Serveur NIS.

Ensuite, il faut éditer les fichiers /etc/passwd, /etc/shadow et /etc/group :

echo "+::::::" >>/etc/passwd
echo "+::::::::" >>/etc/shadow
echo "+:::" >>/etc/group

Enfin, on renseigne /etc/yp.conf avec le domaine et le serveur NIS :

domain mondomaine.net server serveur.net

Outils personnels