Guacamole, contrôler vos équipements en SSH ou RDP via une interface Web
Guacamole a déjà fait l'objet d'une présentation, mais on revient dessus pour essayer d'aller plus loin dans son utilisation et vous montrer comment mettre en place l'authentification à deux facteurs avec un code TOTP, ainsi que la configuration d'accès en SSH ou RDP.
On va en profiter pour changer d'image Docker, celle utilisée jusqu'alors n'étant plus maintenue par son développeur, oznu. Attention, celle-ci reste fonctionnelle, mais ne bénéficie pas des améliorations ou correctifs de sécurité ou de bugs qu'il pourrait y avoir ! Cela nous permet également de basculer sur les images officielles, fournies par la fondation Apache.
Nous allons donc utiliser guacd en tant que passerelle serveur et guacamole pour l'interface web, ainsi que postgres en tant que base de données.
Commençons par créer les répertoires nécessaires au bon fonctionnement de la stack :
mkdir -p /docker/guacamole/{data,drive,init,record}
Il faut ensuite générer le script d'initialisation de la base de données avec la commande suivante :
docker run --rm guacamole/guacamole /opt/guacamole/bin/initdb.sh --postgres > /docker/guacamole/init/initdb.sql
Dans le cas de l'utilisation de Portainer, vous pouvez créer le fichier initdb.sql
dans /tmp
.
Créez le fichier docker-compose.yml
et collez-y le contenu suivant :
version: '2'
services:
guacd:
image: guacamole/guacd
container_name: guacd
volumes:
- /docker/guacamole/drive:/drive:rw
- /docker/guacamole/record:/record:rw
restart: unless-stopped
guacamole_db:
image: postgres:13.4
container_name: guacamole_db
environment:
PGDATA: /var/lib/postgresql/data/guacamole
POSTGRES_DB: guacamole_db
POSTGRES_PASSWORD: GUAC_DB_PASSWORD
POSTGRES_USER: guacdb_user
TZ: Europe/Paris
volumes:
- /docker/guacamole/init:/docker-entrypoint-initdb.d:ro
- /docker/guacamole/data:/var/lib/postgresql/data:rw
restart: unless-stopped
guacamole_app:
image: guacamole/guacamole
container_name: guacamole_app
environment:
GUACD_HOSTNAME: guacd
POSTGRES_DATABASE: guacamole_db
POSTGRES_HOSTNAME: guacamole_db
POSTGRES_PASSWORD: GUAC_DB_PASSWORD
POSTGRES_USER: guacdb_user
# TOTP_ENABLED: 'true'
depends_on:
- guacd
- guacamole_db
ports:
- 8080:8080
restart: unless-stopped
Lançons la stack avec la commande docker-compose up -d
.
L'interface que vous obtenez est très sobre.
Commencez par vous rendre dans les paramètres, avec le menu disponible en haut à droite en cliquant sur le nom d'utilisateur. Dans l'onglet Utilisateurs, créez un nouvel utilisateur et donnez lui les droits Administrateurs.
Une fois le nouvel utilisateur créé, déconnectez vous et reconnectez-vous avec ce dernier. Retournez dans les réglages et bloquez ou supprimez l'utilisateur par défaut guacadmin
.
Sécurité
Pour activer l'authentification à double facteur avec code TOTP et renforcer la sécurité de Guacamole, c'est très simple ! Décommentez la ligne TOTP_ENABLED: 'true'
dans la stack et mettez là à jour en la relançant avec la commande docker-compose up -d
.
Quand vous accéderez de nouveau à Guacamole et vous identifierez avec votre identifiant, il vous sera demandé de configurer l'authentification à double facteur. Scannez le QR Code avec votre application de gestion TOTP et renseignez le code donné pour valider.
A chaque connexion, vous devrez maintenant saisir le code fourni par l'application en plus de vos identifiant et mot de passe.
Passons maintenant à la configuration des connexions, le but de Guacamole ! Dans les paramètres, rendez-vous dans l'onglet Connexions, et cliquez sur le bouton "Nouvelle Connexion".
Donnez un nom à la connexion, et choisissez le protocole à utiliser (au choix parmi VNC, RDP, SSH, Telnet ou Kubernetes).
SSH
Le protocole SSH permet à un client (un utilisateur ou bien même une machine) d'ouvrir une session interactive sur une machine distante fin d'envoyer des commandes ou des fichiers de manière sécurisée.
Pour le configurer, choisissez SSH en tant que protocole et renseignez dans la partie Paramètres, Réseau, l'adresse IP ou nom d'hôte ainsi que le port pour le serveur que vous êtes en train de configurer (22 étant le port standard du protocole SSH), puis dans la partie Authentification, l'identifiant et son mot de passe (si vous n'enregistrez pas de mot de passe, il vous sera demandé systématiquement, pareil pour l'identifiant). Vous pouvez également personnaliser l'affichage (utile pour différencier vos différents environnements) ou encore exécuter une commande spécifique. Enfin, enregistrez cette connexion.
En complément, si vous cochez la case "Activer SFTP" dans la configuration de la connexion, vous aurez la possibilité de charger ou télécharger des fichiers avec votre hôte depuis votre navigateur.
RDP
Le protocole RDP est aussi appelé communément Bureau à Distance et permet de prendre le contrôle d'un système d'exploitation comme si on était installé devant. Développé par Microsoft, il est disponible sur toutes les versions de Windows mais peut également être installé sur macOS.
Sur Windows 10 ou 11, le Bureau à Distance est disponible uniquement sur les éditions "Professionnel". Pour l'activer, rendez-vous dans le Panneau de configuration et utilisez le champ de recherche pour trouver le paramètre.
Dans Guacamole, ajoutez une nouvelle connexion et choisissez cette fois le protocole RDP. Dans la partie Paramètres, Réseau, saisissez l'adresse IP ou le nom d'hôte de la machine à connecter, ainsi que le port (le port standard du protocole RDP est le 3389). Enfin, dans la partie Authentification, indiquez le nom d'utilisateur et le mot de passe. Plusieurs options matérielles sont disponibles pour transmettre le son, le microphone, les imprimantes, ou monter un partage. D'autres options sont disponibles pour améliorer les performances de la connexion.
Connexion
En revenant sur l'accueil (accessible en cliquant sur votre nom d'utilisateur), vous retrouverez les connexions que vous aurez créé. Cliquez sur une d'entre elles pour vous retrouver connecté à l'hôte distant à travers votre navigateur web.
Astuces
Vous pouvez quitter le terminal avec la commande exit
ou avec la combinaison de touches Ctrl + D
. Vous pourrez alors choisir de revenir à l'accueil, de vous reconnecter, ou de vous déconnecter de Guacamole.
Lorsque vous êtes connectés, un menu contextuel est disponible en utilisant la combinaison de touches Alt + Ctrl + Shift
.
Dans ce menu, vous trouverez :
- En haut à gauche la session en cours, avec la possibilité d'en ouvrir une nouvelle, ce qui permet de naviguer entre plusieurs connexions simultanément, qui apparaîtront en bas à droite.
- Toujours en haut, vous trouverez votre session Guacamole ou vous pouvez vous déconnecter, aller à l'accueil ou dans les paramètres.
- Juste en-dessous, vous aurez le presse-papier Guacamole et pourrez en modifier le contenu avant de le coller dans la fenêtre.
- Appareil correspond à la partie SFTP et vous permettra d'échanger des fichiers entre votre poste et le poste accédé à distance.
- Vous pourrez également choisir d'afficher un clavier virtuel ou régler le zoom de l'affichage.
Conclusion
On espère que ce tutoriel mis à jour vous sera utile et vous permettra d'accéder avec Guacamole à votre infrastructure, de manière centralisée, et surtout à travers une simple interface web. On vous conseille fortement de passer par un proxy inversé (NPM par exemple) pour y accéder de l'extérieur, tout en sécurisant la connexion en https et avec un certificat Let's Encrypt. L'utilisation de la double authentification permet également de renforcer le contrôle d'accès à votre infrastructure.
Si vous avez des questions sur cet article, n'hésitez pas à laisser des commentaires ou à venir échanger avec la communauté sur le groupe Telegram.