PROJET AUTOBLOG


IT-Connect

Site original : IT-Connect

⇐ retour index

RustDesk, l’alternative open source à TeamViewer que l’on peut auto-héberger

jeudi 2 juin 2022 à 16:00

I. Présentation

Dans ce tutoriel, nous allons découvrir RustDesk, une solution de prise en main à distance gratuite et open source (licence GPL-3.0), dans le même esprit que TeamViewer, AnyDesk et consort. RustDesk est utilisable en s'appuyant sur les serveurs publics, mais il est également possible d'auto-héberger sa propre instance en montant un serveur RustDesk : particulièrement intéressant, d'autant plus qu'il n'y a pas besoin de payer de licence.

Le serveur RustDesk est installable sur une machine Linux, une machine Windows ou via Docker. Sa compatibilité avec Docker va nous permettre de le mettre en place sur un NAS Synology de façon relativement simple. Dans cet article, nous allons voir comment héberger RustDesk Server sur un NAS Synology mais aussi comment le faire tourner sur un serveur Debian 11 avec Docker.

D'après le GitHub de RustDesk, il y a trois serveurs gratuits pour gérer les connexions et ils sont situés à Séoul, Singapour et Dallas. Cette liste va probablement évoluer avec le temps, mais cela doit vous inciter à utiliser votre propre serveur, car il n'y a pas encore de relais public en Europe ou en France.

Voici quelques liens utiles :

Il y a également un Discord et un Reddit pour les échanges et l'aspect communautaire.

A. Les fonctionnalités de RustDesk

Principalement codé en Rust, d'où son nom, RustDesk va se permettre de se connecter à distance sur un appareil, par exemple à partir d'un ordinateur A vers un ordinateur B, afin de prendre la main et effectuer une tâche d'administration ou intervenir dans le cadre d'une opération de support informatique. Cet outil est disponible sur les différentes plateformes : Windows, macOS, Linux (deb / rpm), Android et iOS, ce qui va permettre de l'utiliser aussi bien sur un poste de travail que sur une tablette ou un smartphone. Il y a une autre alternative qui consiste à utiliser son navigateur pour se connecter sur un hôte distant via le site http://web.rustdesk.com. Cette fonctionnalité est actuellement en Beta et fonctionne en HTTP, donc il vaut mieux attendre.

Cette solution présente l'avantage de pouvoir être auto-hébergée, ce qui est important d'un point de vue du respect de la vie privée. Ensuite, les connexions entre l'hôte qui contrôle et l'hôte qui est contrôlé sont sécurisées grâce à du chiffrement de bout en bout (il s'appuie notamment sur la librairie sodiumoxide basée sur NaCl pour Rust).

De manière générale, voici les fonctionnalités principales de RuskDesk lorsque l'on se connecte sur une machine :

B. Les ports utiles pour RustDesk

Pour qu'une connexion soit établie entre deux appareils, ils doivent pouvoir se connecter au serveur RustDesk. Si l'on utilise RustDesk par l'intermédiaire du réseau local uniquement, cela se gère assez facilement, car il n'y aura que les règles de pare-feu au sein même du réseau local à gérer. Par contre, si l'on veut que les machines se connectent au serveur RustDesk depuis n'importe où, il y a deux options pour contacter le serveur RustDesk :

Ce que l'on peut imaginer, c'est monter son propre serveur RustDesk sur un serveur VPS chez OVH ou un autre hébergeur, afin de le rendre accessible facilement, depuis n'importe où.

Peu importe le scénario qui sera retenu, il faut savoir que RustDesk s'appuie sur plusieurs ports pour fonctionner.

Le port 21116 est le seul qui doit être impérativement autorisé en TCP et UDP. Pour être plus précis, et d'après la documentation:

II. Héberger RustDesk sur Debian 11 avec Docker

Sur une machine Debian 11 où Docker est déjà en place, le lancement des deux containers va être assez rapide et facile. On commence par récupérer l'image officielle du container via un classique "docker image pull" comme ceci :

sudo docker image pull rustdesk/rustdesk-server

Ensuite, on va créer un dossier et se positionner à l'intérieur avant de démarrer le container (pour qu'il crée ses données dans ce dossier) :

mkdir /srv/rustdeskserver
cd /srv/rustdeskserver

Il ne reste plus qu'à démarrer les deux containers en s'inspirant des commandes indiquées dans la documentation :

sudo docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v `pwd`:/root -it --net=host --rm rustdesk/rustdesk-server hbbs -r 192.168.100.14:21117 
sudo docker run --name hbbr -p 21117:21117 -p 21119:21119 -v `pwd`:/root -it --net=host --rm rustdesk/rustdesk-server hbbr

Les commandes ci-dessus vont permettre de voir ce qui se passe au lancement de chaque container. Pour les démarrer en arrière-plan, il suffit d'ajouter l'option "-d" comme ceci :

sudo docker run --name hbbs -d -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v `pwd`:/root -it --net=host --rm rustdesk/rustdesk-server hbbs -r 192.168.100.14:21117 
sudo docker run --name hbbr -d -p 21117:21117 -p 21119:21119 -v `pwd`:/root -it --net=host --rm rustdesk/rustdesk-server hbbr

A partir de là, les deux containers tournent et nous pouvons le vérifier avec cette commande :

docker ps

Voyons comment mettre en place un serveur RustDesk sur un NAS Synology avant de passer à l'étape des tests.

III. Héberger RustDesk sur un NAS Synology

Pour installer RustDesk sur un NAS Synology, nous allons devoir installer le paquet Docker afin de monter deux containers : hbbs (serveur de rendez-vous et gestion des ID) et hbbr (serveur relais).

A. Installer Docker

Connectez-vous à l'interface DSM afin d'installer Docker, sauf si vous l'avez déjà. Ouvrez le Centre de paquets, recherchez "Docker" et cliquez sur "Installer".

Une fois que c'est fait, lancez l'application afin que l'on puisse monter nos conteneurs.

B. Télécharger l'image RustDesk Server

Au sein de Docker, cliquez sur "Registre" à gauche pour parcourir le catalogue des containers et recherchez "rustdesk-server" afin de trouver l'image officiel :

rustdesk/rustdesk-server

Sélectionnez cette image et cliquez sur "Télécharger".

Une fenêtre apparait, conservez la valeur "latest" et cliquez sur "Sélectionnez".

L'image va être téléchargée (85 Mo) et elle va s'afficher dans l'onglet "Image" de Docker. Nous allons pouvoir créer des containers basés sur cette image.

Synology RustDesk Docker

C. Créer le container hbbs

Pour créer un premier container, double-cliquez sur l'image RustDesk Server dans Docker afin de créer un nouveau container. Pour la première étape nommée "Réseau", sélectionnez "Utiliser le même réseau que Docker Host" et continuez.

Nommez ce container "hbbs", cochez l'option "Activer le redémarrage automatique" afin qu'il démarre automatiquement (et redémarre en cas de crash) et cliquez sur le bouton "Paramètres avancés".

Passez directement à l'onglet "Commande d'exécution" où vous devez configurer l'option "Commande" afin de lancer le serveur RustDesk. Indiquez la valeur suivante :

hbbs -r <votre adresse IP>

Si vous envisagez d'utiliser RustDesk uniquement sur le LAN (ou via un VPN), vous pouvez indiquer l'adresse IP privée de votre NAS. Sinon, il faut indiquer l'adresse IP publique. Voici un exemple :

hbbs -r 192.168.1.149

Cliquez sur "Sauvegarder" et continuez. Cliquez sur le bouton "Ajouter un dossier", par exemple "docker/RustDesk-Server" et puis indiquez "/root" comme chemin d'accès au niveau du container. Dans ce dossier, RustDesk va stocker plusieurs fichiers, notamment sa clé publique.

Cliquez sur "Suivant" puis sur "Effectué" pour terminer la création de ce premier container.


D. Créer le container hbbr

Vous devez créer un second container, basé sur la même image, mais avec le nom "hbbr". Ensuite, indiquez la même configuration que pour le premier container, notamment au niveau du réseau, du dossier, etc... Mais veillez à utiliser simplement cette commande dans l'onglet "Commande d'exécution" :

hbbr

En résumé, cela donne cette configuration pour ce second container :

Quand c'est bon pour vous, cliquez sur "Effectué" pour créer le container. Désormais, nous avons deux containers actifs, comme ceci :

Auto-héberger RustDesk

À partir de là, le serveur RustDesk est en ligne et opérationnel, grâce aux deux containers Docker.

IV. Prise en main à distance avec RustDesk

Pour tester RustDesk en passant par notre serveur, nous avons besoin de deux clients avec RustDesk. Pour rappel, le client RustDesk est téléchargeable directement sur GitHub. Sous Windows, il se présente sous la forme d'un exécutable. Il peut-être installé ou simplement utilisé en mode portable.

Une fois lancé, il faut que l'on configure le client RustDesk pour lui dire d'utiliser notre serveur auto-hébergé. Pour cela, cliquez sur le menu avec les trois points à côté de l'ID, puis sur l'option "ID/Serveur Relais".

Renseignez simplement le champ "Serveur ID" en indiquant l'adresse IP du serveur à contacter (ou le nom de domaine DNS). Cela signifie que vous devez indiquer l'adresse IP privée ou publique selon votre configuration.

Vous devez également renseigner le champ "Key" afin d'indiquer la clé publique générée par votre serveur RustDesk. Sans cela, la connexion ne sera pas chiffrée, mais pourra fonctionner. Quand c'est fait, cliquez sur "Confirmer".

Pour récupérer la valeur de votre clé publique, retournez sur l'interface de DSM (ou le dossier "/srv/rustdeskserver/" si vous utilisez la solution Debian) et à l'aide de l'explorateur de fichiers, accédez au dossier monté dans les containers. Pour ma part, il s'agissait de "docker/RustDesk". Dans ce dossier, téléchargez le fichier "id_ed25519.pub" afin de l'ouvrir et copier-coller la valeur dans le champ "Key" du client RustDesk.

Effectuez la configuration du client RustDesk sur les deux hôtes. Ensuite, vous pouvez tester la connexion pour se connecter d'un hôte A vers un hôte B. Normalement, le client RustDesk doit afficher le statut "Prêt" s'il s'est bien connecté à votre serveur.

Saisissez l'ID de l'hôte distant dans le client RustDesk et validez... La connexion va être établie, et il faudra saisir le mot de passe pour se connecter (accessible depuis l'interface de l'hôte distant). L'alternative consiste à accepter la connexion manuellement, ce qui sera possible si un utilisateur est devant l'ordinateur. D'ailleurs, il vaut mieux utiliser ce principe lorsque l'on se connecte sur un poste d'un utilisateur afin d'avoir son approbation manuelle.

Lorsque l'on se connecte sans avoir renseigné la clé publique dans les paramètres, on voit qu'un bouclier rouge s'affiche en haut de l'interface. Cela indique que la connexion n'est pas sécurisée.

À l'inverse, quand le client est correctement configuré, la connexion est bien sécurisée et chiffrée.

Voilà, vous n'avez plus qu'à profiter de RustDesk !

IV. Configurer automatiquement l'hôte et la clé publique

Plutôt que de configurer chaque machine avec l'adresse IP du serveur et la clé publique, il est possible de jouer sur le nom de l'exécutable. En fait, d'après la documentation officielle, il faut renommer l'exécutable comme ceci (en adaptant avec vos valeurs) :

rustdesk-host=192.168.1.149,key=xYzAbCdEfGhIjKlMn0123.exe

De ce fait, lorsqu'on lance RustDesk et que l'on accède à la section "About RustDesk", on peut voir s'afficher la clé publique et l'hôte. Grâce à cela, RustDesk va utiliser ces informations pour fonctionner et donc on évite de devoir configurer les options de serveur comme nous l'avons fait précédemment.

Gratuite et open source, RustDesk est une solution intéressante qu'il va falloir suivre de près dans les prochains mois, d'autant plus que l'on peut l'auto-hébeger : un avantage en comparaison des autres solutions telles que TeamViewer et AnyDesk. Même si la solution doit encore mûrir pour réellement concurrencer les ténors du marché, c'est un outil à suivre ! Le fait de pouvoir l'héberger permet de prendre la main à distance sur un appareil sans pour autant s'appuyer sur une infrastructure tierce.

N'hésitez pas à tester de votre côté et à me faire un retour en commentaire ! 🙂

The post RustDesk, l’alternative open source à TeamViewer que l’on peut auto-héberger first appeared on IT-Connect.