Guacamole est un proxy pour vos accès distants.

Il permet d’accéder depuis une interface Web à vos machines qu’elles soient en SSH, VNC, RDP.

C’est un projet qui a été repris par la fondation Apache (en incubation pour le moment).

Packagé dans les distributions majeures et chez Docker :

Guacamole est une application servlet Java, donc qui nécessite un Tomcat ou un autre serveur d’application. J’installe aussi Apache (ou Nginx) pour faire un reverse proxy.

L’avantage c’est qu’il est packagé sous Debian et qu’il suffit d’une commande pour mettre tout le monde d’accord :

apt-get install guacamole apache2

Reverse proxy Apache :

J’utilise Apache comme proxy inverse pour ne pas mettre le Tomcat directement en frontal.

Voici ma configuration dans /etc/apache2/sites-enabled/default-ssl.conf qui inclus reverse proxy et authentification CAS :

<VirtualHost *:80> ServerName guacamole.mondomaine.com RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] </VirtualHost> <IfModule mod_ssl.c> <VirtualHost _default_:443> SSLEngine on SSLCertificateFile/etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key <Location /> Authtype CAS require user moi </Location> ProxyPreserveHost On ProxyRequests On ProxyPass / http://127.0.0.1:8080/ ProxyPassReverse / http://127.0.0.1:8080 </VirtualHost> </IfModule>

Authentification

Guacamole propose plusieurs backends d’authentification : no-auth (open bar), basic (liste d’utilisateurs et mots de passe dans un fichier plat), ldap, CAS, …

Basique :

Si vous choisissez l’authentification basique, voici à quoi peut ressembler votre fichier /etc/guacamole/user-mapping.xml :

<user-mapping> <!-- Un utilisateur et les connexions qui lui sont associées --> <authorize username="nico" password="nico"> <connection name="Mon Serveur"> <protocol>rdp</protocol> <param name="hostname">monserveur.mondomaine.com</param> <param name="port">3389</param> </connection> </authorize> </user-mapping>

No Auth :

Pour ma part, j’utilise le backend no-auth donc ce n’est pas Guacamole qui gère l’authentification, par contre mon serveur Apache fait de l’authentification CAS.

Il faut configurer le serveur Guacamole en lui précisant dans le fichier /etc/guacamole/guacamole.properties le type de backend :

guacd-hostname: localhost guacd-port: 4822 available-languages: en # Authentification basique #auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider #basic-user-mapping: /etc/guacamole/user-mapping.xml # Pas d'authentification auth-provider: net.sourceforge.guacamole.net.auth.noauth.NoAuthenticationProvider noauth-config: /etc/guacamole/noauth-config.xml

Avec le no-auth, je suis obligé de définir pour tout le monde les mêmes connexions. Voici la tête de mon fichier /etc/guacamole/noauth-config.xml :

<configs> <config name="Mon Windows" protocol="rdp"> <param name="username" value="moi" /> <param name="hostname" value="monpcwindows" /> <param name="port" value="3389" /> </config> <config name="Mon Linux" protocol="ssh"> <param name="hostname" value="monlinux.mondomaine.com" /> <param name="port" value="22" /> </config> </configs>

Autres systèmes d’authentification :

Guacamole peut s’authentifier via d’autres systèmes, voir les chapitres 6 à 10 du guide utilisateur.

Et c’est parti !

service tomcat8 restart service apache2 restart

Vous pouvez aller sur https://votreserveur.votredomaine.com/

Sur le même sujet :