Rustdesk : dernières évolutions

Remote desktop Réseau Télé-assistance Contrôle à distance Rustdesk

Il y a un peu plus d'un an, je découvrais Rustdesk, une alternative libre à Teamviewer ou AnyDesk et auto-hébergeable. Depuis peu le projet a grandement évolué en se scindant en deux versions : une version open source gratuite et une version propriétaire payante, les deux étant toujours auto-hébergeables.

Rustdesk est un logiciel de contrôle à distance. Contrairement à Teamviewer ou Anydesk qui ne proposent que le client, Rustdesk permet d'héberger son propre serveur. Il est possible d'utiliser le client seul en utilisant les relais publics proposés par Rustdesk mais c'est quand même mieux en termes de sécurité quand on maîtrise la chaîne complète.

Rustdesk se décline dorénavant en deux versions :

  • Une version libre sous licence AGPL-3.0, gratuite et auto-hébergeable dont j'avais abordé l'installation et l'utilisation dans cet article : Installation du serveur et du client Rustdesk
  • Une version propriétaire et payante, toujours auto-hébergeable avec plus de fonctionnalités que la version libre.

La dernière version du client (1.2.1), disponible sur https://rustdesk.com/download, a bien évolué par rapport à la version testée (1.1.9) dans mon billet précédent.

Le logiciel supporte Wayland. Teamviewer ne le supporte toujours pas. Bon en même temps, c'est aussi le cas pour d'autres logiciels.

L'apparence du logiciel est plus aboutie.

rusdesk01

L'accès aux paramètres de configuration se fait dorénavant depuis un onglet dédié. Je ne vais pas m'étendre sur toutes les options. La plupart sont parlantes, mais un peu plus de documentation dessus ne ferait pas de mal. Comme relevé dans mon dernier billet sur le sujet, Rustdesk pêche un peu sur la documentation officielle.

(rustdesk02)

Mot de passe permanent : il est possible de définir un mot de passe permanent dans les paramètre de sécurité. Celui-ci permet de prendre la main sur un poste distant sans devoir demander l’autorisation. Cela peut s'avérer pratique pour la maintenance de serveurs Windows à distance.

RDP : Dans le cas des postes Windows, vous pouvez activer le RDP.

Capture%20d%E2%80%99%C3%A9cran%20du%202023-07-17%2017-24-32

Il est alors possible de se connecter depuis un poste Windows (sous Fedora ça ne fonctionne pas) en RDP sur le poste distant à travers Rustdesk. Pour cela, initiez une première connexion classique vers le PC distant, puis déconnectez-vous. Le poste distance apparaissant dans les sessions récentes, cliquez sur les 3 points verticaux, puis RDP : Capture%20d%E2%80%99%C3%A9cran%20du%202023-07-17%2017-28-04

Une nouvelle fenêtre s'ouvre puis la connexion RDP est initiée :

Capture%20d%E2%80%99%C3%A9cran%20du%202023-07-17%2017-37-07

Carnet d'adresses : Il n'est pas possible d'utiliser le carnet d'adresse avec la version libre, il faudra donc se contenter des "Favoris". Si vous n'avez pas beaucoup de clients à gérer ou dans le cas d'une utilisation personnelle, cela fera l'affaire mais ça peut vite devenir plus compliqué au delà d'un certains nombre.

Pour la partie serveur, je fais tourner un container Docker avec docker-compose depuis le début. Ici aussi quelques évolutions notables.

Docker: Prise en charge du S6-Overlay qui permet de ne faire tourner qu'un seul conteneur. Sans S6,il faut lancer deux conteneurs :

  • un conteneur pour hbbs (serveur RustDesk ID/Rendezvous)
  • un conteneur pour hbbr (serveur relais RustDesk)

Sécurité : Autre évolution notable, la possibilité de restreindre l'accès au serveur Rustdesk avec l'option "ENCRYPTED_ONLY". Seuls les clients ayant la clé publique pourront utiliser le serveur pour des prises en main à distance. Cela permet de rajouter une sécurité à votre serveur Rustdesk en empêchant des utilisateurs externes à votre organisation de l'utiliser. Ce qui est un peu con, c'est que cette clé est visible dans la rubrique "À propos" du client Rustdesk dans le cas de Windows si vous faites une installation du client en renommant l'exécutable avec le host et la clé. Si vous saisissez manuellement ces deux options dans les paramètres Réseau, les valeurs ne s'affichent pas dans la rubrique "À propos" et sont masquées aux simples utilisateurs.

Vous trouverez les modèles de docker-compose.yml sur https://github.com/rustdesk/rustdesk-server

Je pense qu'à la lecture de ce titre, beaucoup ont du lever les yeux vers le ciel en secouant la tête. Le modèle économique choisi est celui de l'abonnement avec diverses fonctionnalités suivant le plan choisi. Le plan le plus élevé est à 238$/an ce qui reste tout de même beaucoup moins élevé que Teamviewer mais avec une limite de 500 clients. On peut regretter cependant que Rustdesk ne propose pas une licence perpétuelle comme Emby.

Ce qui peut en fâcher beaucoup, c'est le côté propriétaire. Je ne vais pas m'étendre sur le sujet bien que j'aurai préféré une version libre. Pour être plus précis, il semble que ce soit que la console web centrale qui soit propriétaire, le client et le serveur restant gratuits et libres.

En demandant gentiment à l'équipe Rustdesk, j'ai pu obtenir une clé pour réaliser mes tests. Sans cette clé, le console web s'installe, mais vous ne pouvez pas faire grand chose dessus.

Les fonctionnalités supplémentaires sont :

  • OIDC, LDAP, 2FA (email verification)
  • Address book
  • Rename
  • Log management
  • Device management
  • Settings sync
  • Permission control
  • Multiple relay servers (automatically selects your closest relay)
  • Add/modify users and user groups
  • Modify device access permissions

Comparé à la version libre, on peut donc créer des comptes et se connecter depuis le client pour bénéficier notamment du carnet d'adresses. On pourra également créer des groupes d'utilisateurs et limiter ceux-ci à leur périmètre d'intervention.

Moyens mis en œuvre :

  • Un conteneur LXC sur Proxmox basé sur le template ubuntu 22.04 LTS
  • Un reverse-proxy pour la console web pointant vers le port TCP 21114 du serveur Rustdesk
  • Un nom de domaine pour l'accès à la console web différent du nom de domaine utilisé pour le serveur Rustdesk, ce dernier ne tournant pas sur le même serveur que le reverse-proxy
  • Les redirections de port sur la box pour l'accès depuis l'externe (cf Installation du serveur et du client Rustdesk)

Installation du serveur sans renseigner le domaine si vous utilisez comme moi un reverse-proxy existant :

root@SRV-RUSTDESK:~#  bash <(wget -qO- https://raw.githubusercontent.com/rustdesk/rustdesk-server-pro/main/install.sh)

Les fichiers de logs sont stockés dans ce répertoire : /var/log/rustdesk-server/

Une fois installé, vous pouvez vous connecter soit sur https://rustdesk.votredomaine.fr soit directement sur l'IP du serveur http://IP_SERVEUR_RUSTDESK:21114

Capture%20d%E2%80%99%C3%A9cran%20du%202023-07-18%2012-07-16

Pour s'authentifier, saisissez admin et test1234.

Dans l'ordre, je vais :

  1. Configurer le SMTP (pour activer plus tard le 2FA).
  2. Créer trois groupes :
    • RUSTDESKADMIN pour la gestion de Rustdesk (en remplacement de l'admin de base),
    • TECHADMIN ayant accès aux PC et aux serveurs,
    • TECHLOG ayant accès uniquement aux PC pour du support fonctionnel logiciel par exemple.
  3. Créer des utilisateurs.
  4. Installer Rustdesk sur deux PC et un serveur.
  5. Attribution des clients aux groupes concernés.
  6. Tests de prise en main.

Se rendre sur Settings > SMTP. J'ai configuré les paramètres en utilsant ceux de mon serveur mail. J'ai rencontré un souci avec le port 587 qui ne semble pas supporté. Je me suis donc rabattu sur le port 465.

Rendez-vous sur Groups, puis cliquez sur "Create" pour créer les groupes.

Capture%20d%E2%80%99%C3%A9cran%20du%202023-07-18%2012-46-32

Le groupe Default ne peut pas être retiré. C'est le groupe par défaut des nouveaux clients Rustdesk.

Les serveurs auront comme groupe TECHADMIN et les PC auront TECHLOG. Afin de permettre aux admins l'accès au PC, il nous faut permettre à ce groupe l'accès au groupe TECHLOG. Pour cela, cliquez sur "Edit" de la ligne TECHADMIN puis autoriser l'accès au groupe TECHLOG :

Capture%20d%E2%80%99%C3%A9cran%20du%202023-07-18%2012-52-39

Création de l'utilisateur admin de rustdesk

Capture%20d%E2%80%99%C3%A9cran%20du%202023-07-18%2012-57-26

Note : il faut avoir un email unique pour chaque utilisateur. Dans le cadre du test je me suis fait des alias.

Connectez vous avec ce compte sur la console web et désactivez l'admin créé par défaut. Ensuite, rendez-vous sur les paramètres de compte de l'utilisateur en cliquant sur le nom en haut à gauche. Enfin activez la vérification du login par email et les évènements.

Capture%20d%E2%80%99%C3%A9cran%20du%202023-07-18%2013-01-57

Vous recevrez alors un email contenant un code temporaire à chaque connexion avec ce compte que ce soit sur la console web ou le client.

Créez un utilisateur pour chaque groupe.

Récupérez la dernière version du client ici -> https://rustdesk.com/download.

Sur la console web, cliquez sur "Welcome" puis "Windows EXE".

Capture%20d%E2%80%99%C3%A9cran%20du%202023-07-18%2013-14-49

Dans mon cas le ndd du host et de l'API sont différents. Dans la case Host, j'ai mis le ndd du serveur (ex. : rdesk.mondomaine.fr) et dans la case API l'URL pointant vers le reverse-proxy (ex. : https://rdeskwc.mondomaine.fr). Cliquez ensuite sur "Submit" afin de générer l'autoconfiguration des agents Windows. Copiez la valeur de "Windows EXE" et renommez l'agent téléchargé précédemment avec cette valeur.

Sur le serveur Lancez l'agent précédemment renommé. Une fois lancée, cliquez sur Installer dans le bandeau de droite. Si tout s'est bien passé, vous devez voir le client sur la console web dans la rubrique "Devices".

Capture%20d%E2%80%99%C3%A9cran%20du%202023-07-18%2013-17-05

Ce qui est dommage c'est que l'agent ne remonte pas le nom de l'hôte. Il faut donc l'éditer pour le préciser dans la partie Note. Toujours avec l'option "Edit", nous allons attribuer le serveur au groupe TECHADMIN. Pour cela,il faut attribuer un utilisateur. C'est un peu étrange mais j'imagine que la gestion évoluera. J'attribue donc le serveur à techadmin01.

Étant donné que c'est un serveur, nous mettons en place un mot de passe permanent. Afin de renforcer la sécurité, nous limiterons l'accès à l'adresse IP depuis laquelle nous prendrons la main sur le PC. Sur le client, rdv sur Paramètres > Sécurité puis cochez la case "Utiliser une liste blanche d'IP" et renseignez l'IP en question.

Sur le PC à prendre en main à distance Installez le programme puis rdv sur la console web. Cette fois-ci, nous associons ce PC au groupe TECHLOG en attribuant le PC à techlog01.

Sur le PC tech C'est le PC qui va nous permettre de prendre la main sur les hôtes distants. Pour celui-ci, étant sous Fedora, j'ai installé le RPM et j'ai configuré manuellement les paramètres Serveur ID, API et Clé. Je me suis ensuite connecté en tant que techadmin01 dessus. Le PC a donc été associé automatiquement au groupe TECHADMIN.

Scénarios :

  1. Depuis le compte techadmin01 : connexion au serveur et au PC
  2. Depuis le compte techlog01 : connexion au PC et tentative de connexion sur le serveur
  3. Tentative de connexion depuis le client PC sans compte authentifié vers le serveur

Scénario 1 :

  • Connexion Serveur OK
  • Connexion PC OK

Scénario 2 :

  • Connexion PC OK
  • Tentative de connexion Serveur KO.

Pour la connexion au serveur, nos permissions sont bien effectives comme prévu. Un message explicite s'affiche précisant qu'il n'est pas autorisé de se connecter au serveur depuis cet utilisateur.

Capture%20d%E2%80%99%C3%A9cran%20du%202023-07-18%2014-26-03

Scénario 3 : Tentative de connexion depuis le client PC sans compte authentifié vers le serveur KO

Screenshot_20230718_142905

Si un utilisateur n'est pas authentifié, il ne pourra pas se servir de notre serveur Rustdesk pour tenter de prendre la main sur d'autres clients.

L'article étant déjà très long, je rédigerai un autre billet concernant la version payante. La solution gratuite sans console centrale web me semble amplement suffisante pour une utilisation personnelle. Dans le cadre du travail, celle-ci peut dépanner mais ne permet pas de gérer de manière efficace les clients.

La version payante offre clairement les fonctionnalités indispensables dans le cadre pro bien qu'elle manque cruellement de documentation et de cas d'usage et demande donc un investissement personnel relativement important. À voir aussi la montée en charge. Pour le moment, il n'y a que moi mais comment réagit le serveur lors de multiples connexions simultanées ?

Pour ceux qui ne supportent pas le côté propriétaire, il semble possible de développer sa propre surcouche comme l'indique Rustdesk sur ce fil de discussion https://github.com/rustdesk/rustdesk-server/issues/277 Après tout Vaulwarden s'appuie bien sur un fork de Bitwarden et les clients Bitwarden.

Article précédent Article suivant