Serveur NISSur 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 Unix. À 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.

ImportantNIS 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 œuvre.

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 UPD pour rpcbind
  • les ports 944 à 951 en TCP et en UDP pour ypserv, ypxfrd et yppasswdd
# firewall-cmd --permanent --add-service=rpc-bind
# firewall-cmd --permanent --add-port={944-951/tcp,944-951/udp}
# firewall-cmd --reload
# firewall-cmd --list-services
nfs rpc-bind ssh
# firewall-cmd --list-ports
944-951/tcp 944-951/udp

Si vous utilisez SELinux en mode renforcé, vous devez modifier deux booléens :

# setsebool -P nis_enabled on
# setsebool -P domain_can_mmap_files on
# semanage export | grep "boolean -m"
boolean -m -1 domain_can_mmap_files
boolean -m -1 nis_enabled

Installation

Le paquet ypserv est fourni par les dépôts officiels de Red Hat Enterprise Linux et Rocky Linux :

# dnf install -y ypserv

ImportantNIS n’est plus fourni par RHEL 9.0 et Rocky Linux 9.0, étant donné que cette technologie est considérée comme obsolète par Red Hat. La version fournie par RHEL 8.x et Rocky Linux 8.x sera supportée jusqu’en mai 2029.

Configuration

Définir le nom de domaine NIS :

# ypdomainname scholae.lan

Le domaine NIS devra également être renseigné dans /etc/sysconfig/network :

# /etc/sysconfig/network
NISDOMAIN="scholae.lan"

Toujours dans /etc/sysconfig/network, on va définir des ports statiques pour ypserv et ypxfrd :

# /etc/sysconfig/network
NISDOMAIN="microlinux.lan"
YPSERV_ARGS="--port 944"
YPXFRD_ARGS="--port 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 950"

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.10.0

Mise en service

À présent, on peut activer et démarrer les services NIS :

# systemctl enable ypserv ypxfrd yppasswdd nis-domainname --now

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. serveur.scholae.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:  serveur.scholae.lan
        next host to add:  [Ctrl]+[D]
The current list of NIS servers looks like this:

serveur.scholae.lan

Is this correct?  [y/n: y]  [Y]
We need a few minutes to build the databases...
Building /var/yp/scholae.lan/ypservers...
Running /var/yp/Makefile...
gmake[1]: Entering directory `/var/yp/scholae.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/scholae.lan'

serveur.scholae.lan has been set up as a NIS master server.

Now you can run ypinit -s serveur.scholae.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 fera l’objet de notre prochain article.


La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 

Catégories : Serveur

0 commentaire

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *