La prise de main à distance sur plusieurs machines fait partie intégrante du quotidien de l’administrateur réseau. Que se soit avec des clients multi-protocole (MobaXterm, MRemoteNG) ou avec des clients dédiés (Putty, Microsoft Remote Desktop), nos besoins sont en général pourvus. Cependant il m’est arrivé de ne pouvoir me connecter à cause de restrictions de sécurité. Dans ces cas là, les ports web restaient ouvert, c’est là que Guacamole prends tout sont sens.

Qu’est ce que Guacamole

Guacamole est un logiciel libre sous licence ASF (Apache Software Foundation) permettant la connexion à distance sur de nombreux types de machines grâce à son coté multi-protocole. La particularité de Guacamole c’est qu’il est accessible via une interface web. Et c’est la toute l’utilité de la chose. Sur un serveur hébergé n’importe ou vous pourrez prendre la main sur vos machines.

Alors comment ça marche ?
Très simplement le serveur web publie l’interface graphique et réceptionne les ordres (clique, clavier, etc …) puis le service Guacd transforme ces informations pour les router vers le protocole souhaités (SSH, VNC, RDP).

 

Guacamole permet aussi la gestion d’utilisateurs différent et de droit différents en fonction de ce que vous définirez dans le fichier de configuration.

Installation de guacamole

Pour les besoins du maquettage j’utilise une machine virtuelle Debian 9 fraîchement installée et mise a jour. Je suis en utilisateur root pour disposer de tous les droit dont je pourrais avoir besoin.

Pour installer Guacamole, rien de plus simple que d’installer le paquet correspondant par la commande ci dessous. Attention il est préférable d’être « root » pour cela.

apt-get install guacamole

Durant l’installation, le système vous demandera si vous voulez redémarrez « le serveur Tomcat », vous sélectionnerez « Oui ».

 

Configuration de Guacamole

La configuration de Guacamole n’est pas répartie sur beaucoup d’éléments:

  • un répertoire « home » le GUACAMOLE_HOME: /etc/guacamole
  • un ficher de configuration donnant la méthode de connexion à guacd: /etc/guacamole/guacamole.properties
  • un fichier listant les utilisateurs et leurs droits: /etc/guacamole/user-mapping.xml
  • un fichier pour le serveur Tomcat /etc/guacamole/tomcat.xml
  • un fichier pour le serveur apache /etc/guacamole/apache.conf

Dans le cas d’une configuration simple comme la notre nous n’aurons besoin d’éditer que le fichier le fichier user-mapping.xml. Ce dernier contient la liste des utilisateurs des protocoles et machines autorisées.
Dans le cas d’une « industrialisation de guacamole, vous pourrez utiliser une base SQL (MySQL, PostgreSQL, ou Sql Server) pour stocker les utilisateurs et leurs droits.

Création et déclaration d’un utilisateur

Nous commencerons par générer le mot de passe avec la commande suivante.
Cela nous permettra de ne pas avoir le mot de passe affiché en clair dans le fichier de configuration.
Bien évidement, le md5 reste une sécurité extrêmement faible et insuffisante.
Si vous souhaitez sécurisez les comptes utilisateurs de manières optimal, préférez une installation avec base de données ou les mots de passe seront chiffrés en sha256.

echo -n "mon_mot_de_passe"|md5sum

Puis nous éditerons le fichier /etc/guacamole/user-mapping.xml.

nano /etc/guacamole/user-mapping.xml

Afin de mieux expliquer comment configurer les connexions possibles, nous partirons du fichier exemple suivant:

<user-mapping>

<connection name="Raspberry">        
        <protocol>ssh</protocol>
        <param name="hostname">192.168.1.250</param>
        <param name="port">22</param>
</connection>

<connection name="Serveur Windows">
         <protocol>rdp</protocol>
         <param name="hostname">192.168.1.253</param>
         <param name="port">3389</param>
         <param name="server-layout">fr-fr-azerty</param>
         <param name="color-depth">16</param>
         <param name="enable-printing">true</param>
</connection>

</authorize>

<authorize username="utilisateur2" password="db3f23206bceb7eba6580a2ffbc53c28" encoding="md5">
    
<connection name="srvlinux">
         <protocol>ssh</protocol> 
         <param name="hostname">192.168.1.25</param> 
         <param name="port">22</param> 
</connection>
</authorize>

</user-mapping>

  • Le fichier de configuration commence avec la balise <user-mapping> et se termine avec la balise de fermeture </user-mapping>.
  • Le bloc <authorize username= »utilisateur1″ password= »23206deb7eba65b3fbc80a2ffbc53c28″ encoding= »md5″> permet de définir un utilisateur, son mot de passe ainsi que son mode de stockage, ici il est encodé en md5.
  • Tout ce qui est compris entre la balise <authorize….> et </authorize> concerne uniquement l’utilisateur déclaré.
    Ainsi plusieurs connexions peuvent être configurées pour cet utilisateur.
  • <connection name= »Raspberry »> nous permet de définir une connexion en indiquant son nom.
  • Les blocs suivants <protocol>ssh</protocol> <param name= »hostname »>192.168.1.250</param> <param name= »port »>22</param> indiquent un protocol SSH vers une IP précise et le port utilisé par ce protocole.

 

Une seconde connexion est configurée, elle concerne un serveur Windows avec le protocole RDP sur le port standard 3389, avec des couleurs 16bit, un clavier français azerty, et une redirection des imprimantes connectées sur le serveur guacamole.

Un second utilisateur est configurés pour un connexion SSH vers un serveur nommé « srvlinux ».

Une fois configuré il vous suffira de vous connecter à votre serveur via un navigateur web sur une adresse du type http://ip_de_votre_serveur:8080/guacamole.
Vous accéderez à la page d’authentification :

Une fois connecté avec votre utilisateur, vous retrouverez les connexions précédemment configurées.

 

Categories:

Comments are closed