Guacamole, ou comment prendre le contrôle sur vos équipements SSH, RDP ou VNC via une interface Web

Guacamole est un outil développé par Apache permettant d'accéder via un navigateur web à ses différents équipements réseau, que ce soit via SSH, RDP, VNC ou encore TELNET. L'avantage, comme vous l'aurez compris, est qu'il ne nécessite pas de client lourd, ce qui vous permettra de vous connecter sur votre réseau depuis n'importe quel appareil disposant d'un navigateur, et ce, même depuis votre travail, où ces ports sont souvent fermés vers l'extérieur.

Pour fonctionner correctement, Guacamole a besoin de 3 parties : une base de données, un moteur qui va faire office de passerelle et une interface web. On pourrait utiliser les images fournies par Apache pour les 2 derniers (guacamole/guacd en tant que passerelle serveur et guacamole/guacamole pour l'interface web) ainsi que mariadb ou postgres en tant que base de données. Mais il se trouve qu'il existe une version tout en un, packagée pour nous en simplifier la mise en place.
Téléchargez-la depuis Portainer ou en CLI avec la commande suivante :

docker pull oznu/guacamole

Créez une stack via Portainer et utilisez le docker-compose suivant :

version: "2"
services:
  guacamole:
    image: oznu/guacamole
    container_name: guacamole
    volumes:
      - guacamole-config:/config
    ports:
      - 8080:8080
#    environment:
#      - EXTENSIONS=extension-name1,extension-name2

Les seules informations à renseigner dans ce docker-compose sont le port utilisé et le volume dans lequel sauvegarder les données de Guacamole. Un paramètre optionnel permet d'activer des extensions pour l'authentification. Attention, n'activez que les extensions dont vous avez besoin, si la configuration d'une extension est incorrecte, Guacamole ne démarrera pas.

Les extensions disponibles sont les suivantes :

  • auth-ldap : Authentification LDAP
  • auth-duo : Authentification à deux facteurs DUO
  • auth-header : Authentification HTTP basique
  • auth-cas : Authentification CAS, de type SSO
  • auth-openid : OpenID Connect, Authentification basée sur OAuth 2.0
  • auth-totp : Authentification à deux facteurs TOTP (pour Time-based One-time Password) basé sur le principe d'un code à 6 chiffres défini pour une durée de vie de 30 secondes, et calculé selon l'heure actuelle
  • auth-quickconnect : connexions externes via une URL

Vous pouvez ensuite accéder à l'interface de Guacamole en vous rendant sur http://<ADRESSE-IP>:8080. L'utilisateur par défaut est guacadmin avec le mot de passe guacadmin.

L'interface que vous obtenez est plutôt austère.

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.

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). Dans le cas du SSH comme dans l'exemple ci-dessous, 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, 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 revenant sur l'accueil (accessible en cliquant sur votre nom d'utilisateur), vous retrouverez votre connexion fraichement créée. Cliquez dessus pour vous retrouver connecté à votre serveur en SSH à travers votre navigateur web.

Une fois que vous avez terminé, quittez 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.

Tout l'intérêt de Guacamole réside dans le fait de vous permettre d'accéder de manière centralisée, et surtout à travers une simple interface web, à des serveurs distants. Je ne peux donc que vous conseiller de passer par un proxy inversé pour y accéder de l'extérieur, tout en sécurisant la connexion en https et en générant un certificat Let's Encrypt. Tout ceci est possible directement depuis un NAS Synology.