Mise en place d’un serveur Bastion avec Apache GUACAMOLE

Installation du serveur Guacamole

 

Installer Apache Guacamole sur Debian

Installer les prérequis d’Apache Guacamole

Tout d’abord, nous devons installer un ensemble de paquets indispensables au bon fonctionnement d’Apache Guacamole. Certains paquets sont spécifiques à certaines fonctionnalités, comme les connexions RDP par exemple. Cette liste de dépendance est consultable dans la documentation.

Pour connaître les dépendances nécessaires, voir la documentation officielle d’apache guacamole.

Mise à jour de tous les dépôts

pour partir su de bonnes bases, on mettra à jour la machine Debian

apt update -y && apt upgrade -y
Installation des outils de compilation

Pour pouvoir compiler les sources de guacamole, nous allons avoir besoin de divers logiciels

apt install build-essential git curl wget gcc make -y
Installation des dépendances

Afin d’avoir tous les prérequis à l’installation de guacamole nous allons installer quelques paquets qui permettront la prise en charge des différents protocoles de contrôle à distance

apt install libcairo2-dev libjpeg62-turbo-dev libjpeg62-dev libpng-dev libpng12-dev libtool-bin \
uuid-dev libossp-uuid-dev libavcodec-dev libavformat-dev libavutil-dev libswscale-dev freerdp2-dev libpango1.0-dev \
libssh2-1-dev libtelnet-dev libvncserver-dev libwebsockets-dev libpulse-dev libssl-dev libvorbis-dev libwebp-dev -y

Installation du serveur Guacamole

Téléchargement et installation des sources

Guacamole s’installera en plusieurs parties, la partie client et la partie serveur, on va commencer par la partie serveur de guacamole, pour cela il faudra récupérer les sources sur le site officiel d’apache guacamole avec la commande suivante 

cd /tmp/ ; wget https://apache.org/dyn/closer.lua/guacamole/1.5.5/source/guacamole-server-1.5.5.tar.gz?action=download \
mv guacamole-server-1.5.5.tar.gz\?action\=download guacamole-server-1.5.5.tar.gz

Après avoir téléchargé les sources dans le dossier /tmp ; on peut les extraire de l’archive téléchargée

tar -xvzf guacamole-server-1.5.5.tar.gz ; cd guacamole-server-1.5.5
Configuration des dépendances téléchargées

Dans cette première étape, les sources de guacamole ont été téléchargées, et la commande ./configure va nous permettre de faire un check-up complet des dépendances installées et de générer les Makefiles

./configure --with-init-dir=/etc/init.d
Compilation des sources du serveur

Une fois les chemin d’installation et de configuration crées dans l’étape précédente, on peut lancer la compilation du guacamole-server

make
Installation

Enfin, après avoir compilé le logiciel, on peut maintenant lancer l’installation via la commande suivante

make install

Puis on fera une dernière vérification pour mettre à jour le cache des bibliothèques installées sur le système

ldconfig

Installation du serveur Tomcat

pour pouvoir faire fonctionner l’interface web, nous aurons besoin d’un serveur web applicatif, Guacamole fonctionne avec Tomcat. Nous allons donc installer Tomcat 9; mais comme nous somme sur la version 12 de Debian (Bookworm) nous devrons installer tomcat9 depuis les sources de la version précédente de Debian.

Installation de java

Pour faire fonctionner tomcat9, il faudra installer java, avant de créer le service tomcat9 dans le dossier init.d

apt install default-jdk -y

Téléchargement et installation des sources

Commençons par ajouter les dépôts de Debian Bullseye pour tomcat9

echo "deb http://deb.debian.org/debian/ bullseye main" > /etc/apt/sources.list.d/bullseye.list 

Ensuite nous allons faire la mise à jour des dépôts et installer le serveur web TOMCAT9

apt update -y ;
apt install tomcat9 tomcat9-admin tomcat9-common tomcat9-user -y

Activation du service tomcat9

systemctl daemon-reload ;
systemctl start tomcat9 ;
systemctl enable tomcat9 ;
systemctl status tomcat9

Installation du client Guacamole

Téléchargement et installation des sources

Normalement, vous n’avez pas besoin de créer guacamole-client, car il est écrit en Java et est multiplateforme. Vous pouvez facilement obtenir la dernière version de guacamole-client à partir des archives de versions du site Web du projet Guacamole, y compris toutes les extensions prises en charge, sans avoir à le créer vous-même.
Si vous ne souhaitez pas créer guacamole-client à partir des sources, téléchargez simplement guacamole.war à partir du site Web du projet, ainsi que les extensions souhaitées, et passez directement à Déploiement de Guacamole.

Commençons par télécharger les sources pour le client

cd /tmp ; wget https://apache.org/dyn/closer.lua/guacamole/1.5.5/source/guacamole-client-1.5.5.tar.gz?action=download ;
mv guacamole-client-1.5.5.tar.gz?action=download guacamole-client-1.5.5.tar.gz

On peut maintenant décompresser l’archive téléchargée depuis le site officiel d’apache guacamole 

tar -xzf guacamole-client-1.5.5.tar.gz ; cd guacamole-client-1.5.5
Compilation des sources java

pour compiler les sources logicielles de guacamole-client , nous aurons besoin de l’outil maven qu’il faudra installer avec la commande suivante 

apt install maven -y

 Ensuite pour éviter un maximum d’erreurs de compilation avec java, on va définir sa HOME directory JAVA_HOME, pour ça on fera d’abord la commande suivante

update-alternatives --config java

Il faudra sélectionner l’option automatique; puis on ajoute la variable d’environnement JAVA_HOME 

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64

Ensuite il suffira de lancer la compilation depuis le dossier guacamole-client

cd /tmp/guacamole-client-1.5.5 ; \
mvn package

Pour créer guacamole-client, exécutez simplement « mvn package ». Cela invoquera Maven pour créer et empaqueter automatiquement tous les composants, produisant un seul fichier .war, qui contient l’intégralité de l’application Web

En cas d’erreurs de compilation

Dans le cas ou la compilation présente des erreurs et ne génère pas le fichier, il faudra télécharger la webapp directement sur le site officiel d’apache guacamole pour le lier symboliquement à TOMCAT9

wget https://apache.org/dyn/closer.lua/guacamole/1.5.5/binary/guacamole-1.5.5.war?action=download ;
mkdir /etc/guacamole;
mv guacamole-1.5.5.war?action=download guacamole-1.5.5.war;
mv guacamole-1.5.5.war /etc/guacamole/

Création des liens symboliques pour le serveur TOMCAT9

ln -s /etc/guacamole/guacamole-1.5.5.war /var/lib/tomcat9/webapps/

Une fois ceci fait, on peut actualiser le tout en relançant les services guacd et tomcat9

systemctl restart tomcat9 guacd
Création des répertoires d’extensions de guacamole

Pour pouvoir greffer des extensions comme l’extension MFA, l’extension SQL, ou encore SSO, on va créer des répertoires pour aller chercher ces données

mkdir -p /etc/guacamole/{extensions,lib}
Installation de la base de données MySQL pour Guacamole

Pour stocker les données de guacamole, nous aurons besoin d’une base de données, que nous installerons avec le paquet mariadb-server

apt install -y mariadb-server

Puis on va sécuriser l’accès à la base de données

mysql_secure_installation

On peut maintenant se connecter sur la base de données

mysql -u root -p

Puis un peut créer la base de données

CREATE DATABASE guacadb;
CREATE USER 'guacadmin'@'localhost' IDENTIFIED BY 'P@ssword!';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacadb.* TO 'guacadmin'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Ajout de l’extension MySQL pour guacamole

Maintenant que la base de données de guacamole est crée et opérationnelle, nous devons ajouter l’extension MySQL à guacamole pour qu’il soit capable d’interpréter le langage SQL

Téléchargement des sources

Pour récupérer les extensions nécessaires à guacamole il faudra se rendre sur le site officiel d’apache guacamole et télécharger l’extension guacamole-auth-jdbc-1.5.5 

cd /tmp ; \
wget https://apache.org/dyn/closer.lua/guacamole/1.5.5/binary/guacamole-auth-jdbc-1.5.5.tar.gz?action=download ; \
mv guacamole-auth-jdbc-1.5.5.tar.gz?action=download guacamole-auth-jdbc-1.5.5.tar.gz

On peut maintenant décompresser l’archive puis la déplacer dans e répertoire de guacamole

tar -xvzf guacamole-auth-jdbc-1.5.5.tar.gz

Puis on va déplacer ces extensions dans le répertoire dédié aux extensions de guacamole

mv guacamole-auth-jdbc-1.5.5/mysql/guacamole-auth-jdbc-mysql-1.5.5.jar /etc/guacamole/extensions/
Ajout du connecteur MySQL

Pour permettre à l’extension de guacamole guacamole-auth-jdbc-1.5.5 de communiquer correctement avec MySQL on va aller chercher le connecteur MySQL pour java sur le site officiel de MySQL en sélectionnant l’option Platform independent

MySQL connector Platform independant.png

Cliquer sur download

Download MySQL connector.png

puis on va copier le lien de téléchargement pour le télécharger dans /etc/guacamole/lib 

cd /etc/guacamole/lib ; \
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-8.4.0.tar.gz

Puis extraire l’archive

tar -xvzf mysql-connector-j-8.4.0.tar.gz ; \
rm -rf mysql-connector-j-8.4.0.tar.gz
Import de la base de données dans MySQL

pour remplir notre base de données qui est vierge pour le moment on va se rendre dans le dossier de l’extension guacamole qui a été téléchargé dans /tmp ; soit /tmp/guacamole-auth-jdbc-1.5.5/mysql/schema ; puis on va importer les tables avec la commande suivante 

cat *.sql | mysql -u root -p guacadb
Déclarer la connexion BDD dans un fichier de configuration

On va créer le fichier de configuration avec vi /etc/guacamole/guacamole.properties qui va nous permettre de déclarer la connexion à notre base de données

# MySQL
mysql-hostname: 127.0.0.1
mysql-port: 3306
mysql-database: guacadb
mysql-username: guacadmin
mysql-password: P@ssword!
Créer le fichier de configuration du service guacd

On devra créer le fichier de configuration du serveur guacd avec vi /etc/guacamole/guacd.conf pour donner les instructions de connexion (port)

[server]
bind_host = 0.0.0.0
bind_port = 4822

Redémarrage de l’ensemble des services

Pour finir de bien appliquer la configuration on va relancer tous les services installés précédemment

systemctl restart tomcat9 guacd mariadb

Accès à l’interface Web de guacamole 

Pour accéder à l’interface web de guacamole, on rentrera http://IP_DU_SERVEUR:8080/guacamole dans le navigateur internet

image-1718715207391.png

 


Révision #9

Créé 1 juin 2024 10:29:52 par Joris LOUPIAS

Mis à jour 18 juin 2024 12:54:12 par Joris LOUPIAS

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut