Sur les systèmes Red Hat Enterprise Linux et dérivés, il existe une série de solutions pour mettre en place une authentification centralisée. Les grands classiques comme FreeIPA ou 389 Directory Server sont de véritables usines à gaz, dont la configuration et le débogage peuvent s’avérer assez complexes. Avant d’attaquer ces bestiaux, nous allons faire un petit voyage dans le temps et nous intéresser à une technologie considérée comme obsolète, mais qu’il est utile de connaître.
Présentation
NIS (Network Information Service) est l’ancêtre des systèmes d’authentification centralisée sur les systèmes unixoïdes. À l’origine, NIS est sorti sous le nom de Yellow Pages (YP, c’est-à-dire les Pages Jaunes), mais le nom avait déjà été déposé par British Telecom. Sun Microsystems a donc renommé son protocole en conséquence. Cet aperçu historique explique la nomenclature des commandes relatives à NIS, qui commencent toutes par yp
. Techniquement, un serveur NIS sert avant tout à stocker les informations administratives du réseau, notamment les comptes utilisateurs et les groupes.
NIS est moins sécurisé que ses successeurs. Si nous l’abordons ici, c’est avant tout dans un but pédagogique. La configuration d’un serveur NIS nous permettra de nous faire la main sur un système d’authentification centralisée relativement simple à mettre en oeuvre.
Prérequis
Cet article constitue le troisième volet dans notre série sur la mise en place de profils itinérants avec une authentification centralisée. Dans le premier article, nous avons décrit la mise en place du serveur NFS. Le deuxième article était consacré à la configuration des postes clients. Pour la suite, nous devons donc disposer d’un partage NFS fonctionnel des répertoires utilisateurs.
Le serveur NIS requiert l’ouverture d’une série de ports dans le pare-feu.
- le port 111 en TCP et en UDP pour
rpcbind
- le port 944 en TCP et en UDP pour
ypserv
- le port 945 en TCP et en UDP pour
ypxfrd
- le port 946 en udp pour
yppasswdd
Installation
Le paquet ypserv
est fourni par les dépôts officiels de Red Hat et CentOS.
# yum install ypserv
Configuration
Définir le nom de domaine NIS.
# ypdomainname microlinux.lan
Le domaine NIS devra également être renseigné dans /etc/sysconfig/network
.
# /etc/sysconfig/network
GATEWAY=192.168.2.1
NISDOMAIN="microlinux.lan"
Toujours dans /etc/sysconfig/network
, on va définir des ports statiques pour ypserv
et ypxfrd
.
# /etc/sysconfig/network
GATEWAY=192.168.2.1
NISDOMAIN="microlinux.lan"
YPSERV_ARGS="-p 944"
YPXFRD_ARGS="-p 945"
Le port statique pour le service yppasswdd
peut être défini dans /etc/sysconfig/yppasswdd
.
# /etc/sysconfig/yppasswdd ... # Additional arguments passed to yppasswd YPPASSWDD_ARGS="--port 946
Si le fichier /var/yp/securenets
est vierge ou n’existe pas, NIS attend des requêtes de tous les réseaux. La première chose à faire pour sécuriser le serveur, c’est donc de spécifier une paire masque de sous-réseau / réseau dans ce fichier. Il s’agit là d’une sécurisation très sommaire, mais c’est déjà mieux que rien.
# /var/yp/securenets
255.0.0.0 127.0.0.0
255.255.255.0 192.168.2.0
Mise en service
À présent, on peut activer et démarrer les services NIS.
# systemctl enable ypserv ypxfrd yppasswdd # systemctl start ypserv ypxfrd yppasswdd
Ensuite, on va initialiser la base de données NIS.
# /usr/lib64/yp/ypinit -m At this point, we have to construct a list of the hosts which will run NIS servers. amandine.microlinux.lan is in the list of NIS server hosts. Please continue to add the names for the other hosts, one per line. When you are done with the list, type a <control D>. next host to add: amandine.microlinux.lan next host to add: [Ctrl]+[D] The current list of NIS servers looks like this: amandine.microlinux.lan Is this correct? [y/n: y] [Y] We need a few minutes to build the databases... Building /var/yp/microlinux.lan/ypservers... Running /var/yp/Makefile... gmake[1]: Entering directory `/var/yp/microlinux.lan' Updating passwd.byname... Updating passwd.byuid... Updating group.byname... Updating group.bygid... Updating hosts.byname... Updating hosts.byaddr... Updating rpc.byname... Updating rpc.bynumber... Updating services.byname... Updating services.byservicename... Updating netid.byname... Updating protocols.bynumber... Updating protocols.byname... Updating mail.aliases... gmake[1]: Leaving directory `/var/yp/microlinux.lan' amandine.microlinux.lan has been set up as a NIS master server. Now you can run ypinit -s amandine.microlinux.lan on all slave servers.
Il ne reste plus qu’à ajouter les utilisateurs du serveur à la base de données NIS.
# cd /var/yp # make
La configuration des clients NIS fait l’objet d’un article à part.
Ping : Installer un serveur NIS sous CentOS - My Tiny Tools
Huh ? Ca me rappelle mes manips sous Sun0S avec des stations Sun. Je ne penses pas que l’on utilise encore. On préfère sans doute LDAP aujourd’hui. Nice try , Kikinovak !
C’est ce que j’explique dans l’introduction. En revanche, il m’arrive encore de voir NIS en production. Il y a quelque temps, j’ai installé une station de travail de calcul géophysique à l’Ifremer de Brest, un grand centre de recherche océanographique. Ils tournent sous RHEL et Fedora, et ils utilisent NIS pour l’authentification sur tous les postes.