Connexion
Abonnez-vous

Guacamole sur un plateau (3/5) : on écrase nos avocats (serveur et client)

Un tuto qui donne faim à force…

Guacamole sur un plateau (3/5) : on écrase nos avocats (serveur et client)

On continue notre dossier sur l’installation et la configuration de Guacamole. Après la mise en place de la machine virtuelle, de Tomcat et d’un certificat Let’s Encrypt, on installe Guacamole à proprement parler dans cette partie. Viendra ensuite la sécurisation de la base de données.

Le 13 décembre 2023 à 17h34

Notre dossier sur Guacamole :

Installation du serveur Guacamole

Hier, nous avons téléchargé les packages nécessaires dans un répertoire dédié. On passe maintenant à l’installation. Pour cela, on suit la documentation officielle (Installing Guacamole natively — Apache Guacamole Manual v1.5.3).

root@r:/guacd# tar -xf guacamole-server-1.5.3.tar.gz
root@r:/guacd# cd guacamole-server-1.5.3/
root@r:/guacd/guacamole-server-1.5.3# autoreconf –fi
root@r:/guacd/guacamole-server-1.5.3# ./configure --with-init-dir=/etc/init.d

En sortie, on obtient un premier récapitulatif :

------------------------------------------------
guacamole-server version 1.5.3
------------------------------------------------
Library status:
freerdp2 ............ yes
pango ............... yes
libavcodec .......... yes
libavformat.......... yes
libavutil ........... yes
libssh2 ............. yes
libssl .............. yes
libswscale .......... yes
libtelnet ........... no
libVNCServer ........ yes
libvorbis ........... yes
libpulse ............ no
libwebsockets ....... no
libwebp ............. yes
wsock32 ............. no

Protocol support:
Kubernetes .... no
RDP ........... yes
SSH ........... yes
Telnet ........ no
VNC ........... yes

Services / tools:
guacd ...... yes
guacenc .... yes
guaclog .... yes

FreeRDP plugins: /usr/lib/x86_64-linux-gnu/freerdp2
Init scripts: /etc/init.d
Systemd units: no
Type "make" to compile guacamole-server.

Suivons les recommandations, faisons nos make et make install finaux et configurons notre guacd.

root@r:/guacd/guacamole-server-1.5.3# make
...
root@r:/guacd/guacamole-server-1.5.3# make install
...
root@r:/guacd/guacamole-server-1.5.3# ldconfig (ne l’oubliez pas celui-là, pour recharger ce qui a été compilé à l’instant)

L’installation se termine avec le démarrage du service guacd qui doit tourner en tâche de fond.

root@r:/guacd/guacamole-server-1.5.3# systemctl unmask guacd
Removed /etc/systemd/system/guacd.service.
root@r:/guacd/guacamole-server-1.5.3# systemctl enable guacd
guacd.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable guacd
root@r:/guacd/guacamole-server-1.5.3# systemctl start guacd

Installation de l’application web (client)

root@r:/guacd# wget https://downloads.apache.org/guacamole/1.5.3/binary/guacamole-1.5.3.war.asc
root@r:/guacd# wget https://downloads.apache.org/guacamole/1.5.3/binary/guacamole-1.5.3.war
root@r:/guacd# gpg -v guacamole-1.5.3.war.asc
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
gpg: assuming signed data in 'guacamole-1.5.3.war'
gpg: Signature made Wed Jul 26 06:07:25 2023 UTC
gpg:                using RSA key F467E54ACC52F1D2778826865B2977AEE5E4518F
gpg: using pgp trust model
gpg: Good signature from "Michael Jumper (CODE SIGNING KEY) <[email protected]>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: F467 E54A CC52 F1D2 7788 2686 5B29 77AE E5E4 518F
gpg: binary signature, digest algorithm SHA256, key algorithm rsa4096
root@r:/guacd# cp guacamole-1.5.3.war /var/lib/tomcat9/webapps/

Continuons notre périple avec l’installation de la partie dite “client” qui est en fait l’application web (en Java vers HTML 5)

Créons un répertoire dédié à cet outil, qui servira au paramétrage, et lions-le à Tomcat.

root@r:# mkdir -p /etc/guacamole/{extensions,lib}
root@r:# ln -s /etc/guacamole /usr/share/tomcat9/.guacamole

Une base de type SQL

Nous ne sommes pas sortis de l’auberge pour autant. Il faut maintenant gérer la partie authentification. Pour cela, on va se servir d’une base de type SQL pour stocker les droits et les mots de passe de façon sécurisée (si, si). C’est un peu luxueux quand on est seul, mais cela s’avère indispensable quand on est dans une entreprise ou quand on partage cette petite infrastructure avec des amis.

root@r:# install mariadb-server

Lancez impérativement la commande suivante : c’est un minimum pour protéger votre serveur et votre base de données !

root@r:# mysql_secure_installation

Mettez un mot de passe à l’utilisateur root, mais ne passez pas obligatoirement sur l’authentification unix_socket. Pour le reste, laissez tout à oui (yes) : enlevez les utilisateurs anonymes, désactivez l’accès root à distance, supprimez la base de test, et rechargez les droits.

Il faut ensuite, de façon habituelle, créer une base et un utilisateur dédiés, puis lancer les scripts fournis par Guacamole pour la création des données par défaut. Si vous êtes connectés en root, tapez directement :

root@r:# mysql

Ensuite, créez la base et l’utilisateur voulu :

CREATE DATABASE guacd;
USE guacd;
CREATE USER 'guacd_user'@'localhost' IDENTIFIED BY 'un_bon_mot_de_passe';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacd.* TO ' guacd_user '@'localhost';
FLUSH PRIVILEGES;
EXIT;

Pour pouvoir créer les données de base, il faut aller chercher le connecteur d’authentification fourni par Guacamole, en retournant dans votre répertoire d’installation. Le .jar doit être copié dans le répertoire d’extensions Guacamole, les scripts doivent être déroulés sur la base SQL que vous avez créée.

root@r:/guacd# wget https://downloads.apache.org/guacamole/1.5.3/binary/guacamole-auth-jdbc-1.5.3.tar.gz.asc
root@r:/guacd# wget downloads.apache.org/guacamole/1.5.3/binary/guacamole-auth-jdbc-1.5.3.tar.gz
root@r:/guacd# gpg -v guacamole-auth-jdbc-1.5.3.tar.gz.asc
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
gpg: assuming signed data in 'guacamole-auth-jdbc-1.5.3.tar.gz'
gpg: Signature made Wed Jul 26 06:07:24 2023 UTC
gpg:                using RSA key F467E54ACC52F1D2778826865B2977AEE5E4518F
gpg: using pgp trust model
gpg: Good signature from "Michael Jumper (CODE SIGNING KEY) <[email protected]>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: F467 E54A CC52 F1D2 7788 2686 5B29 77AE E5E4 518F
gpg: binary signature, digest algorithm SHA256, key algorithm rsa4096
root@r:/guacd# tar -xf guacamole-auth-jdbc-1.5.3.tar.gz
root@r:/guacd# cd guacamole-auth-jdbc-1.5.3/mysql
root@r:/guacd/guacamole-auth-jdbc-1.5.3/mysql# cp guacamole-auth-jdbc-mysql-1.5.3.jar /etc/guacamole/extensions/
root@r:/guacd/guacamole-auth-jdbc-1.5.3/mysql# cd schema/
root@r:/guacd/guacamole-auth-jdbc-1.5.3/mysql/schema# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 43
Server version: 10.6.12-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04
 
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
MariaDB [(none)]> use guacd;
MariaDB [guacd]> source 001-create-schema.sql;
MariaDB [guacd]> source 002-create-admin-user.sql;

Il faut aussi faire en sorte que MariaDB communique avec notre serveur Guacamole sur Tomcat. Vous trouverez sur le site MariaDB les informations pour connaître la version du connecteur à installer. Pour la version 11 de Java, il faut la version 3.0 du connecteur. Vous les trouverez ici : MariaDB Products & Tools Downloads | MariaDB

rroot@r:/guacd# cd /etc/guacamole/lib
root@r:/etc/guacamole/lib# wget https://dlm.mariadb.com/3677179/Connectors/java/connector-java-3.3.1/mariadb-java-client-3.3.1.jar (pour les Java récents)
root@r:/etc/guacamole/lib# wget https://dlm.mariadb.com/3478926/Connectors/java/connector-java-2.7.11/mariadb-java-client-2.7.11.jar (pour notre Java)

La version 3.3.1 est la plus récente (début décembre 2023), mais sur notre buntu, ce driver ne fonctionnait pas, car cela dépend de la version de Java qui est installée. Nous avons dû rétrograder au 2.7.11.

Paramétrons maintenant Guacamole, en créant un fichier guacd.conf et un autre guacamole.properties. Voici des exemples de configuration.

root@r:/etc/guacamole# cat guacd.conf
[daemon]
pid_file =/var/run/guacd.pid
#log_level = debug
[server]
#bind_host = localhost
bind_host = 127.0.0.1
bind_port = 4822
#[ssl]
#server_certificate =/etc/ssl/certs/guacd.crt
#server_key =/etc/ssl/private/guacd.key
root@r: cat guacamole.properties
...

Et pour éviter que le mot de passe pour accéder à la base MariaDB ne soit visible de n’importe qui :

root@r: chown –R tomcat:adm /etc/guacamole/*
root@r: chmod 600 /etc/guacamole/guacamole.properties

Demain, on se donne rendez-vous pour la sécurisation de la base de données.

Commentaires (6)

Vous devez être abonné pour pouvoir commenter.

Abonnez-vous
votre avatar
Bonsoir, est-il prévu d’avoir une colorations syntaxique et une mise en forme dédiée aux blocs de code et snippets ? En l’état cela fait très brut et rend la lecture moins agréable et les lignes de commande plus compliquées à appréhender.
Pour revenir sur l’article, je perçois l’intérêt d’un guacamole mais personnellement je n’en ressens pas le besoin, préférant utiliser soit une app dédiée sur mon mobile et au travail j’ai Cygwin sur Windows qui fait le travail pour accéder à la sacro-sainte ligne de commande Unix et l’accès SSH non bridé.
En plus de cela, Wireguard me permet d’accéder directement ou indirectement en passant par un autre serveur aux machines qui n’auraient pas d’IP fixe dédiée.
votre avatar
On faisait pas beaucoup de tutos, jusqu'à présent, et la console pour les pigistes n'est pas encore opérationnelle, donc tout n'est pas encore au point ! Mais oui, sur du WordPress, on devrait pouvoir trouver qqch...
votre avatar
hello,
très tenté pour tester guacamole (dont j'ai déjà entendu parlé)
cependant j'ai déjà installé sur mes serveurs rustdesk (solution open source et gratuite ayant des clients windows/mac/linux) pour remplacer des solutions de type anydesk ou teamviewer. Guacamol va faire doublon ou cela est-il plus puissant flexible ?
Guacamol fait-il du wan ?
sinon rien à redire au tuto...parfait, archi compréhensible, tous les retours terminal y sont, c'est le bonheur !
Si j'avais accès aux smiley, j'aurais fait ma titia, et je t'aurais collé des coeurs :)
votre avatar
Très clair, mais par contre, je n’aime pas que toutes les commandes soient exécutées en root (par exemple, les wget et autres tar ne devraient pas l’être), et que les droits d’accès ne soient pas gérés correctement (dans l’article précédent, le chmod -R 755 /etc/letsencrypt n’est pas une bonne idée par exemple, clairement pas à faire pour de la prod).

Mais ça a le mérite d’être là, et effectivement, très facile à suivre 👍
votre avatar
C'est écrit au tout début de la 1ère partie de l'article : "Sécurisez aussi l’accès du compte root (avec toutes les variantes possibles : authentification par certificat uniquement, second facteur, interdiction de la connexion root et utilisation de sudo, etc.) mais on risque de déborder largement du sujet." L'article est déjà long, l'idée était surtout de montrer la globalité de la construction.

Après, comme toujours, il est possible (et même encouragé) de proposer des discussions et des améliorations dans les commentaires ! Ici, on partage la connaissance !
votre avatar
effectivement, mais quand on s'attaque à guacamol, je pense qu'on à déjà un passif avec l'installation de serveur et qu'on sait un chouillat sécuriser le bidule...pas de compte root depuis ssh et pas de sudo pour le compte de connection

Guacamole sur un plateau (3/5) : on écrase nos avocats (serveur et client)

  • Installation du serveur Guacamole

  • Installation de l’application web (client)

  • Une base de type SQL

Fermer