Solution communautaire

Installez Apache Guacamole en toute sécurité sur CasaOS ou ZimaOS

A 2023 CasaOS tutorial introduced Apache Guacamole through BigBearCasaOS as a browser gateway for VNC, RDP and SSH.

En bref : Guacamole moderne est un service en trois parties, pas un simple conteneur web

Apache Guacamole permet d’accéder à RDP, VNC et SSH depuis un navigateur, sans client de bureau. Un déploiement Docker de type production comprend généralement l’application web Guacamole, guacd et une base de données telle que PostgreSQL ou MySQL/MariaDB. L’ancien package BigBearCasaOS de 2023 doit être considéré comme une solution pratique historique, et non comme une référence d’architecture.

Utiliser les conteneurs officiels de Guacamole

Le projet Apache publie les images prises en charge guacamole/guacamole et guacamole/guacd. La pile Docker de Guacamole décrit la configuration officielle. La présentation plus générale des modes d’installation de Guacamole explique pourquoi l’authentification par base de données est préférable pour les déploiements réels.

Configuration recommandée des conteneurs

guacamole-web
    |
    +-- guacd
    |
    +-- postgres ou mariadb

Gardez les trois services sur un réseau Docker privé. Publiez uniquement le point d’accès web de Guacamole. Ne publiez pas la base de données ni guacd sur le réseau local, sauf si un autre composant en a réellement besoin.

Initialiser la base de données avant la première connexion

L’extension d’authentification par base de données de Guacamole nécessite le chargement de son schéma avant que l’application web puisse enregistrer des utilisateurs et des connexions. Utilisez les fichiers d’initialisation SQL correspondant exactement à la version de Guacamole et au type de base de données. Assurez la persistance du répertoire de données de la base de données.

Mettre HTTPS en place avant toute exposition à distance

Guacamole peut transmettre des mots de passe administrateur et des sessions de bureau à distance ; l’exposer en HTTP simple constitue donc une mauvaise protection. Utilisez un proxy inverse avec HTTPS et une authentification forte. La configuration du proxy HTTPS de ZimaOS présente le modèle de proxy inverse de ZimaOS.

Utiliser l’authentification multifacteur ou l’authentification unique si Guacamole est exposé à Internet

Apache Guacamole prend en charge des extensions pour TOTP, OpenID Connect, SAML et d’autres systèmes d’authentification. L’accès au bureau à distance est une fonction d’administration ; protégez-le en conséquence au lieu de vous fier uniquement à un mot de passe local court.

Quand exécuter Guacamole dans une VM plutôt qu’ailleurs

Si vous souhaitez isoler Guacamole du moteur Docker du NAS, ou si vous avez déjà plusieurs services d’infrastructure, une petite VM Debian/Ubuntu offre une séparation nette pour les mises à jour et le pare-feu. Les exigences des VM ZimaOS couvrent les ressources hôte nécessaires à cette séparation.

Les exigences de l’application ZimaOS sont utiles lorsque Guacamole partage le NAS avec des bases de données, des serveurs multimédias et des outils de supervision.

Conservez séparément la base de données et la configuration de Guacamole

Ne considérez pas le conteneur web comme la partie de Guacamole qui contient les données persistantes. Les comptes utilisateurs, les connexions enregistrées et les données d’authentification résident dans la base de données, tandis que les extensions et la configuration personnalisée peuvent se trouver dans des répertoires montés. Sauvegardez ces éléments persistants avant de remplacer les images. Récupérer une nouvelle image de conteneur devrait être une opération courante ; devoir recréer de mémoire toutes les connexions distantes ne devrait pas l’être.

Configurez correctement les WebSockets du proxy inverse

Guacamole utilise des connexions de navigateur persistantes et la prise en charge des WebSockets pour les sessions interactives. Si la connexion fonctionne, mais que les bureaux distants se déconnectent, se figent ou perdent en performances derrière un proxy, vérifiez le transfert des WebSockets et les délais d’attente du proxy avant de mettre en cause RDP/VNC. Gardez le chemin ou le nom d’hôte de Guacamole stable pour éviter que le comportement des rappels et des sessions de navigateur ne change à chaque mise à jour.

Séparez l’accès à Guacamole des identifiants des systèmes cibles

Une connexion à Guacamole donne accès à la passerelle ; la cible Windows/Linux conserve ses propres identifiants et règles RDP, VNC ou SSH. Évitez de réutiliser le même mot de passe administrateur partout. Pour un accès partagé au sein du foyer ou de l’équipe, créez des comptes Guacamole nominatifs et accordez à chacun l’accès uniquement aux connexions dont il a besoin.

Testez la passerelle avant de l’exposer

Avant d’ajouter un DNS public, testez une connexion SSH ou RDP depuis le réseau local, vérifiez le comportement du presse-papiers et des sessions, redémarrez tous les conteneurs Guacamole et assurez-vous que les connexions enregistrées fonctionnent toujours. Testez ensuite une sauvegarde et une restauration de la base de données. Une passerelle qui résiste à la recréation des conteneurs est bien plus proche d’un déploiement facile à maintenir qu’une passerelle qui ne fonctionne que jusqu’à la prochaine mise à jour de l’image.

FAQ

Guacamole nécessite-t-il un client de bureau ?

Non. Les utilisateurs se connectent via un navigateur web, tandis que Guacamole convertit le trafic du navigateur en sessions RDP, VNC ou SSH.

Guacamole a-t-il besoin d’une base de données ?

Oui, pour gérer les utilisateurs et les connexions dans un environnement de production. La méthode d’authentification XML simple convient principalement aux tests de base.

Dois-je exposer guacd à Internet ?

Non. Gardez guacd à l’abri d’Internet, derrière l’application web Guacamole.

Guacamole peut-il remplacer un VPN ?

Il permet d’accéder à des bureaux distants configurés depuis un navigateur, mais ne constitue pas un tunnel réseau privé général pour tous les services.

Puis-je utiliser MariaDB à la place de PostgreSQL ?

Oui, les options d’authentification aux bases de données prises en charge incluent les bases compatibles avec MySQL et PostgreSQL, lorsqu’elles sont configurées avec l’extension et le schéma correspondants.