La première partie a construit un bastion sûr. Mais un bastion bien installé et mal utilisé reste un bastion vulnérable : la sécurité se joue aussi au quotidien, dans la façon de créer les connexions, d’attribuer les droits et de surveiller les accès. Chaque section de ce cours signale donc explicitement ce qui est important côté cyber.
Se connecter au bastion
Accéder à la page de connexion
Le bastion s’ouvre depuis n’importe quel navigateur récent, à l’adresse :
https://bastion.mondomaine.local/guacamole/
Il n’y a pas de numéro de port à indiquer : Nginx répond sur le port HTTPS standard (443). Le port 8080 de Tomcat n’est pas joignable depuis le réseau.
Première connexion et double authentification
- Saisir son nom d’utilisateur et son mot de passe, puis cliquer sur Se connecter.
- Si le compte a été créé avec l’option « Mot de passe expiré », Guacamole impose immédiatement le choix d’un nouveau mot de passe, conforme à la politique de mots de passe du bastion.
- Lors de la toute première connexion, Guacamole affiche un QR code : le scanner avec une application d’authentification (sur smartphone), puis saisir le code à 6 chiffres affiché.
- Aux connexions suivantes, le code à 6 chiffres est demandé après le mot de passe.
Se repérer dans l’interface
| Zone | Contenu |
|---|---|
| Page d’accueil | « Connexions récentes » (vignettes des dernières sessions) et « Toutes les connexions », rangées par groupes. |
| Menu utilisateur (en haut à droite) | Accueil, Paramètres, Se déconnecter. |
| Paramètres | Onglets Sessions actives, Historique, Utilisateurs, Groupes, Connexions, Préférences. Un utilisateur ne voit que les onglets correspondant à ses droits. |
| Préférences | Langue de l’interface, méthode de saisie par défaut, changement de mot de passe. |
Créer une connexion vers une machine distante
Une connexion est une fiche enregistrée dans le bastion : elle décrit comment joindre une machine (protocole, adresse, port) et avec quelles options de sécurité. Les utilisateurs n’ont jamais à connaître l’adresse des serveurs : ils cliquent sur le nom de la connexion.
Pour en créer une : Paramètres → Connexions → Nouvelle connexion. Le formulaire est découpé en sections ; seules les rubriques utiles sont détaillées ci-dessous.
Rubriques communes à toutes les connexions
| Rubrique | Valeur conseillée | Pourquoi |
|---|---|---|
| Nom | Explicite et normalisé, ex. SRV-DC01 – Contrôleur de domaine (RDP) | L’historique et les journaux doivent être lisibles par quelqu’un d’autre que vous. |
| Emplacement | Le groupe de connexions adapté | Les groupes structurent l’attribution des droits. |
| Protocole | RDP (Windows) ou SSH (Linux, équipements réseau) | Jamais Telnet : non compilé sur ce bastion. |
| Limites de simultanéité | Serveur sensible : 1 connexion par utilisateur | Évite les sessions fantômes ouvertes sur plusieurs postes. |
| Enregistrement d’écran | Chemin ${HISTORY_PATH}/${HISTORY_UUID}, création automatique cochée | Traçabilité. |
Connexion RDP (serveurs et postes Windows)
| Section | Paramètre | Valeur |
|---|---|---|
| Réseau | Nom d’hôte | Adresse IP ou nom DNS du serveur |
| Réseau | Port | 3389 |
| Authentification | Nom d’utilisateur / Mot de passe | Voir « Où mettre les identifiants » ci-dessous |
| Authentification | Domaine | Nom NetBIOS du domaine (ex. DOMBTSIG) pour un compte Active Directory |
| Authentification | Mode de sécurité | NLA (authentification avant ouverture de session) |
| Authentification | Ignorer le certificat du serveur | Coché uniquement si le serveur utilise un certificat autosigné |
| Presse-papiers | Désactiver la copie / le collage | Selon la sensibilité du serveur (voir plus bas) |
| Partage de périphériques | Activer le lecteur | Non coché : pas de transfert de fichiers par défaut |
Connexion SSH (serveurs Linux, équipements réseau)
| Section | Paramètre | Valeur |
|---|---|---|
| Réseau | Nom d’hôte | Adresse IP ou nom DNS |
| Réseau | Port | 22 (ou le port SSH du serveur) |
| Réseau | Clé publique de l’hôte | La clé publique SSH du serveur (voir ci-dessous) |
| Authentification | Nom d’utilisateur | Compte nominatif sur le serveur, jamais root |
| Authentification | Clé privée (et phrase de passe) | À privilégier par rapport au mot de passe |
La clé publique du serveur se récupère sur le serveur lui-même (par une voie sûre, par exemple la console de la VM) :
cat /etc/ssh/ssh_host_ed25519_key.pub
Où mettre les identifiants des machines ?
C’est la décision la plus importante lors de la création d’une connexion. Trois possibilités :
| Option | Fonctionnement | Avantages | Risques |
|---|---|---|---|
| A. Identifiants enregistrés dans la connexion | Nom d’utilisateur et mot de passe saisis dans la fiche | Connexion en un clic | Stockés en clair dans la base ; tous les utilisateurs de la connexion agissent sous le même compte : on ne sait plus qui a fait quoi sur le serveur |
| B. Champs laissés vides | Guacamole demande les identifiants au moment de la connexion | Chacun utilise son propre compte ; rien n’est stocké | Une saisie de plus à chaque connexion |
C. Jetons ${GUAC_USERNAME} et ${GUAC_PASSWORD} | Guacamole réutilise les identifiants saisis pour se connecter au bastion | Compte personnel, sans ressaisie, rien n’est stocké | Suppose les mêmes identifiants sur le bastion et sur les serveurs, donc un bastion relié à l’annuaire (extension LDAP) |
Presse-papiers et transfert de fichiers
Par défaut, le presse-papiers est partagé entre le poste de l’utilisateur et la machine distante. C’est pratique pour coller une commande, mais c’est aussi un canal de fuite : on peut copier des données sensibles hors du serveur, ou coller un contenu malveillant sur le serveur.
| Type de machine | Copie depuis la session | Collage vers la session | Lecteur / transfert |
|---|---|---|---|
| Poste ou serveur de TP | Autorisée | Autorisé | Selon le besoin |
| Serveur de production | Désactivée | Autorisé | Désactivé |
| Serveur très sensible (contrôleur de domaine, hyperviseur) | Désactivée | Désactivé | Désactivé |
Travailler dans une session
Le menu Guacamole
Pendant une session, l’écran de la machine distante occupe tout le navigateur : il n’y a pas de barre d’outils permanente. Les commandes sont regroupées dans le menu Guacamole, qui s’ouvre et se ferme avec la combinaison Ctrl + Alt + Maj.
| Élément du menu | Usage |
|---|---|
| Presse-papiers | Zone de texte synchronisée avec la machine distante (si le presse-papiers n’est pas désactivé pour la connexion). |
| Méthode de saisie : aucune | Fonctionnement normal au clavier physique. |
| Méthode de saisie : saisie de texte | Utile sur tablette ou pour certaines dispositions de clavier. |
| Méthode de saisie : clavier à l’écran | Clavier virtuel, qui permet notamment d’envoyer Ctrl+Alt+Suppr à la machine distante. |
| Mode souris | Pointeur absolu (souris) ou relatif (écran tactile). |
| Zoom | Ajuster l’affichage à la taille de la fenêtre. |
| Partager | Générer un lien de partage de la session, uniquement si un profil de partage existe. |
| Nom de la connexion / Déconnecter | Revenir à l’accueil, basculer vers une autre session ouverte, ou fermer la connexion. |
Terminer proprement une session
Fermer l’onglet du navigateur ne ferme pas la session sur le serveur : elle reste ouverte, déconnectée. On termine donc toujours par la déconnexion de la session distante (menu Démarrer de Windows, commande exit sous Linux), puis par la déconnexion du bastion (menu utilisateur → Se déconnecter).
Gérer les droits des utilisateurs
C’est le cœur du bastion. Toutes les protections de la partie 1 (HTTPS, TOTP, pare-feu) servent à une seule chose : garantir que chaque personne n’accède qu’aux machines dont elle a besoin, et que l’on sait qui a fait quoi. Une gestion des droits approximative annule tous ces efforts.
Les principes à appliquer
| Principe | Ce qu’il signifie | Traduction dans Guacamole |
|---|---|---|
| Moindre privilège | Chacun reçoit uniquement les droits nécessaires à sa mission, rien de plus. | Aucune permission système par défaut ; accès aux seules connexions utiles. |
| Besoin d’en connaître | On ne voit même pas l’existence des ressources qui ne nous concernent pas. | Un utilisateur ne voit que les connexions sur lesquelles il a un droit. |
| Comptes nominatifs | Un compte = une personne identifiée. Jamais de compte partagé. | Pas de compte « etudiant » ou « technicien » commun : l’historique doit désigner une personne. |
| Séparation des rôles | Celui qui administre les comptes n’est pas forcément celui qui utilise les serveurs, ni celui qui contrôle. | Rôles distincts : administrateur du bastion, administrateurs système, auditeur. |
| Gestion par groupes (RBAC) | On attribue les droits à des rôles, puis on place les personnes dans les rôles. | Groupes d’utilisateurs, groupes de connexions ; jamais de droit attribué directement à une personne sauf exception documentée. |
| Revue périodique | Les droits se vérifient régulièrement : ils s’accumulent avec le temps. | Revue à chaque semestre et à chaque départ. |
Le modèle de droits de Guacamole
Guacamole manipule quatre types d’objets : les utilisateurs, les groupes d’utilisateurs, les connexions et les groupes de connexions (plus les profils de partage). Il existe deux familles de permissions.
1. Les permissions système : ce qu’un compte peut faire sur le bastion lui-même.
| Permission (nom interne) | Ce qu’elle autorise | À qui la donner |
|---|---|---|
ADMINISTER — Administrer le système | Tout, sans restriction : c’est un « joker » qui englobe toutes les autres permissions. | 2 personnes maximum : les administrateurs du bastion. |
AUDIT | Consulter l’historique des connexions et des authentifications de tout le système. | Un auditeur ou un responsable sécurité qui contrôle sans administrer. |
CREATE_USER — Créer des utilisateurs | Créer de nouveaux comptes. | Administrateurs du bastion uniquement. |
CREATE_USER_GROUP | Créer de nouveaux groupes d’utilisateurs. | Administrateurs du bastion uniquement. |
CREATE_CONNECTION | Créer de nouvelles connexions. | Éventuellement un administrateur système chargé de déclarer ses serveurs. |
CREATE_CONNECTION_GROUP | Créer des groupes de connexions. | Administrateurs du bastion. |
CREATE_SHARING_PROFILE | Créer des profils de partage de session. | Administrateurs du bastion, et seulement si le partage est souhaité. |
Dans le formulaire d’un utilisateur, une case supplémentaire « Modifier son propre mot de passe » permet à la personne de changer elle-même son mot de passe : elle doit être cochée pour tous.
2. Les permissions sur objet : ce qu’un compte peut faire sur un utilisateur, une connexion ou un groupe précis.
| Permission | Sur une connexion | Sur un utilisateur ou un groupe |
|---|---|---|
READ (lecture) | Voir la connexion et l’utiliser : c’est le droit d’accès normal. | Voir le compte ou le groupe. |
UPDATE (modification) | Modifier ses paramètres (adresse, identifiants, options). | Modifier le compte, y compris son mot de passe. |
DELETE (suppression) | Supprimer la connexion. | Supprimer le compte ou le groupe. |
ADMINISTER | Donner ou retirer des droits sur cette connexion à d’autres. | Donner ou retirer des droits à ce compte. |
Organiser les connexions en groupes
Un groupe de connexions de type organisationnel fonctionne comme un dossier. On regroupe les machines selon un critère qui correspond à la façon dont on attribue les accès, en général la fonction et la sensibilité des serveurs :
| Groupe de connexions | Contenu (exemple du plateau technique) | Sensibilité |
|---|---|---|
| Contrôleurs de domaine | SRV-DC01, SRV-DC02 | Critique |
| ESX | Hyperviseurs de la ferme de virtualisation | Critique |
| Serveurs applicatifs Linux | Serveurs web, bases de données | Élevée |
| Serveurs gestion de parc Linux | GLPI, supervision, WAPT… | Élevée |
| Machines de TP — [groupe d’étudiants] | VM des étudiants pour leurs réalisations | Modérée |
Méthode : construire une matrice des droits
Avant de cliquer dans l’interface, on construit sur papier une matrice qui croise les rôles (groupes d’utilisateurs) et les groupes de connexions. Elle sert de référence, se relit facilement, et permet de vérifier les droits lors des revues.
Étape 1 — Lister les rôles, c’est-à-dire les profils de personnes ayant des besoins différents :
| Groupe d’utilisateurs | Qui ? | Permissions système |
|---|---|---|
| GRP-Admins-Bastion | Les 2 administrateurs du bastion | ADMINISTER |
| GRP-Admins-Infra | Enseignants responsables de l’infrastructure | aucune |
| GRP-SISR2-[groupe] | Étudiants de 2e année SISR d’un groupe de projet | aucune |
| GRP-Jury-E5 | Membres du jury, le temps de l’épreuve | aucune |
| GRP-Auditeurs | Responsable sécurité ou enseignant chargé du contrôle | AUDIT |
Étape 2 — Remplir la matrice : quelles connexions pour quel rôle ?
| Contrôleurs de domaine | ESX | Serveurs applicatifs Linux | Gestion de parc Linux | Machines de TP du groupe | |
|---|---|---|---|---|---|
| GRP-Admins-Bastion | Accès | Accès | Accès | Accès | Accès |
| GRP-Admins-Infra | Accès | Accès | Accès | Accès | — |
| GRP-SISR2-[groupe] | — | — | — | — | Accès |
| GRP-Jury-E5 | — | — | — | — | Accès, limité dans le temps |
| GRP-Auditeurs | — | — | — | — | — |
« Accès » signifie la permission READ : voir et utiliser les connexions. L’auditeur n’a aucun accès aux machines : il consulte l’historique et les enregistrements, ce qui garantit qu’il contrôle sans pouvoir agir.
Étape 3 — Appliquer dans Guacamole :
- Paramètres → Groupes → Nouveau groupe : créer chaque groupe d’utilisateurs.
- Dans chaque groupe, onglet Connexions : cocher les groupes de connexions et les connexions prévus par la matrice.
- Dans la fiche de chaque utilisateur, onglet Groupes : l’ajouter au(x) groupe(s) correspondant à son rôle.
- Ne cocher aucune permission directement sur les utilisateurs, sauf « Modifier son propre mot de passe ».
Étape 4 — Tester avec un compte de test : se connecter avec un compte de chaque rôle et vérifier qu’il voit exactement ce que prévoit la matrice, ni plus ni moins. C’est la recette des droits : sans ce test, on ne sait pas si les droits sont corrects.
Créer un compte utilisateur
Paramètres → Utilisateurs → Nouvel utilisateur. Le formulaire comporte plusieurs rubriques.
| Rubrique | Réglage | Explication |
|---|---|---|
| Identifiant | prenom.nom | Nominatif, selon une convention unique pour tout le bastion. |
| Mot de passe | Mot de passe provisoire aléatoire | Transmis à la personne par un canal séparé (de vive voix, pas dans le même courriel que l’identifiant). |
| Mot de passe expiré | Coché | Oblige la personne à choisir son propre mot de passe à la première connexion : l’administrateur ne le connaît plus. |
| Connexion désactivée | Non coché (coché pour suspendre un compte) | Un compte désactivé est refusé comme s’il n’existait pas, mais son historique est conservé. |
| Profil | Nom complet, adresse électronique | Permet de savoir qui est derrière l’identifiant lors d’un audit. |
| Permissions | Uniquement « Modifier son propre mot de passe » | Les autres droits viennent des groupes. |
| Groupes | Le ou les groupes du rôle | Voir la matrice ci-dessus. |
Restreindre un compte dans le temps
Chaque compte peut être limité dans le temps, ce qui est particulièrement utile pour les comptes temporaires (jury, stagiaire, prestataire) :
| Restriction | Effet | Exemple |
|---|---|---|
| Activer le compte après (date) | Aucune connexion possible avant cette date. | Jour de l’épreuve |
| Désactiver le compte après (date) | Aucune connexion possible après cette date. | Lendemain de l’épreuve |
| Autoriser l’accès après (heure) | Connexion refusée avant cette heure, chaque jour. | 07:30 |
| Ne pas autoriser l’accès après (heure) | Connexion refusée après cette heure, chaque jour. | 18:30 |
| Fuseau horaire | Fuseau utilisé pour interpréter ces dates et heures. | Europe/Paris |
Imposer une politique de mots de passe
La politique s’applique à tous les comptes de la base. On ajoute à /etc/guacamole/guacamole.properties :
# Politique de mots de passe des comptes Guacamole
mysql-user-password-min-length: 12
mysql-user-password-require-multiple-case: true
mysql-user-password-require-digit: true
mysql-user-password-require-symbol: true
mysql-user-password-prohibit-username: true
mysql-user-password-history-size: 5
systemctl restart tomcat
| Paramètre | Effet |
|---|---|
min-length: 12 | 12 caractères minimum. |
require-multiple-case | Au moins une majuscule et une minuscule. |
require-digit / require-symbol | Au moins un chiffre et un caractère spécial. |
prohibit-username | Le mot de passe ne peut pas contenir l’identifiant. |
history-size: 5 | Impossible de réutiliser l’un des 5 derniers mots de passe. |
Les profils de partage
Un profil de partage permet à un utilisateur de générer un lien donnant accès à sa session en cours, par exemple pour qu’un enseignant observe la manipulation d’un étudiant. Le profil peut être en lecture seule (option « Lecture seule » du profil).
Faire vivre les droits : arrivées, changements, départs
| Événement | Action | Délai |
|---|---|---|
| Arrivée | Création du compte nominatif, ajout au groupe du rôle, remise du mot de passe provisoire. | Le jour de l’arrivée, pas avant |
| Changement de rôle | Ajout au nouveau groupe et retrait de l’ancien. | Immédiat |
| Départ | Cocher « Connexion désactivée » ; suppression après la durée de conservation de l’historique. | Le jour même |
| Perte du téléphone (TOTP) | Réinitialisation de l’enrôlement TOTP dans la fiche de l’utilisateur, après vérification de son identité. | À la demande |
| Revue des droits | Comparer les groupes et leurs membres avec la matrice ; supprimer les comptes inutilisés. | Chaque semestre |
Superviser l’activité
| Onglet (Paramètres) | Ce qu’il montre | Usage |
|---|---|---|
| Sessions actives | Toutes les sessions en cours : utilisateur, connexion, adresse IP d’origine, durée. | Repérer une session oubliée ou suspecte, et la fermer (cocher, puis « Terminer les sessions »). |
| Historique | Les connexions passées : qui, quelle machine, quand, combien de temps, et si un enregistrement existe. | Répondre à « qui s’est connecté au contrôleur de domaine mardi soir ? » ; relire la session enregistrée. |
Panorama des solutions de bastion
Les solutions de bastion d’administration permettent de gérer de manière sécurisée les accès aux systèmes critiques.
Solutions libres (open source)
| Solution | Caractéristiques |
|---|---|
| Apache Guacamole | Bastion RDP, VNC et SSH accessible depuis un navigateur web. Très populaire pour les accès distants. Licence Apache 2.0. |
| The Bastion (OVHcloud) | Bastion SSH open source développé et utilisé par OVHcloud : traçabilité fine, enregistrement des sessions, gestion des clés. |
| Teleport (Gravitational) | Accès unifié SSH, Kubernetes, bases de données… Code source sous AGPLv3, mais depuis la v16 les binaires « Community » sont sous licence commerciale : gratuits seulement pour les structures de moins de 100 salariés et 10 M$ de chiffre d’affaires. |
| Pritunl Zero | Bastion d’administration à approche Zero Trust, multi-protocoles, interface simplifiée. |
Solutions propriétaires
| Solution | Caractéristiques |
|---|---|
| Wallix Bastion | Solution française de gestion des accès et sessions à privilèges ; certifiée par l’ANSSI (CSPN). |
| CyberArk Privileged Access Security | Une des références de la gestion des accès à privilèges. |
| BeyondTrust Privileged Remote Access | Sécurisation des accès administratifs, avec enregistrement et audit. |
| Delinea (ex-Thycotic et Centrify) | Plateforme complète de gestion des accès à privilèges, dont Secret Server, coffre-fort de mots de passe. |
| Senhasegura | Concurrent de CyberArk et Wallix, présent en Europe et en Amérique latine. |
| JumpCloud | Plateforme SaaS de gestion des identités et des accès, avec des fonctions d’accès distant. |
Le choix dépend des besoins : l’open source pour la flexibilité, le propriétaire pour la conformité, les enregistrements avancés et le support technique.
🧠 Testez vos connaissances
6 questions. Répondez puis cliquez sur « Corriger ». Rien n’est enregistré : c’est de l’auto-évaluation.
© 2026 Bruno Jousseaume. Ce cours est publié sous licence CC BY-NC-SA 4.0 : vous pouvez le partager et l’adapter en citant l’auteur et un lien vers cette page, sans usage commercial, et en partageant vos adaptations sous la même licence.