On se fait un TeamViewer ?"

C'est la question de nos clients, qui arrive assez souvent, lorsque nous avons besoin de prendre la main, à distance, sur un poste client.

Chez AukFood, notre philosophie est de n'utiliser que de l'open-source. On ne va pas se mentir, TeamViewer fonctionne quand même sacrément bien, il fait ce qu'on lui demande, mais... C'est propriétaire !

Alors qu'est-ce qu'on fait ? Nous avions étudié le fonctionnement de Tactical RMM (voir l'article ici), mais ce dernier peut être assez lourd lorsque c'est juste pour un accès ponctuel. Dans le cadre de Tactical RMM, il vous faut installer un agent, l'ajouter côté serveur, etc... Il nous faut une méthode plus simple et plus rapide.

1. Présentation de RustDesk

RustDesk est écrit en Rust, et présente le même fonctionnement que TeamViewer. En effet, pour se connecter à une machine distante, il faut disposer de son ID et de son mot de passe.

Voici le fonctionnement, finalement très simple. Chaque ordinateur (le prestataire et le client) doit disposer du logiciel "RustDesk", compatible Windows, macOS, Linux, Android, iOS.

Pour que la connexion soit établie, il faut une machine qui héberge les fonctionnalités suivantes :

  • hbbs (signaling server)
  • hbbr (relay server)

Il existe des serveurs publics, hébergeant ces deux composants. Ils sont maintenus par l'équipe de RustDesk, et sont au nombre de trois. Le premier à Séoul, le deuxième à Singapour et le dernier à Dallas.

Cependant, il est possible d'autohéberger son propre serveur, pour une meilleure sécurité.

Voici ci-dessous, un schéma plus détaillé, issu du GitHub du projet :

2. Installation de RustDesk (serveurs hbbs et hbbr)

Il existe deux modes d'installation (au choix) : en mode conteneur, ou en mode autonome. Dans cet article, nous nous intéresserons à l'installation via Docker.

Attention, il vous faudra ouvrir les ports suivants :

  • TCP : de 21115 à 21119
  • UDP : 21116

Cette méthode implique que vous ayez Docker déjà installé sur votre machine. Il y aura au total deux conteneurs : hbbs et hbbr.

Tout d'abord, créer un dossier pour ce projet :

mkdir rustdesk
cd rustdesk/

Télécharger l'image :

docker image pull rustdesk/rustdesk-server

Puis lancer le conteneur hbbs :

docker run -d --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  

En prenant le soin de remplacer relay-server-ip par l'IP publique du serveur, et le port 21117.

Lancer le conteneur hbbr :

docker run -d --name hbbr -p 21117:21117 -p 21119:21119 -v pwd:/root -it --net=host --rm rustdesk/rustdesk-server hbbr 

Vérifier le bon fonctionnement des deux conteneurs :

root@server:~# docker ps -a
CONTAINER ID   IMAGE                                 COMMAND                  CREATED              STATUS                 PORTS                              NAMES
5e415ce61397   rustdesk/rustdesk-server              "hbbr"                   About a minute ago   Up About a minute                                         hbbr
80453ef4b014   rustdesk/rustdesk-server              "hbbs -r 1.2.3…"   4 minutes ago        Up 4 minutes                                              hbbs

Tout est up, c'est impeccable. Tester depuis une autre machine que les ports sont bien ouverts, avec un nmap par exemple :

clement@MacBook-Pro ~ % nmap -p 21115,21116,21117,21118,21119 
Starting Nmap 7.92 ( https://nmap.org ) at 2022-06-08 11:52 CEST
Host is up (0.013s latency).

PORT      STATE SERVICE
21115/tcp open  unknown
21116/tcp open  unknown
21117/tcp open  unknown
21118/tcp open  unknown
21119/tcp open  unknown

Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds

L'installation en mode conteneur est terminée.

3. Configuration du client RustDesk pour pointer sur un serveur tiers

Une fois que les deux postes ont installé RustDesk (télécharger ici : https://github.com/rustdesk/rustdesk/releases), il faut le configurer pour rediriger le trafic vers notre instance autohébergée, et non sur l'un des 3 serveurs publics.

⚠️ Configuration à faire sur les deux postes ⚠️

Pour cela, commencer par récupérer la clé publique de RustDesk :

cat rustdesk/id_ed25519.pub

C'est une étape facultative, mais celle-ci permet de chiffrer la connexion.

Cliquer sur les 3 points (voir entouré en rouge), puis sélectionner "ID / Serveur Relais".

À la ligne Serveur ID, renseigner l'IP publique du serveur, suivie du port 21116 (par défaut). Puis à la ligne Key, le contenu de la clé publique (voir ci-dessus).

Une fois cela fait sur chaque poste, confirmer les changements.

4. Conclusion

Vous pouvez lancer une connexion, cela fonctionne comme prévu, en passant par votre serveur auto-hébergé.

En conclusion, c'est une solution qui fonctionne, simple à installer, et qui fait ce qu'on lui demande. C'est un concurrent sérieux à TeamViewer à notre sens.[/fusion_text][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]