Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Authentification centralisée avec NIS

Par Jonathan DUBOIS Publié le 31/10/2015 à 22:37:08 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Il peut vite devenir pénible de gérer les utilisateurs localement dans une infrastructure constituée de système Linux/Unix. NIS permet, en quelques minutes, de mettre en place une infrastructure d'authentification centralisée facilement maintenable. C'est une architecture client/serveur qui consiste à définir l'ensemble des utilisateurs sur une même machine (le serveur) et de permettre aux clients de requêter ce serveur pour obtenir des informations d'authentification. Ainsi, à l'ajout ou à la suppression d'un utilisateur, il n'est pas nécessaire de reconfigurer l'ensemble des machines pour prendre en compte ce changement.

Installation serveur

L'ensemble de l'installation sera effectuée sous CentOS. La configuration sur d'autres distributions pourra peut-être être différente, cependant, les fichiers de configuration des packages seront les mêmes, seules les commandes systèmes pourront changer

Nous allons commencer par la configuration du serveur NIS. Pour cela, il est nécessaire d'installer ces packages :

        #Installation packages
        yum -y install rpcbind ypserv
      

Ensuite, nous allons définir notre domaine NIS, ce nom doit bien sûr être homogène dans l'ensemble de votre infrastructure

        #Définition du domaine NIS
        [root@nisserver ~]# ypdomainname pYPtzKdt
        [root@nisserver ~]# vi /etc/sysconfig/network

        # Rajoutez à la fin : 
        NISDOMAIN=pYPtzKdt
      

Il est préférable d'utiliser un domaine NIS complexe afin d'améliorer la sécurité de votre infrastructure. Un individu possédant le nom de votre domaine NIS sera en mesure d'interroger le serveur et obtenir des informations sensibles tel que le fichier /etc/passwd partagé par le serveur NIS (tous les utilisateurs n'y sont pas présents). Nous verrons plus tard comment spécifier les machines autorisées à envoyer ce type de demande au serveur.

Définissons ensuite la visibilité des fichiers à travers le serveur NIS dans le fichier /var/yp/Makefile

      [root@nisserver ~]# vi /var/yp/Makefile

      # ligne 42 : MERGE_PASSWD=true|false
      MERGE_PASSWD=false

      # ligne 46 : MERGE_GROUP=true|false
      MERGE_GROUP=false

      ligne 117 : ajoutez shadow à cette ligne
      all : passwd group hosts rpc services netid protocoles shadow
      

Vient ensuite la configuration permettant la restriction des machines autorisées à envoyer des requêtes au serveur NIS.

      [root@nisserver ~]# vi /var/yp/securenets

      255.255.255.255   192.168.91.129    # Définissez ici l'ensemble des machines clientes de votre infrastructure
      255.255.255.255   192.168.91.130    # Restreignez au maximum votre masque de sous-réseau (/32) pour ciblez précisement vos machines.

      

Il est maintenant temps de démarrer l'ensemble des services fournissant votre serveur NIS

      [root@nisserver ~]# service rpcbind start
      Starting rpcbind:     [ OK ]
      [root@nisserver ~]# service ypserv start
      Starting YP server:   [ OK ]
      [root@nisserver ~]# service yppasswdd start
      Starting YP passwd service:   [ OK ]
      [root@nisserver ~]# service ypxfrd start
      Starting YP map server:     [ OK ]
      # Démarrage des services au boot
      [root@nisserver ~]# chkconfig ypxfrd on
      [root@nisserver ~]# chkconfig yppasswdd on
      [root@nisserver ~]# chkconfig ypserv on
      [root@nisserver ~]# chkconfig rpcbind on
      

La dernière étape consiste à générer la base de données NIS en fonction de vos fichiers locaux. Concrètement, les informations concernant la connexion de vos utilisateurs via NIS.

        [root@nisserver yp]# /usr/lib64/yp/ypinit -m    # ou /usr/lib/yp/ypinit -m     si vous avez un système 32bits

        At this point, we have to construct a list of the hosts which will run NIS
        servers.  nisserver 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:  nisserver
                next host to add:
        The current list of NIS servers looks like this:

        nisserver

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

        nisserver has been set up as a NIS master server.

        Now you can run ypinit -s nisserver on all slave server.
      

Votre serveur est maintenant correctement configuré

Installation client

Nous allons maintenant poursuivre par l'installation du client NIS. Comme pour le serveur, il est nécessaire d'installer ces packages :

        # Installation packages
        [root@nisclient ~]# yum -y install rpcbind ypbind
      

Nous allons ensuite, comme pour le serveur, définir notre domaine NIS

        # Définition du domaine NIS
        [root@nisclient ~]# ypdomainname pYPtzKdt
        [root@nisclient ~]# vi /etc/sysconfig/network

        # Rajoutez à la fin
        NISDOMAIN=pYPtzKdt
      

Nous allons ensuite renseigner au client les paramètres du serveur NIS

       [root@nisclient ~]# authconfig --update --enablenis --nisserver=192.168.91.128 --nisdomain=pYPtzKdt
       Starting rpcbind:     [ OK ]
       Starting NIS service:     [ OK ]
       Binding NIS service:     [ OK ]
       # Avec "192.168.91.128" l'adresse IP du serveur NIS
      

C'est à ce moment que vous verrez si vous avez correctement configuré votre client/serveur. Il se peut que "Binding NIS service" échoue. Dans ce cas, il faut vérifier depuis le début votre configuration. Il se peut aussi que ce soit votre firewall qui bloque vos connexions (iptables / fw dédiés etc...). Vous pouvez essayer de débuguer vos connexions à l'aide de tcpdump pour votre si vos paquets réseaux sont bien émis et reçus par le client/serveur.

        [root@nisclient ~]# tcpdump "dst ip_serveur and src ip_client" [-i interface_d'écoute] -nn
        [root@nisserver ~]# tcpdump "dst ip_client and src ip_server" [-i interface_d'écoute] -nn
      

Ces commandes peuvent vous aider à déterminer l'origine de vos problèmes de communications.

Il peut être également très pratique de créer automatiquement le répertoire home lors de votre première connexion avec un utilisateur sur une machine cliente.

        [root@nisclient ~]# vi /etc/pam.d/password-auth

        #Ajoutez la ligne :
        session   optional  pam_mkhomedir.so skel=/etc/skel umask=077

        [root@nisclient ~]# vi /etc/pam.d/system-auth
        session   optional  pam_mkhomedir.so skel=/etc/skel umask=077
        

Il est maintenant temps de vérifier la connexion sur notre serveur client ! Assurez vous d'avoir un utilisateur sur votre serveur qui n'est pas présent sur votre client et que la base de données NIS soit bien à jour.

          login as: testnis
          testnis@192.168.91.129's password:
          Creating directory '/home/testnis'.
          Last login: Sat Oct 31 22:56:20 2015 from localhost
          [testnis@nisclient ~]$
        

Si vous rencontrez une erreur du type "Unable to create and initialize directory '/home/testnis'." lors de votre connexion, vérifiez que SELinux soit correctement configuré ou qu'il soit complètement désactivé

Voilà, nous sommes maintenant connecté avec un utilisateur qui n'est pas présent sur notre client ! Vous pouvez même, si vous le souhaitez, partager votre répertoire /home/user à travers toutes les machines en le montant sur un serveur NFS, vos données seront ainsi disponibles depuis n'importe quelle machine

Si vous souhaitez changer votre mot de passe via NIS, il est possible de le faire via la commande "yppasswd" sur n'importe quel client.

Merci d'avoir suivi cet article

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels