• 8 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 1/3/24

Sécurisez votre connexion VNC avec SSH

Vous avez téléchargé, installé et configuré votre logiciel VNC. Il est temps désormais de se pencher sur la sécurité.

Activez le tunnel SSH sur votre machine

La solution la plus simple pour sécuriser ce flux est de passer par un tunnel SSH. Cette opération est possible lorsque le serveur TightVNC héberge un service SSH.

Sous Linux, le serveur OpenSSH existe depuis de nombreuses années et reste la référence pour le service SSH. Généralement il est même installé par défaut sur les postes Linux.

Sous Windows, depuis la mise à jour de Septembre 2017 de Windows 10, il est possible d’installer et d’activer un serveur et un client SSH dérivé également de OpenSSH.

Cette opération s’effectue depuis le panneau de configuration, dans l’onglet « Applications » et sur le lien « Gérer les fonctionnalités facultatives ».

Capture de la fenêtre de gestion des fonctionnalités facultatives listées avec leur taille respective en Mo.
Gérez les fonctionnalités facultatives

Qu'est ce que le Tunneling SSH ?

Le processus de « Tunneling SSH » consiste globalement à initier en premier lieu une connexion ssh sécurisée car cryptée entre le client et le serveur, généralement sur le port TCP 22. Une fois cette connexion établie, le client VNC va rediriger son port de connexion vers le port SSH du serveur. Le flux entre le client VNC et le serveur sera donc encapsulé dans le flux SSH entre ces deux machines.

Illustration de la connexion entre le client et le serveur VNC via un tunnel SSH crypté.
Connexion sécurisée par tunnel SSH crypté

La plupart des clients VNC supportent le tunnel SSH pour se connecter au serveur. C’est aussi le cas du client Java de TightVNC,

Attention cependant, car pour établir la connexion SSH, le client et le serveur doivent utiliser les mêmes algorithmes de chiffrement et de signature. Or, vous l’avez peut-être remarqué, le client TighVNC Java Viewer est un peu vieillot. En effet, sa dernière version, la 2.6, date de 2012. 

L’algorithme de chiffrement et de signature implémenté dans TightVNC Java Viewer est le “RSA avec SHA-1” (RSA pour le chiffrement et SHA-1 pour la signature). Mais une faille a été découverte en 2017 sur l’algorithme de signature et il a donc été désactivé par défaut dans les dernières versions de OpenSSH au profit de SHA-2, une version plus sécurisée. 

Cela signifie que si vous utilisez le client Java TightVNC pour créer un tunnel SSH, celui-ci va vouloir utiliser SHA-1 pour créer une signature, mais de l’autre côté, le serveur SSH n’acceptera pas d’utiliser ce type de signature.

Le plus simple ici est donc de forcer le serveur SSH à utiliser l'algorithme SHA-1 malgré ses relatives faiblesses.

Forcez le serveur SSH à utiliser l’algorithme SHA-1

Pour mettre en place un tunnel SSH, il suffit d’aller sur votre serveur SSH (c’est-à-dire la machine dont vous voulez prendre le contrôle) et de modifier le fichier sshd_config. Sur Windows le fichier se trouve dans C:\ProgramData\SSH\sshd_config, alors que dans une machine Linux il est dans /etc/ssh/sshd_config.

Dans ce fichier ajoutez les lignes suivantes pour réactiver SHA-1 :

KexAlgorithms diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa

Il faut ensuite redémarrer le service SSH :

  • Avec “systemctl restart sshd” dans Linux ;

  • Dans le gestionnaire des services sous Windows en cliquant sur Redémarrer :

Description de l’image : Impression d’écran de la fenêtre de gestionnaire des services sous Windows.
Fenêtre de gestionnaire des services sous Windows

Voilà après ces quelques manipulations vous devriez pouvoir prendre le contrôle de votre machine en utilisant un tunnel SSH qui cryptera tout le trafic VNC.

Pour cela dans le client Java TightVNC, il suffit de cocher la case concernée et d’indiquer l’adresse et le port SSH du serveur. Vous devrez également préciser un nom d’utilisateur.

Impression d'écran de la fenêtre TightVNC Connection
Activation du SSH Tunnelling sur le client Java de TightVNC

À noter qu’il faudra alors renseigner deux mots de passe distincts :

  • Le mot de passe de la connexion SSH ;

  • Le mot de passe de la connexion VNC.

SSH, a ici une double fonction : crypter toute la communication et authentifier l’utilisateur qui souhaite se connecter à distance.

Si on souhaite pousser la sécurisation encore plus loin, on pourrait avoir besoin d’une authentification multifacteur ou authentification forte et ça tombe bien puisque SSH permet aussi cela.

D’accord mais c’est quoi l’authentification forte ? L’authentification que je viens de mettre en place avec un compte utilisateur et un mot de passe n’est pas assez forte ?

Dans certains cas, par exemple pour se connecter à distance à une machine hébergeant des données très sensibles, un mot de passe très robuste pourrait ne pas être suffisant pour garantir qu’aucun intrus n’accède aux données sensibles.

Par exemple, il suffirait qu’une personne malintentionnée arrive à dérober les identifiants de connexion et elle pourrait se connecter à la machine distante. Pour éviter cela et garantir plus de sécurité, on peut alors avoir recours à de l’authentification multifacteur.

En résumé

  • L’authentification via mots de passe incluse dans TightVNC ne suffit pas :  l'ensemble du flux VNC reste vulnérable sans un tunnel SSH.

  • Configurer un tunnel SSH sous Linux ou Windows augmente la sécurité en cryptant tout le flux entre le client et le serveur VNC.

  • Il est essentiel de mettre à jour les méthodes de chiffrement ; TightVNC Java utilise SHA-1, désormais obsolète, nécessitant soit une configuration spécifique du serveur SSH, soit l'utilisation d'un client plus récent.

  • L'authentification multifacteur via SSH offre une sécurité renforcée pour la prise de contrôle à distance d’une machine.

Maintenant que vous avez appris à sécuriser votre connexion VNC, apprenez dans le chapitre suivant à configurer SSH pour activer l’authentification multifacteur.

Example of certificate of achievement
Example of certificate of achievement