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

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 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
$ sudo firewall-cmd --permanent --add-service=rpc-bind
$ sudo firewall-cmd --permanent --add-port=944/tcp
$ sudo firewall-cmd --permanent --add-port=944/udp
$ sudo firewall-cmd --permanent --add-port=945/tcp
$ sudo firewall-cmd --permanent --add-port=945/udp
$ sudo firewall-cmd --permanent --add-port=946/udp
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-all
internal (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp2s0
  sources: 
  services: nfs rpc-bind ssh
  ports: 944/tcp 944/udp 945/tcp 945/udp 946/udp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

Installation

Le paquet ypserv est fourni par les dépôts officiels de Red Hat et CentOS.

$ sudo yum install ypserv

Configuration

Définir le nom de domaine NIS.

$ sudo ypdomainname microlinux.lan

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

# /etc/sysconfig/network
NISDOMAIN="microlinux.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 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.

$ sudo systemctl enable ypserv ypxfrd yppasswdd --now

Ensuite, on va initialiser la base de données NIS.

$ sudo /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
$ sudo 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