Apps – GUACAMOLE Partie 1: Théorie
Avant de rentrer dans le vif du sujet je pense que nous devons regarder et poser la définition d’un bastion.
Bastion (nom masculin) : Ouvrage polygonal à deux faces et deux flancs en saillie sur une enceinte ; Point fort d’une ligne de défense ; Ce qui forme une défense solide, un soutien inébranlable de quelque chose
Dictionnaire Larousse
La solution Guacamole se pose donc comme une solution qui doit servir de défense solide et soutien inébranlable à notre SI1. Il doit être avec notre UTM2 le point fort de notre ligne de j’ose l’écrire cyberdéfense (que c’est beau) !
Son objectif ? Contrôler les flux d’entrée et les accès à notre SI.
Et le comment Monsieur ? Ca nous allons voir la théorie dans cette partie ainsi que l’architecture
Qué es el Guacamole?
Le premier qui me dit que c’est un plat culinaire, je lui balance mon avocat commis d’office ! En plus je ne sais pas ce que j’ai écrit en titre de partie, je n’ai pas appris l’espagnol. Toutefois cela ne me semble pas faux…
Bref, après cette entrée en matière plus que discutable, Guacamole est né de Michael Jumper en 2010 (sous le nom RealMint) dont l’objectif principal est de mettre en place une passerelle d’accès sans client pour se connecter à des ressources via les protocoles RDP3, VNC4, SSH5 à travers un navigateur internet. C’est en 2016 que le projet est donné à la Fondation Apache qui reprend le projet top level en incubation . C’est alors en 2017 naît Guacamole sous licence Apache voit le jour.
Guacamole étant utilisé à des fins internes et étant issu du monde libre (opensource), il est difficile de définir l’utilisation de la solution dans le monde de l’IT. Pour autant, cela reste une bonne solution pour se passer d’outils de prise en main à distance.
Cependant, il est nécessaire de garder à l’esprit qu’un outil opensource n’est pas gratuit. Ah bon ? Tu as sorti la CB ? Ce que je veux dire par là et pour l’avoir expliqué maintes et maintes fois à des clients, DGs6 et autres DSIs7 la solution est gratuite, mais le temps ETP8 ne l’est pas. Certaines fois il est préférable de lâcher un petit billet et avoir un support que ne rien lâcher et subir une indisponibilité de service qui dure, qui dure…
Architecture & Best Practices
Pour cette partie, je pense qu’il va falloir préciser une nouvelle fois que la petite infrastructure que j’ai ne me permet pas de respecter les règles de bonnes pratiques. Mais encore une fois, je ne passerai pas outre et je propose de voir l’architecture de mes rêves et l’architecture du moindre mal que je vais mettre en place 🙂
Guacamole est une application que se décompose en deux parties, une partie application web et une partie serveur.
Donc qui dit application et serveur dit d’office un front et un back end. De plus ai-je écrit web ?
Effectivement, l’application guacamole est un .jar. Un servlet dans notre jargon, soit une application web sous java. Il nous faudra donc un serveur tomcat et java.
Les données guacamole sont stockées dans un SGBD9. Là dessus, Guacamole est sympa, le choix nous est laissé de choisir entre PostgreSQL, MySQL/Mariadb et MSSQL10.
Donc cela nous donnerait, un serveur en DMZ pour la partie Web avec l’application Guacamole et un serveur Guacamole isolé avec la base de données.

Le schéma ci-haut, serait applicable si c’était en entreprise et encore, je dédierai un serveur pour la partie SQL pour éviter toutes corruptions de données éventuelles. Mais voilà, je n’ai pas de ressources (ou du moins, il ne m’en reste plus des masses avec les VMs qui poussent dans tous les sens… J’ose même claquer un LOL des familles 🙂 #vieuxmec).
Donc ma cible sera plutôt ce type d’infrastructure All-In-One.

Oui niveau sécurité, je mise tout sur mon firewall et son proxy et le hardening de mon OS11 Linux. Par contre je reviendrai en détail sur certains mécanismes de sécurité que j’ai mis en place.
Performances et Recommandations
Côté performances tout va dépendre de notre environnement et de notre usage. Si c’est juste pour une personne pour intervenir sur un serveur, autant ne pas trop se prendre la tête. A l’inverse, si c’est pour faire de la grosse production avec de la charge, une architecture avec répartition de charge sera nécessaire (LoadBalancing pour les intimes).
| Petite Infra | PME | Entreprise | |
| # Session Simultanée | 5 – 10 | 20 – 50 | +100 |
| Guacamole Apps | 2 vCPU 4 Go RAM | 2vCPU 4 Go RAM | 4 vCPU 8 Go RAM |
| Guacamole Server | N/A | 4 vCPU 8 Go RAM | 8-16 vCPU 16-32 Gio RAM |
| BDD | N/A | 2vCPU 4 Go RAM | 4 vCPU 8 Go RAM |
Sympa les ressources hein ? Vous comprendrez qu’entre deux petites tequilas frappées, je préfère la petite infra all in one ? 🙂
[Dans le cadre de la loi Evin, l’abus d’alcool est dangereux pour la santé et doit être consommé avec modération]
Je n’aborde pas le sujet du stockage car ce dernier incombe à chacun de savoir ce qu’il doit faire. Mais s’il vous plaît éviter la mono partition et des tailles de disque ridicules. En d’autres termes, ne soyez pas radin mais ne tombez pas non plus dans le surprovisionning.
Les choix du gringo
C’est autour d’une petite cerveza des familles que j’écris ces lignes (la San José ce n’est pas ce que je préfère le plus au monde… Par contre j’ai le souvenir d’une petite mezcal direct du Mexique. Un délice), le gringo que je suis doit prendre des décisions.
Il existe deux grands moyens d’installer Guacamole… La version docker et la version application native. Je sais clairement que je ne vais pas me faire des amigos avec cet article. Je ne CROIS PAS en DOCKER.
Oui, bah je vous laisse râler et pester contre moi. Quitte à me balancer à Machete, je ne changerai pas d’avis !
Pourquoi je ne crois pas en docker ? Docker et pour moi utile pour les environnements de développement. La conteneurisation est quelque chose qui a révolutionné le monde de l’informatique mais je ne vois pas sa valeur ajoutée dans le monde de l’infrastructure. Egalement et de ce que j’ai pu constaté, rares sont les SysAdmins qui configurent et sécurisent proprement leurs environnements GNU/Linux alors imaginez la sécurisation en surcouche des conteneurs ? A maintenir dans le temps ce n’est pas selon moi une solution viable. Alors oui c’est rapide à déployer, mais personnellement cela ne m’intéresse pas de réaliser ce genre de chose.
J’ai donc décidé de me casser les dents sur une installation native. Et là je peux vous dire que des choses j’en ai apprises et des Stacks Traces Java dans les journaux j’en ai mangé autant que je mange de quesadillas. Si Senor !
Côté SGBD, j’ai décidé de repartir sur mon premier amour MariaDB. J’avoue avoir longtemps hésité avec PostgreSQL ne pouvant me décider, j’ai fait un plouf plouf avec ma fille. L’otarie a gagné contre l’éléphant.
Donc résumons :
- Serveur Guacamole :
- Système : RockyLinux 10
- Guacamole : version 1.6 [dernière en date]
- SGBD : MariaDB 15.X [dernière sous version en date]
- Tomcat : version 9.X [dernière sous version en date]
- La version 10 n’est pas compatible…
- JAVA : version 21
| Maintenant que nous avons tout ce qu’il nous faut en guise d’informations, il est temps de se lancer dans l’aventure du déploiement de Guacamole et laissons nous pousser des ailes comme Quetzalcóatl et en route pour la partie suivante <3 | ![]() |
Oui, je ne parle pas de sécurité dans cette partie contrairement à certains de mes précédents billets. Le sujet étant assez important, j’ai pris le parti de faire une partie complètement dédiée. C’est pour vous montrer une fois encore que je ne veux pas prendre le sujet à la légère et qu’il y a matière à dire et à faire.
Modèle RACI
Je ne suis pas un grand habitué des matrices RACI. J’ai toujours vu ces dernières comme un casse tête à rédiger (ce que j’adore honnêtement) mais surtout comme une horreur à faire appliquer. Néanmoins au vu de la criticité de notre application et de ce que je chercher à implémenter, il me parait opportun et surtout cruciale de définir cette dernière.
Je suis d’accord, cela devrait être dans la partie sécurisation, mais personnellement mettre ce dernier en début de document/billet me parait plus important et de se donner la ligne à suivre.
|
Rôles |
Légendes |
|---|---|
|
|
Ce qui me permet de définir la matrice suivante dans un monde idéal où l’ensemble des services IT14 sont présents au sein d’une organisation.
|
Activité |
AdminSys |
AdminIAM |
RSSI |
Helpdesk |
Auditeur |
Utilisateur |
|---|---|---|---|---|---|---|
|
Installation de Guacamole |
R/A |
I |
C |
I |
I |
I |
|
Mise à jour de la plateforme |
R/A |
I |
C |
I |
I |
I |
|
Configuration LDAP / SSO / MFA |
R |
A |
C |
I |
I |
I |
|
Création des utilisateurs |
I |
R/A |
C |
C |
I |
I |
|
Gestion des groupes utilisateurs |
I |
R/A |
C |
I |
I |
I |
|
Attribution des droits d’accès |
C |
R/A |
C |
I |
I |
I |
|
Création des connexions RDP/SSH/VNC |
R/A |
C |
C |
I |
I |
I |
|
Création des groupes de connexions |
R/A |
C |
I |
I |
I |
I |
|
Gestion des profils de partage |
R |
C |
A |
C |
I |
I |
|
Supervision des sessions |
R |
I |
A |
C |
I |
I |
|
Consultation des logs et audits |
C |
I |
R/A |
I |
C |
I |
|
Réponse aux incidents de sécurité |
R |
C |
A |
C |
I |
I |
|
Support utilisateurs |
I |
I |
I |
R/A |
I |
C |
|
Révocation des accès |
I |
R/A |
C |
I |
I |
I |
|
Sauvegarde et restauration |
R/A |
I |
C |
I |
I |
I |
|
Contrôle de conformité |
I |
C |
R |
I |
A |
I |
Source
- SI : Système d’Information ↩︎
- UTM : Unified Threat Management ↩︎
- RDP : Remote Desktop Protocol ↩︎
- VNC : Virtual Network Computing ↩︎
- SSH : Secure SHell ↩︎
- DG : Directeur Général ↩︎
- DSI : Directeur des Systèmes d’Informations ↩︎
- ETP : Employé Temps Plein ↩︎
- SGBD : Système de Gestion de Base de Données ↩︎
- MSSQL : Microsoft Server SQL ↩︎
- OS : Operating System ↩︎
- ANSSI : Agence National de la Sécurité des Systèmes d’Informations ↩︎
- BDD : Base De Données ↩︎
- IT : Information Technologie ↩︎

