Apps – GUACAMOLE Partie 2 : Pratique
Cet article, notamment la partie pratique a été un sacré défi. J’ai presque déposé les armes. J’ai fait un pas en avant puis deux en arrière.
Pourquoi c’est vraiment si compliqué que ça d’installer Guacamole ?
Non pas compliqué du tout, mais j’ai voulu faire les choses « simples » pour changer. Je n’ai pas souhaité installer Tomcat depuis le gestionnaire de package mais installer ce dernier depuis les sources et donc il ne faut pas suivre bêtement le guide Guacamole.
![]() | J’ai tellement fumé des méninges que Tezcatlipoca n’était pas loin de me couper les ailes et de me pousser à l’exil… (Oui je pars en délire sur le monde amérindien et la culture mexicaine). |
Mais bon le sacrifice en vaut largement la chandelle car c’est au bout de tout cela que je vais trouver mon El Dorado à l’inverse de Cortés.
Normalement, si vous suivez ce guide et l’ensemble des références vous devriez avoir un système bien durci. J’aimerais d’ailleurs bien trouver quelqu’un pour pentester mon système.
Place à l’action !
Dépendances
Pour les dépendances, j’ai décidé de ne pas mélanger les sujets. Après réflexion, ayant déjà réalisé un article sur MariaDB, je me suis dit que j’allais faire de même pour Tomcat et faire tout simplement une référence à ces derniers dans ce billet. Cela devrait rendre plus digeste le déploiement.
SGBD : MariaDB
Pour la procédure, c’est par là que ça se passe : Lien
Concernant la configuration de la BDD1 et des Users nous aborderons ce point dans la partie configuration.
Tomcat
Pour la procédure, c’est par là que ça se passe : Lien (Que d’originalité… Merci, je sais).
Guacamole
L’installation se déroulera en deux temps. Un temps pour le serveur Guacamole et un second pour l’application.
Guacamole – Server
Toujours pour faire simple, je vais installer l’application nativement et donc compiler cette dernière. Pour rester cohérent, je vais installer Guacamole à côté de Tomcat sous /opt.
Qui dit installation par compilation dit ? Création d’un groupe et utilisateur dédié à notre daemon Guacamole. Les SysAdmin qui font tout tourner en tant que root, je ne sais pas comment vous faites niveau sécu et diag de vos logs…
Créons le groupe et l’utilisateur de service guacamole
$ sudo groupadd --system guacamole
$ sudo useradd --system --gid guacamole --shell /sbin/nologin \
--home-dir /var/lib/guacd guacamole
$sudo mkdir -p /var/lib/guacd
$sudo chown -R guacamole:guacamole /var/lib/guacd
$sudo chmod 750 /var/lib/guacd
Je vais plus loin en définissant le home du compte de service dans /var/lib/guacd. Il convient également de définir les bonnes permissions sur le répertoire home.
Comme dit plus haut, nous allons installer notre daemon guacamole sous /opt, donc nous devons créer le répertoire adéquat.
$ sudo mkdir /opt/guacamole
$ cd /opt/guacamole

Nous sommes maintenant parés pour l’installation.
Dépendances
Le daemon Guacamole (que nous appellerons guacd) nécessite des dépendances dont certaines se trouvent dans le répo en développement. Il faut ajouter ou plutôt autoriser les packages en développement CRB2. En règle générale, si nous sommes amenés à réaliser des compilations, il est préférable d’activer le repository.
$ sudo crb enable

Le repository est bien présent. Il nous faut maintenant installer les dépendances en cours de développement (le fameux *-devel dans les noms des paquets). Il est possible selon les distributions que les noms changent.
$ sudo dnf install cairo-devel libjpeg-turbo-devel libpng-devel libtool libuuid-devel

Niveau dépendance pour la compilation nous sommes au poil. Reste toutefois les dépendances propres à Guacamole pour se connecter aux ressources ainsi que pour l’usage de certaines fonctionnalités. Pour ce faire, il va falloir ajouter un repo pour les packages vidéo (mpeg), rdp, ssh etc.
$ sudo dnf install --nogpgcheck https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %rhel).noarch.rpm https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-$(rpm -E %rhel).noarch.rpm

Nous ne sommes pas obligés d’installer toutes les fonctionnalités présentes dans Guacamole. Pour ma part je ne souhaite utiliser Guacamole que pour établir des connexions RDP3 et SSH4. J’ai également besoin des dépendances pour enregistrer les flux vidéo. Je n’ai nullement besoin de VNC5, les websockets pour Kubernetes ou de telnet.
$ sudo dnf install ffmpeg-devel freerdp-devel pango-devel libssh2-devel openssl-devel libwebp-devel

Et voilà, c’est tout. Nous avons déjà passé pas mal de temps ensemble déjà non ? Et bien il faut savoir que nous n’avons pas encore réellement commencé à jouer avec Guacamole. Nous avons juste tourné autour.
Là s’arrêtent les dépendances, Ici commence Guacamole !
Installation
L’installation se passe par le téléchargement du package guacamole-server-1.6.0.tar.gz dans sa dernière version.
Le plus gros du chemin a été fait. Notre daemon Guacamole est fonctionnel et opérationnel.
Guacamole – Client
Là encore une fois, j’ai voulu faire bien et je me suis tellement compliqué la vie que j’ai décidé d’abandonner.
Donc tu nous lâches à la moitié du chemin ? Tu aurais pu nous informer avant non tu crois pas ? Espèce d’enf**ré !
Je comprends que dit comme ça, cela peut porter à confusion. En réalité, je vais mettre deux méthodes pour utiliser Guacamole. L’une via la compilation du client (qui m’a frustré) et le téléchargement de l’application directement. Comme ça libre à vous de reprendre mes travaux là où je les ai stoppés.
Installation
J’ai dans un premier temps voulu compiler mon client Guacamole comme j’ai compilé mon serveur Guacamole. Jusque-là, logique non ? Puis lors de la compilation ça fail sur une librairie java… Je me farcis donc les logs de compilation et me rend compte que cela est dû à la génération de la javadoc… Après investigation, il est possible de bypass cette erreur en excluant la partie documentation.
J’ai lâché l’affaire à ce moment-là. Frustré. J’aurais pu persévérer mais voyez-vous, je sais que le mieux est l’ennemi du bien. Donc, pour ne pas tomber dans le piège du perfectionniste qui aura un paquet fonctionnel mais possiblement avec des dysfonctionnements à moyen ou longs termes, j’ai décidé de changer mon fusil d’épaule et d’appeler Zorro.
J’ai donc pris la dure décision de télécharger directement l’application au point .war depuis le site officiel.
$ sudo curl -L --output-dir /tmp -O https://apache.org/dyn/closer.lua/guacamole/1.6.0/binary/guacamole-1.6.0.war?action=download
$ sha256sum /guacamole/guacamole-1.6.0.war

Une fois télécharger, il convient alors de déplacer le fichier directement dans le répertoire webapps de tomcat. Vous noterez que j’ai renommé le guacamole-1.6.0.war en guacamole.war. Cela aura son importance dans notre URL d’accès. Il est nécessaire de définir la propriété a l’utilisateur de service tomcat sur notre application. Sinon elle ne pourra pas être lancé par Tomcat.
$ cp /tmp/guacamole-1.6.0.war /opt/tomcat/webapps/guacamole.war
$ chown tomcat:tomcat /opt/tomcat/webapps/guacamole.war
Et maintenant c’est terminée pour Guacamole. Le reste sera que de la configuration…
Configuration
Il va falloir être rigoureux car la configuration à la moindre erreur peut devenir aussi punitive qu’un mauvais pattern dans un fromsoftware… Oui je suis de ce genre de type à prendre du plaisir sur les Souls Like, à la limite du masochisme… 🙂
Le commencement sera donc de créer le répertoire de notre service guacamole. Ce répertoire contiendra le fichier de configuration ainsi que le répertoire propre aux extensions ainsi que le répertoire pour les bibliothèques.
$ sudo mkdir /etc/guacamole
$ sudo mkdir /etc/guacamole/{extensions,lib}
| C’est maintenant l’heure de se servir une cerveza bien fraiche avec quelques nachos et de taper dans notre Guacamole pour voir quel gout il a ! | ![]() |
Test
Il ne faut pas oublier de passer sur notre UTM12 en amont pour autoriser dans un premier temps notre rebond à communiquer avec notre VM13 Guacamole sur le port 8080/tcp.
Dans notre navigateur web, rendons-nous à l’URL http://ip-srv:8080/guacamole. Si tout va bien, nous devrions voir s’afficher la page d’authentification de notre serveur Guacamole.
Authentifions nous avec le login et mot de passe par défaut guacadmin/guacadmin.
Il ne nous reste alors qu’à créer un nouvel super administrateur et désactiver/supprimer le compte guacadmin par sécurité. Dans l’état, notre bastion est opérationnel. Il faut tout de même sécuriser et renforcer la sécurité de ce dernier.
Je ne pense pas utile de me poser sur la configuration de création et de connexion à une ressource. Je ferai cela dans une partie 4 dans une vidéo de démo.
Place à l’assaisonnement de notre serveur Guacamole, pardon à sa sécurisation 🙂
Sources
- BDD : Base De Données ↩︎
- CRB : CodeReady Builder ↩︎
- RDP : Remote Desktop Protocol ↩︎
- SSH : Secure SHell ↩︎
- VNC : Virtual Network Computing ↩︎
- URL : Uniform Resource Locator ↩︎
- SQL : Structured Query Language ↩︎
- JDBC : Java DataBase Connectivity ↩︎
- SGBD : Système de Gestion de Base de Données ↩︎
- MSSQL : Microsoft Server SQL ↩︎
- HTTPS : HyperText Transfer Protocol Secure ↩︎
- UTM : Unified Thread Management ↩︎
- VM : Virtual Machine ↩︎



















