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