Guacamole sur un plateau (3/5) : on écrase nos avocats (serveur et client)
Un tuto qui donne faim à force…
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
7 min
Internet
Internet
Notre dossier sur Guacamole :
- Guacamole sur un plateau (1/5) : on monte un bastion sécurisé
- Guacamole sur un plateau (2/5) : Apache Tomcat et Let’s Encrypt
- Guacamole sur un plateau (3/5) : on écrase nos avocats
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.
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
Commentaires (6)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 13/12/2023 à 22h34
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.
Le 14/12/2023 à 09h37
Modifié le 13/12/2023 à 23h03
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 :)
Le 14/12/2023 à 07h54
Mais ça a le mérite d’être là, et effectivement, très facile à suivre 👍
Le 14/12/2023 à 09h49
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 !
Modifié le 17/12/2023 à 15h22