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 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.
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 œ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
etyppasswdd
# 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
NIS 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.
0 commentaire