Services préinstallés dans le VMs

Avant de mettre en oeuvre un système d’authentification SSO (comme Kerberos), il convient de déployer, au préalable, un certain nombre de services :

  • Synchronisation horaire. L’horloge des serveurs et des clients en jeu doivent être synchronisées. Habituellement, c’est le protocole NTP qui implémente cela. Ici, comme toutes les machines sont virtuelles et hébergées sur un même ordinateur (ie. le votre), nous pouvons nous affranchir de celui-ci.

  • Résolution de nom. C’est le service DNS. Chaque machine doit être inscrite dans le DNS aussi bien dans la zone directe que dans la zone inverse. Nombre d’erreurs Kerberos trouvent leur origine dans une mauvaise configuration DNS.

  • Annuaire des utilisateurs. Pour la cohérence de l’ensemble, il est préférable de déployer un annuaire des utilisateurs plutôt que des bases locales qui ne sont forcément pas à jour. Ici nous utiliserons un standard en la matière, à savoir un annuaire LDAP.

Afin de gagner du temps, ces services sont déjà installés dans le mini-système d’information que vous avez installé avec Vagrant. Voici, ci-dessous, une description détaillée de chacun d’entre eux.

Résolution de noms

Sur la machine virtuelle gate, un serveur de nom tourne. Il a autorité sur le réseau local à VirtualBox, soit le domaine vbox.tp.

Les autres VMs sont configurées pour interroger uniquement ce serveur DNS (ie. celui de la VM gate). S’il n’a pas réponse à la requête du client alors il agit comme un cache DNS et se tourne vers d’autres serveurs DNS. Il s’agit de ceux que la machine gate aura reçu lors de la configuration DHCP de son interface réseau eth1.

Comme cette interface est pontée avec la carte réseau de l’ordinateur, ce seront donc les DNS du réseau local qui seront interrogés, par la VM gate.

Annuaire LDAP

Comme le serveur DNS, un annuaire LDAP est installé sur la machine virtuelle gate. Il écoute sur les ports 389 (LDAP) et 636 (LDAPs). Le schéma ci-dessous représente l’arborescence LDAP utilisée.

Arborescence LDAP

Sous la racine dc=vbox,dc=fr, se trouvent principalement deux unités d’organisation (ou) :

  • ou=people contient les fiches de toutes les personnes modelisées dans le système d’information. Chaque entrée représente une personne.

  • ou=groups contient les groupes de personnes. Par exemple, le groupe cn= comptabilite regroupe les gestionnaires de l’unité de recherche.

Toujours à la racine, se trouve une entrée cn=admin qui représente l’administrateur de l’annuaire. Il possède les droits d’écriture et de lecture sur la totalité des entrées de l’annuaire. Le mot de passe qui lui est associé est ld@p.

Les utilisateurs

L’annuaire est peuplé avec une quarantaine d’entrées utilisateurs purement fictives pour donner du réalisme aux manipulations. Vous pouvez, si vous le souhaitez, ajouter vos propres entrées. Sur chaque fiche sont renseignés les attributs suivants :

Attribut Exemple de valeur Signification
cn James.Bond Nom canonique de la forme Prenom.Nom
sn Bond Nom de famille
givenName James Prénom
uid jbond Identifiant UNIX (login) constitué de la première lettre du prénom suivie des premières lettres du nom de famille
uidNumber 1004 Numéro d’utilisateur UNIX (nombre supérieur à 1000)
gidNumber 300 Numéro du groupe primaire UNIX
homeDirectory /nfs/home/jbond Répertoire d’accueil de l’utilisateur
loginShell /bin/bash Shell de l’utilisateur
mail James.Bond@vbox.tp Adresse électronique de l’utilisateur
initials J. B. Initiales du prénom et du nom de famille (en majuscules)

Au sein de l’annuaire, il y a unicité sur les attributs uid et uidNumber. Une entrée est identifiée par son DN (Distinguished Name). Par exemple le DN associé à l’entrée ci-dessus est uid=jbond,ou=people,dc=vbox,dc=tp.

Pour consulter la liste des entrées utilisateurs disponibles, exécutez, à partir de la VM clinux, la commande suivante (au préalable installez le paquet ldap-utils) :

ldapsearch -x -H ldap://gate.vbox.tp  -b ou=people,dc=vbox,dc=tp '(uid=*)' 

Il n’y a pas d’attribut userPassword dans les entrées de l’annuaire. En effet, pour l’authentification des utilisateur nous utiliserons la base Kerberos. Vous pouvez vérifier cela avec la commande :

ldapsearch -LLL -x -H ldap://gate.vbox.tp  -b ou=people,dc=vbox,dc=tp -D cn=admin,dc=vbox,dc=fr -W '(uid=*)'  uid cn userPassword

Les groupes d’utilisateurs

La notion de groupe est importante, puisqu’elle permet notamment de donner des droits d’accès particuliers à un ensemble d’utilisateurs sur différentes ressources. Le recours aux groupes permet de factoriser les choses en évitant la recopie de listes pour chaque ressource considérée.

Chaque entrée de la branche ou=groups,dc=vbox,dc=tp est un groupe d’utilisateurs. Elles sont renseignées avec les attributs suivants :

Attribut Exemple de valeur Signification
cn comptabilite Nom du groupe d’utilisateurs
description La comptabilité Courte description du groupe
member uid=vaterre,ou=people,dc=vbox,dc=tp Attribut multi-valué (ie. pouvant apparaître plusieurs fois) contenant le DN de chaque utilisateur membre du groupe

Six groupes sont définis dans l’annuaire :

  • cn=vbox-users est le groupe primaire POSIX de tous les utilisateurs de l’annuaire
  • cn=secretariat représente les sécrétaires de l’unité de recherche. N’oublions pas que le mini système d’information que nous modélisons est une unité de recherche (fictive) du CNRS
  • cn=comptabilite représente les personnes affectées à la gestion financière du laboratoire
  • cn=equipe1 représente une première équipe de recherche
  • cn=equipe2 représente une deuxième équipe de recherche
  • cn=equipe3 représente une troisième équipe de recherche

Pour visualiser les groupes disponibles, exécutez, sur la VM clinux, la commande suivante :

ldapsearch -x -H ldap://gate.vbox.tp  -b ou=groups,dc=vbox,dc=tp '(cn=*)'

L’annuaire LDAP est dotté de l’overlay memberOf. Une overlay est une extension de l’annuaire qui apporte des fonctionnalités supplémentaires. Celle-ci calcule, pour chaque entrée utilisateur, un attribut supplémentaire nommé memberOf. Cet attribut, qui est multi-valué, contient le DN des groupes auxquels appartient l’utilisateur.

Comme tout attribut calculé, il n’apparait pas lors d’une recherche s’il n’a pas explicitement été demandé. Pour cela, on ajoute le nom de l’attribut dans la requete de recherche.

ldapsearch -x -H ldap://gate.vbox.tp  -b ou=groups,dc=vbox,dc=tp '(cn=*)' dn cn givenName member

Translation d’adresse pour les VMs autres que Gate

Comme expliqué dans la partie précédente, seule la machine virtuelle gate est connectée au réseau local de la salle de TP (loire.tp). Les autres VMs évoluent au sein d’un réseau privé virtuel interne à VirtualBox.

Néanmoins, elles auront besoin d’accéder à des ressources externes à ce réseau privé virtuel. Au premier rang duquel, il y a le mirroir local Debian qui est hébergé sur le serveur de la salle de TP.

C’est pour cela, qu’un mécanisme de transalation d’adresse est implanté sur la VM gate. Elle permet aux VMs (réseau vbox.tp) d’accéder aux services disponibles sur le réseau de la salle de TP (loire.tp). Par contre, l’inverse n’est pas possible.