Ce tutoriel vous montrera comment configurer le bureau à distance Guacamole sur le serveur Debian 10. Guacamole est une passerelle de bureau à distance gratuite et open source développée par la fondation logicielle Apache.
Caractéristiques du guacamole
- Il vous permet d'accéder à votre bureau à distance à partir d'un navigateur Web. Aucun autre logiciel ne doit être installé côté client.
- Compatible avec les protocoles standards tels que VNC, RDP, SSH et Kubernetes.
- Les sessions VNC peuvent être enregistrées graphiquement.
- Authentification unique avec CAS, OpenID Connect ou SAML 2.0
- Wake-on-LAN
- Gérez facilement plusieurs sessions de bureau à distance.
- Prend en charge l'authentification à deux facteurs TOTP.
- Prend en charge le presse-papiers (copier-coller) et le transfert de fichiers via SFTP.
- Prend en charge l'entrée et la sortie audio
- et plus.
Guacamole lui-même n'est pas un protocole de bureau à distance. Il s'agit d'un proxy entre le poste de travail distant et le client, de sorte que le poste de travail distant peut être affiché et contrôlé dans un navigateur Web.
Étape 1 :Créer le serveur Guacamole à partir de la source
Connectez-vous à votre serveur Debian 10 et installez les packages de dépendance.
sudo apt install build-essential libcairo2-dev libjpeg62-turbo-dev libpng-dev libtool-bin libossp-uuid-dev libvncserver-dev freerdp2-dev libssh2-1-dev libtelnet-dev libwebsockets-dev libpulse-dev libvorbis-dev libwebp-dev libssl-dev libpango1.0-dev libswscale-dev libavcodec-dev libavutil-dev libavformat-dev
Téléchargez la dernière version stable de guacamole-server.
wget http://mirror.cc.columbia.edu/pub/software/apache/guacamole/1.2.0/source/guacamole-server-1.2.0.tar.gz
Extraire l'archive.
tar -xvf guacamole-server-1.2.0.tar.gz
Accédez au répertoire extrait.
cd guacamole-server-1.2.0
Configurez l'environnement de construction.
./configure --with-init-dir=/etc/init.d
Puis compilez guacamole-server.
sudo make
Installez le serveur guacamole.
sudo make install
Mettez à jour le cache du système des bibliothèques installées.
sudo ldconfig
Rechargez systemd pour qu'il puisse trouver le guacd
(démon proxy Guacamole) installé dans /etc/init.d/
répertoire.
sudo systemctl daemon-reload
Démarrer le guacd
services.
sudo systemctl start guacd
Activer le démarrage automatique au démarrage.
sudo systemctl enable guacd
Vérifiez son statut.
systemctl status guacd
Comme vous pouvez le voir, il est actif (en cours d'exécution) .
Guacd écoute sur 127.0.0.1:4822
, comme on peut le montrer avec le ss
utilitaire.
sudo ss -lnpt | grep guacd
Étape 2 :Installez l'application Web Guacamole
L'application Web Guacamole est écrite en Java, nous devons donc installer un conteneur Java Servlet comme Apache Tomcat.
sudo apt install tomcat9 tomcat9-admin tomcat9-common tomcat9-user
Apache Tomcat écoutera sur le port 8080, comme cela peut être montré avec :
sudo ss -lnpt | grep java
Si vous avez un autre logiciel qui écoute sur le port 8080, alors Tomcat ne peut pas se lier au port 8080. Vous devez configurer l'autre processus pour utiliser un port différent, puis redémarrer Tomcat (sudo systemctl restart tomcat9
).
Ensuite, téléchargez l'application Web Guacamole.
wget https://downloads.apache.org/guacamole/1.2.0/binary/guacamole-1.2.0.war
Déplacez le fichier dans le répertoire de l'application Web (/var/lib/tomcat9/webapps
) et renommer le fichier en même temps (supprimer le numéro de version).
sudo mv guacamole-1.2.0.war /var/lib/tomcat9/webapps/guacamole.war
Redémarrez Tomcat et guacd.
sudo systemctl restart tomcat9 guacd
Étape 3 :Configurer Guacamole
Créez un répertoire de configuration pour Guacamole.
sudo mkdir /etc/guacamole/
Créez un fichier de configuration.
sudo nano /etc/guacamole/guacamole.properties
Ajoutez les lignes suivantes dans ce fichier. Certaines personnes pourraient dire que vous n'avez pas besoin d'ajouter ces lignes car ce sont les valeurs par défaut. Je vous montre une configuration de base, afin que vous puissiez la personnaliser en cas de besoin.
# Hostname and port of guacamole proxy guacd-hostname: localhost guacd-port: 4822 # Auth provider class (authenticates user/pass combination, needed if using the provided login screen) auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider basic-user-mapping: /etc/guacamole/user-mapping.xml
Enregistrez et fermez le fichier. Le module d'authentification par défaut de Guacamole lit les noms d'utilisateur et les mots de passe à partir d'un fichier XML :/etc/guacamole/user-mapping.xml
. Avant de créer ce fichier, nous devons générer un hachage MD5 pour votre mot de passe avec la commande suivante. Remplacez your_password
avec votre mot de passe préféré.
echo -n your_password | openssl md5
Exemple de sortie :
(stdin)= 1060b7b46a3bd36b3a0d66e0127d0517
Ensuite, créez le fichier XML de mappage utilisateur.
sudo nano /etc/guacamole/user-mapping.xml
Ajoutez les lignes suivantes. Ici, nous précisons que le backend utilisera le protocole VNC (Virtual Network Computing). Remplacez le nom d'utilisateur et le hachage du mot de passe. Nous créerons un mot de passe VNC plus tard.
<user-mapping> <!-- Per-user authentication and config information --> <authorize username="your_preferred_username" password="1060b7b46a3bd36b3a0d66e0127d051" encoding="md5"> <connection name="default"> <protocol>vnc</protocol> <param name="hostname">localhost</param> <param name="port">5901</param> <param name="password">vnc_password</param> </connection> </authorize> </user-mapping>
Enregistrez et fermez le fichier. Redémarrez Tomcat et guacd.
sudo systemctl restart tomcat9 guacd
Étape 4 :Installer un environnement de bureau sur le serveur Debian 10
Puisque nous allons configurer un bureau à distance, nous avons besoin d'un environnement de bureau. Assurez-vous que votre serveur dispose de suffisamment de RAM avant d'installer un environnement de bureau. Il existe de nombreux environnements de bureau. J'ai trouvé que l'environnement de bureau léger XFCE fonctionne bien dans VNC, alors installez-le avec la commande suivante.
sudo apt update sudo apt install xfce4 xfce4-goodies
Lors de l'installation, il peut vous être demandé de choisir un gestionnaire d'affichage par défaut. Ce choix n'a pas beaucoup d'importance, car vous ne verrez pas l'écran de connexion dans une session VNC.
Puisqu'un environnement de bureau s'exécute sur le serveur, il est fortement recommandé d'utiliser un pare-feu comme UFW pour restreindre l'accès et n'ouvrir que les ports nécessaires au public. Vous pouvez lire le didacticiel suivant pour savoir comment activer et utiliser UFW sur Debian.
- Comment utiliser le pare-feu UFW sur Debian, Ubuntu, Linux Mint
Étape 5 :Installer un serveur VNC sur le serveur Debian 10
Il existe plusieurs logiciels de serveur VNC disponibles pour les utilisateurs de Linux. Nous allons utiliser le serveur TigerVNC car il fonctionne mieux avec Guacamole.
sudo apt install tigervnc-standalone-server
Exécutez la commande suivante pour démarrer le serveur VNC.
vncserver
Lorsque TigerVNC démarre pour la première fois, il vous demande de définir un mot de passe VNC. Notez que le mot de passe ne doit pas comporter plus de 8 caractères. Ensuite, vous pouvez choisir si vous avez besoin d'un mot de passe en lecture seule.
Maintenant, vous devez éditer le /etc/guacamole/user-mapping.xml
fichier et modifiez le mot de passe VNC. Redémarrez ensuite Tomcat et guacd.
sudo systemctl restart tomcat9 guacd
Le tigervnc-standalone-server
le paquet est livré avec un fichier /etc/X11/Xvnc-session
qui indique à TigerVNC de lancer un serveur X lorsqu'il démarre.
Le serveur TigerVNC n'est livré avec aucune unité de service systemd. Pour le faire démarrer au démarrage, nous devons créer une unité de service systemd.
sudo nano /etc/systemd/system/[email protected]
Ajoutez les lignes suivantes dans le fichier. Remplacez nom d'utilisateur par votre vrai nom d'utilisateur.
[Unit] Description=a wrapper to launch an X server for VNC After=syslog.target network.target [Service] Type=forking User=username Group=username WorkingDirectory=/home/username ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i ExecStop=/usr/bin/vncserver -kill :%i [Install] WantedBy=multi-user.target
Enregistrez et fermez le fichier. Arrêtez l'instance actuelle du serveur VNC.
vncserver -kill :1
Démarrez le serveur VNC avec systemd.
sudo systemctl start [email protected]
Activer le démarrage automatique au démarrage.
sudo systemctl enable [email protected]
Vérifiez son état :
systemctl status [email protected]
Comme vous pouvez le voir, il est actif (en cours d'exécution).
Maintenant TigerVNC Server écoute sur le port 5901.
sudo ss -lnpt | grep vnc
Étape 6 :Configurer un proxy inverse pour l'application Web Guacamole
Apache Tomcat écoute sur le port 8080. Pour accéder facilement à l'application Web Guacamole, nous pouvons configurer un proxy inverse avec Apache ou Nginx, afin que les utilisateurs finaux puissent utiliser un nom de domaine pour accéder à l'application Web. Cela nous permet également d'installer facilement un certificat TLS pour chiffrer la connexion.
Apache
Si vous préférez utiliser Apache, installez Apache à partir du référentiel de logiciels Debian par défaut.
sudo apt install apache2
Pour utiliser Apache comme proxy inverse, nous devons activer le proxy
modules et le module d'en-tête.
sudo a2enmod proxy proxy_http headers proxy_wstunnel
Créez ensuite un fichier d'hôte virtuel pour Guacamole.
sudo nano /etc/apache2/sites-available/guacamole.conf
Ajoutez les lignes suivantes dans le fichier. Remplacez guacamole.example.com
avec votre propre nom de domaine. Pensez à créer un enregistrement A pour le sous-domaine dans votre gestionnaire DNS. Si vous n'avez pas de vrai nom de domaine, je vous recommande d'aller sur NameCheap pour en acheter un. Le prix est bas et ils offrent une protection de la confidentialité whois gratuite à vie.
<VirtualHost *:80> ServerName guacamole.example.com ErrorLog ${APACHE_LOG_DIR}/guacamole_error.log CustomLog ${APACHE_LOG_DIR}/guacamole_access.log combined <Location /> Require all granted ProxyPass http://localhost:8080/guacamole/ flushpackets=on ProxyPassReverse http://localhost:8080/guacamole/ </Location> <Location /websocket-tunnel> Require all granted ProxyPass ws://localhost:8080/guacamole/websocket-tunnel ProxyPassReverse ws://localhost:8080/guacamole/websocket-tunnel </Location> Header always unset X-Frame-Options </VirtualHost>
Enregistrez et fermez le fichier. Testez la syntaxe.
sudo apachectl -t
Si Syntx est Ok, alors activez cet hôte virtuel.
sudo a2ensite guacamole.conf
Redémarrez Apache
sudo systemctl restart apache2
Vous pouvez maintenant accéder à la page de connexion Apache Guacamole via guacamole.example.com
. Si vous voyez la "requête invalide" ou un message d'erreur similaire, cela peut signifier qu'Apache Tomcat ne peut pas se lier au port 8080, car ce port est déjà pris par un autre processus sur le serveur. Vous devez configurer l'autre processus pour utiliser un port différent, puis redémarrer Tomcat.
Nginx
Si vous préférez utiliser Nginx, installez Nginx à partir du référentiel de logiciels Debian par défaut.
sudo apt install nginx
Créez un fichier de bloc de serveur pour Guacamole.
sudo nano /etc/nginx/conf.d/guacamole.conf
Ajoutez les lignes suivantes dans le fichier. Remplacez guacamole.example.com
avec votre propre nom de domaine. Pensez à créer un enregistrement A pour le sous-domaine dans votre gestionnaire DNS. Si vous n'avez pas de vrai nom de domaine, je vous recommande d'aller sur NameCheap pour en acheter un. Le prix est bas et ils offrent une protection de la confidentialité whois gratuite à vie.
server { listen 80; listen [::]:80; server_name guacamole.example.com; access_log /var/log/nginx/guac_access.log; error_log /var/log/nginx/guac_error.log; location / { proxy_pass http://127.0.0.1:8080/guacamole/; proxy_buffering off; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_cookie_path /guacamole/ /; } }
Enregistrez et fermez ce fichier. Testez ensuite la configuration de Nginx.
sudo nginx -t
Si le test réussit, rechargez Nginx pour que la modification prenne effet.
sudo systemctl reload nginx
Vous pouvez maintenant accéder à la page de connexion Apache Guacamole via guacamole.example.com
. Si vous voyez la "requête invalide" ou un message d'erreur similaire, cela peut signifier qu'Apache Tomcat ne peut pas se lier au port 8080, car ce port est déjà pris par un autre processus sur le serveur. Vous devez configurer l'autre processus pour utiliser un port différent, puis redémarrer Tomcat.
Activer HTTPS
Pour chiffrer le trafic HTTP lorsque vous visitez l'interface Web de Guacamole, nous pouvons activer HTTPS en installant un certificat TLS gratuit émis par Let's Encrypt. Exécutez la commande suivante pour installer le client Let's Encrypt (certbot) sur Debian 10.
sudo apt install certbot
Si vous utilisez Apache, vous devez installer le plugin Certbot Apache.
sudo apt install python3-certbot-apache
Ensuite, exécutez la commande suivante pour obtenir et installer le certificat TLS.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d guacamole.example.com
Si vous utilisez Nginx, vous devez également installer le plugin Certbot Nginx.
sudo apt install python3-certbot-nginx
Ensuite, exécutez la commande suivante pour obtenir et installer le certificat TLS.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d guacamole.example.com
Où :
--nginx
:Utilisez le plug-in nginx.--apache
:Utilisez le plug-in Apache.--agree-tos
:acceptez les conditions d'utilisation.--redirect
:Forcer HTTPS par redirection 301.--hsts
:Ajoutez l'en-tête Strict-Transport-Security à chaque réponse HTTP. Forcer le navigateur à toujours utiliser TLS pour le domaine. Protège contre le SSL/TLS Stripping.--staple-ocsp
:active l'agrafage OCSP. Une réponse OCSP valide est agrafée au certificat que le serveur propose pendant TLS.
Le certificat devrait maintenant être obtenu et installé automatiquement.
Et vous pouvez accéder à l'interface Web de Guacamole via HTTPS. (https://guacamole.example.com).
Une fois connecté, vous pourrez utiliser le bureau à distance.
Conclusion
J'espère que ce tutoriel vous a aidé à configurer le bureau à distance Apache Guacamole sur le serveur Debian 10. Comme toujours, si vous avez trouvé cet article utile, abonnez-vous à notre newsletter gratuite pour obtenir plus de trucs et astuces. Prenez soin de vous 🙂