
Compétences évaluées
Contexte
Introduction :
L'évolution rapide des technologies a conduit les entreprises à adopter des solutions permettant un accès à distance sécurisé à leurs systèmes informatiques. Dans ce contexte, le projet vise à mettre en place Apache Guacamole, une plateforme open source offrant un accès distant sécurisé via un navigateur web. Cette solution polyvalente prend en charge plusieurs protocoles, notamment RDP, SSH et VNC, facilitant ainsi la gestion centralisée des connexions à distance.
Les avantages de la solution :
- Polyvalence des Protocoles : Apache Guacamole prend en charge une variété de protocoles, y compris RDP (Remote Desktop Protocol), SSH (Secure Shell), et VNC (Virtual Network Computing). Cette polyvalence permet de se connecter à différents types de systèmes et de périphériques, offrant ainsi une flexibilité d'utilisation.
- Accès via un Navigateur Web : L'un des avantages majeurs de Guacamole est la possibilité d'accéder aux systèmes à distance directement depuis un navigateur web. Cela élimine le besoin d'installer des clients spécifiques sur les appareils des utilisateurs, simplifiant ainsi la gestion et l'utilisation de la solution.
- Centralisation de la Gestion : Guacamole offre une interface centralisée pour gérer les connexions à distance. Les administrateurs peuvent configurer, surveiller et gérer l'accès à distance à partir d'une seule console, simplifiant ainsi la gestion des utilisateurs et des accès.
- Open Source : Apache Guacamole est une solution open source, ce qui signifie que son code source est librement accessible et modifiable. Cela offre une flexibilité importante pour personnaliser la solution selon les besoins spécifiques de l'entreprise.
- Sécurité Avancée : La sécurité des connexions à distance est une priorité pour Guacamole. Il prend en charge des fonctionnalités telles que l'authentification à deux facteurs, le chiffrement des données, et la possibilité de configurer des politiques de sécurité strictes pour renforcer la protection des accès.
- Communauté Active : Guacamole bénéficie d'une communauté active d'utilisateurs et de contributeurs. Cela signifie qu'il existe une documentation abondante, des forums de support, et des mises à jour régulières qui assurent le développement continu de la solution.
- Évolutivité : Que ce soit pour une petite entreprise ou une grande organisation, Guacamole est conçu pour être scalable. Il peut s'adapter à l'évolution des besoins en termes de nombre d'utilisateurs et de connexions à distance.
Procédure d'installation
Pour commencer, connectez vous au serveur Debian puis installer les dépendances d’Apache Guacamole :
sudo apt-get update
sudo apt-get install build-essential libcairo2-dev libjpeg62-turbo-dev libpng-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
Installation d'Apache Guacamole Server
Se déplacer vers le répertoire /tmp puis télécharger l’archive :
cd /tmp
wget https://downloads.apache.org/guacamole/1.5.3/source/guacamole-server-1.5.3.tar.gz
Ensuite, décompressé l’archive puis aller dans le répertoire obtenu :
tar -xzf guacamole-server-1.5.3.tar.gz
cd guacamole-server-1.5.3/
Puis compilé le code a l’aide de la commande :
sudo make
Enfin installer le composant Guacamole Server :
sudo make install
Il est nécessaire de mettre à jour les lien entre guacamole-server et les libraries via cette commande :
sudo ldconfig
Puis démarrer le service Guacamole appelé “guacd” et activer le démarrage automatique de celui-ci :
sudo systemctl daemon-reload
sudo systemctl start guacd
sudo systemctl enable guacd
Il est alors nécessaire de vérifier si le service “guacd” est bien en état de running :
sudo systemctl status guacd
Il est maintenant nécessaire de créer le répertoire “/etc/guacamole” et les sous répertoires “extensions” et “lib” qui permet de stocker les données dans une base de donnée.
sudo mkdir -p /etc/guacamole/{extensions,lib}
Installation de Guacamole Client
Pour la partie Web app de Guacamole il est nécessaire d’installer Tomcat9 via cette commande :
sudo apt-get install tomcat9 tomcat9-admin tomcat9-common tomcat9-user
Ensuite, télécharger la dernière version de la web app d’Apache Guacamole dans le répertoire “/tmp”
cd /tmp
wget https://downloads.apache.org/guacamole/1.5.3/binary/guacamole-1.5.3.war
Puis déplacer le fichier téléchargé dans la libraries de Web App de Tomcat9 :
sudo mv guacamole-1.5.3.war /var/lib/tomcat9/webapps/guacamole.war
Et relancer les services Tomcat9 et Guacamole Server :
sudo systemctl restart tomcat9 guacd
Installation de la base de données MariaDB
L’ensemble des informations de l’application Apache Guacamole doivent être stockés dans une base de donnée. Il est donc nécessaire de déployer MariaDB Server sur le serveur Debian. Installer MariaDB Server :
sudo apt-get install mariadb-server
Ensuite exécuter le script "mariadb-secure-installation" afin de sécuriser l’installation de MariaDB :
sudo mariadb-secure-installation
Pour résumé, vous aller pouvoir définir un nouveau mot de passe pour le compte “root” de MariaDB, empêcher les donnexions distantes sur l’instances depuis le compte “root”, empêcher les connexions anonymes et supprimer la base de test :
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n] n
... skipping.
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] Y
New password: **************
Re-enter new password: **************
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Une fois le script exécuter, on vas se connecter en tant que root à l’instance MariaDB :
mysql -u root -p
Puis exécuter les commandes suivante pour créer une base de donnée et une utilisateur dédié pour Apache Guacamole. Les commandes permettent de créer la base de donnée “guacadb”, avec l’utilisateur “guaca_nachos” associé au mot de passe “P@ssword!” Il est impératif d’adapter ces valeurs !!
CREATE DATABASE guacadb;
CREATE USER 'guaca_nachos'@'localhost' IDENTIFIED BY 'P@ssword!';
GRANT SELECT,INSERT,UPDATE,DELETE ON guacadb.* TO 'guaca_nachos'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Ensuite, ajouter l’extension MySQL à Apache Guacamole en la téléchargeant dans le répertoire “/tmp” :
cd /tmp
wget https://downloads.apache.org/guacamole/1.5.3/binary/guacamole-auth-jdbc-1.5.3.tar.gz
Décompresser l’archive téléchargée :
tar -xzf guacamole-auth-jdbc-1.5.3.tar.gz
Et déplacer le fichier “.jar” de l’extension dans le répertoire “/etc/guacamole/extensions/”
sudo mv guacamole-auth-jdbc-1.5.3/mysql/guacamole-auth-jdbc-mysql-1.5.3.jar /etc/guacamole/extensions/
Maintenant, télécharger le connecteur MySQL dans le répertoire “/tmp” :
cd /tmp
wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j-8.1.0.tar.gz
Puis décompressé l’archive :
tar -xzf mysql-connector-j-8.1.0.tar.gz
Et copier les fichiers “.jar” vers le répertoire “lib” d’Apache Guacamole
sudo cp mysql-connector-j-8.1.0/mysql-connector-j-8.1.0.jar /etc/guacamole/lib/
Il faut maintenant importer la structure de la base de donnée Apache Guacamole dans la base de donnée “guacadb” que l’on a créer précédemment via ces commandes (le mot de passe root de MariaDB devra être saisit) :
cd guacamole-auth-jdbc-1.5.2/mysql/schema/
cat *.sql | mysql -u root -p guacadb
Ensuite on vas créer et éditer le fichier “guacamole.properties” pour déclarer la connexion à MariaDB :
sudo nano /etc/guacamole/guacamole.properties
Puis insérer les lignes ci-dessous dans le fichier nouvellement créé (veillez a adapter les valeurs) :
# MySQL
mysql-hostname: 127.0.0.1
mysql-port: 3306
mysql-database: guacadb
mysql-username: guaca_nachos
mysql-password: P@ssword!
Enregistrer le fichier Editer également les fichier “guacd.conf” pour déclarer le serveur Guacamole :
sudo nano /etc/guacamole/guacd.conf
Et ajouter ce code :
[server]
bind_host = 0.0.0.0
bind_port = 4822
Pour finir, redémarrer les trois services liés à Apache Guacamole :
sudo systemctl restart tomcat9 guacd mariadb
Configuration via l'interface web
Rendez vous sur un navigateur et allez à l'adresse suivante : http://adresse-ip-serveur:8080/guacamole/

Les identifiants du compte administrateur par défaut sont :
- Utilisateur : guacadmin
- Mot de passe : guacadmin
Créer un nouvel utilisateur
Maintenant que vous avez accès à l'interface Web, il est nécessaire de créer un nouvel utilisateur administrateur et de supprimer celui par défaut pour des raisons de sécurité. Pour commencer, cliquez sur votre nom en haut à droite [1] puis sur "Paramètres" [2]

Ensuite cliquez sur l'onglet "Utilisateurs" [1] puis sur le bouton "Nouvelle Utilisateur" [2]

Saisir l’identifiant du compte et le mot de passe (x2) et cliquer sur "Enregistrer".

Afin de donner des permissions à un utilisateur, vous pouvez cocher les case en fonction des droits qu'il doit posséder :

Vous savez maintenant ajouter de nouveaux utilisateurs !
Ajouter une nouvelle connexion
Pour ajouter une nouvelle connexion vous pouvez suivre ces étapes :
Cliquez sur votre nom en haut à droite [1] puis sur "Paramètres" [2]

Ensuite cliquez sur l'onglet "Connexions" [1] puis sur le bouton "Nouvelle connexion" [2]

Vous pouvez maintenant renseigner les informations du serveur.
Pour commencer, nomé le serveur [1], renseigner le dossier dans lequel vous souhaitez enregistrer la connexion [2] puis choisissez le protocole que vous souhaitez utiliser pour vous connecter à celui-ci [3]

Ensuite, renseigner l'ensemble de paramètres importants :
- Nom d'hôte : l'adresse IP du serveur ou son nom DNS
- Port : si vous utilisez le protocole RDP spécifier le numéro de port 3389, pour une connexion en SSH spécifier le numéro de port 22
- Identifiant : compte avec lequel s'authentifier sur le serveur
- Mot de passe : mot de passe du compte renseigner dans la partie identifiant
- Nom de domaine : nom du domaine Active Directory, si besoin
- Ignorer le certificat du serveur : cochez cette option si vous n'avez pas déployé de certificat pour vos connexions RDP

Vous pouvez maintenant enregistrer votre connexion. Afin de tester cette connexion, il faut basculer sur "Accueil" en cliquant sur son identifiant en haut à droite.