Qu'est-ce que SSH ? | Le protocole Secure Shell (SSH)

Le protocole Secure Shell (SSH) permet d'établir des connexions chiffrées à distance entre des ordinateurs. Il permet également la tunnellisation.

Objectifs d’apprentissage

Cet article s'articule autour des points suivants :

  • Définir le protocole Secure Shell (SSH)
  • Décrire le fonctionnement de SSH et ce qui le rend sûr
  • Comprendre la tunnellisation SSH
  • Expliquer les risques pour la sécurité associés à SSH

Contenu associé


Vous souhaitez continuer à enrichir vos connaissances ?

Abonnez-vous à theNET, le récapitulatif mensuel de Cloudflare des idées les plus populaires concernant Internet !

Consultez la politique de confidentialité de Cloudflare pour en savoir plus sur la manière dont nous collectons et traitons vos données personnelles.

Copier le lien de l'article

Qu'est-ce que le protocole Secure Shell (SSH) ?

Le protocole Secure Shell (SSH) est une méthode permettant d'envoyer en toute sécurité des commandes à un ordinateur sur un réseau non sécurisé. SSH a recours à la cryptographie pour authentifier et chiffrer les connexions entre les appareils. SSH permet également la tunnellisation, ou le transfert de port, c'est-à-dire que les paquets peuvent traverser des réseaux qu'il ne pourrait pas traverser autrement. SSH est souvent utilisé pour contrôler des serveurs à distance, dans le but de gérer l'infrastructure et de transférer des fichiers.

Lorsqu'il est en déplacement, le propriétaire d'un magasin peut donner des instructions à ses employés à distance afin de garantir le bon fonctionnement du magasin pendant son absence. De la même manière, SSH permet aux administrateurs de gérer des serveurs et des appareils à distance. Les anciens protocoles de gestion à distance tels que Telnet acheminaient les commandes des administrateurs dans un format visible par tout le monde. (Imaginez que les employés mettent le propriétaire du magasin sur haut-parleur pendant un appel ; tous les clients du magasin pourraient entendre des instructions confidentielles). Contrairement à Telnet, SSH est sécurisé, d'où le nom de Secure Shell.

Que fait SSH ?

Connexions chiffrées à distance : SSH établit une connexion entre l'appareil d'un utilisateur et une machine éloignée, souvent un serveur. Il utilise le chiffrement pour brouiller les données qui traversent la connexion. Quiconque intercepterait les données ne trouverait que des données statiques, c'est-à-dire des données aléatoires qui n'ont aucun sens tant qu'elles ne sont pas déchiffrées. (Les méthodes de chiffrement appliquées par SSH rendent le déchiffrement extrêmement difficile pour les personnes extérieures).

Possibilité de tunnellisation : dans le domaine des réseaux, la tunnellisation est une méthode permettant de faire transiter un paquet au travers d'un réseau en utilisant un protocole ou suivant un itinéraire qu'il ne pourrait normalement pas emprunter. La tunnellisation consiste à envelopper les paquets* de données avec des informations supplémentaires, appelées en-têtes, afin de modifier leur destination. Les tunnels SSH ont recours à une technique appelée redirection de port pour transférer des paquets d'une machine à l'autre. La redirection de port est expliquée plus en détail ci-dessous.

*Toutes les données qui traversent un réseau sont décomposées en morceaux plus petits  ces morceaux sont appelés « paquet ».

Comment fonctionne SSH ?

TCP/IP

SSH s'exécute parallèlement à la suite de protocoles TCP/IP, sur laquelle repose une grande partie du site Internet. TCP signifie Transmission Control Protocol et IP Internet Protocol. TCP/IP associe ces deux protocoles afin de formater, acheminer et distribuer les paquets. IP indique, entre autres informations, l'adresse IP à laquelle un paquet doit être envoyé (à l'image d'une adresse postale), tandis que TCP indique le port vers lequel un paquet doit être envoyé pour chaque adresse IP (comme l'étage d'un bâtiment ou un numéro d'appartement).

TCP est un protocole de couche de transport : il prend en charge le transport et la distribution des paquets. En général, des protocoles supplémentaires sont utilisés en plus de TCP/IP afin de préparer les données transmises dans un format utilisable par l'application. SSH est un de ces protocoles. (Autres exemples : HTTP, FTP et SMTP).

Cryptographie à clé publique

SSH est « sécurisé » car il intègre le chiffrement et l'authentification dans le cadre d'un processus appelé cryptographie à clé publique. La cryptographie à clé publique est un moyen de chiffrer des données ou de les signer avec deux clés différentes. Une des deux clés, la clé publique, est accessible à tous. L'autre, la clé privée, est gardée secrète par son propriétaire. Les deux clés étant strictement associées, pour établir l'identité du propriétaire de la clé, il est nécessaire d'avoir en sa possession la clé privée qui correspond à la clé publique.

Ces clés « asymétriques », appelées ainsi parce qu'elles ont des valeurs différentes, permettent également aux deux parties de la connexion de négocier des clés symétriques identiques et partagées pour un chiffrement supplémentaire du canal. Une fois cette négociation terminée, les deux parties utilisent les clés symétriques pour chiffrer les données qu'elles échangent.

Dans une connexion SSH, les deux parties disposent d'une paire de clés publique/privée, et chaque partie authentifie l'autre à l'aide de ces clés. C'est ce qui distingue SSH de HTTPS, qui, dans la plupart des cas, ne vérifie que l'identité du serveur web dans le cadre d'une connexion client-serveur. (Parmi les autres différences, citons le fait que HTTPS ne permet généralement pas au client d'accéder à la ligne de commande du serveur et que les pare-feu bloquent parfois SSH, mais presque jamais HTTPS).

Authentification

Bien que la cryptographie à clé publique permette d'authentifier les appareils connectés selon SSH, un ordinateur correctement sécurisé exigera toujours l'authentification de la personne qui utilise SSH. Il s'agit souvent de saisir un nom d'utilisateur et un mot de passe.

Une fois l'authentification établie, la personne peut exécuter des commandes sur la machine distante comme si elle le faisait sur sa propre machine en local.

Tunnellisation SSH, ou redirection de port

La redirection de port est comparable au transfert d'un message entre deux personnes. Bob peut envoyer un message à Alice, qui le transmet à son tour à Dave. De la même manière, la redirection de port transfère les paquets destinés à une adresse IP et à un port d'une machine donnée vers une adresse IP et un port d'une autre machine.

Imaginons par exemple qu'un administrateur veuille apporter une modification à un serveur situé dans un réseau privé dont il assure la gestion, et qu'il veuille le faire à partir d'un site distant. Pour des raisons de sécurité, ce serveur ne reçoit que des paquets provenant d'autres ordinateurs au sein du réseau privé. L'administrateur a alors la possibilité de se connecter à un deuxième serveur au sein du réseau, un serveur qui reçoit sans problème du trafic provenant d'Internet, et d'utiliser la redirection de port SSH pour se connecter au premier serveur. Du point de vue du premier serveur, les paquets de l'administrateur proviennent de l'intérieur du réseau privé.

Utilisation du protocole SSH

Le protocole SSH est présent dans les systèmes d'exploitation Linux et Mac. Sur les machines Windows, il arrive qu'il soit nécessaire d'installer une application client SSH. Sur les ordinateurs Mac et Linux, les utilisateurs peuvent ouvrir l'application Terminal et saisir directement les commandes SSH.

À quoi sert SSH ?

Techniquement, SSH peut transmettre n'importe quelle donnée arbitraire sur un réseau, et la tunnellisation SSH peut être mise en place pour une multitude d'objectifs. Toutefois, les cas d'utilisation les plus courants de SSH sont les suivants :

  • Gestion à distance des serveurs, de l'infrastructure et des ordinateurs des collaborateurs
  • Transfert de fichiers en toute sécurité (SSH est plus sûr qu'un protocole non chiffré tel que FTP)
  • Accès à des services dans le cloud sans exposer les ports d'une machine locale à l'Internet
  • Connexion à distance aux services d'un réseau privé
  • Contournement des restrictions d'un pare-feu

Quel port le protocole SSH utilise-t-il ?

Le port 22 est le port par défaut pour le protocole SSH. Parfois, les pare-feu bloquent l'accès à certains ports sur les serveurs situés derrière le pare-feu, mais laissent le port 22 ouvert. SSH est donc utile pour accéder à des serveurs de l'autre côté du pare-feu : les paquets dirigés vers le port 22 ne sont pas bloqués et peuvent ensuite être transférés vers n'importe quel autre port.

Existe-t-il des risques de sécurité associés au protocole SSH ?

N'importe quel protocole peut être utilisé à mauvais escient par des personnes malveillantes, et la nature chiffrée de SSH ainsi que ses capacités de tunnellisation le rendent particulièrement intéressant aux yeux des pirates. SSH a été utilisé dans un certain nombre d'attaques signalées dans le but d'extraire des données privées, d'ouvrir des portes dérobées vers un réseau sécurisé et même d'obtenir l'accès à la racine de serveurs.

Dans certains types d'attaques, des clés SSH sont volées pour accéder à des ordinateurs et des serveurs privés. En réalité, la gestion des clés SSH est un problème de sécurité majeur pour les grandes organisations, car leurs nombreux serveurs peuvent utiliser des milliers, voire des millions de clés, et le suivi et la mise à jour de ces clés sont pratiquement impossibles. Lorsqu'un acteur malveillant obtient une clé, il peut bénéficier d'un accès pendant des mois ou des années.

Quelle est la différence entre SSH et les autres protocoles de tunnellisation ?

Une des principales différences entre SSH et les autres protocoles de tunnellisation concerne la couche OSI sur laquelle ils opèrent.GRE, IP-in-IP et IPsec sont tous des protocoles de la couche réseau. Ils ne connaissent pas les ports (un concept propre à la couche de transport) et opèrent plutôt entre des adresses IP. (La couche OSI exacte de SSH n'est pas strictement définie, mais la plupart des sources la décrivent comme un protocole de la couche applicative, à savoir la couche 7).

Une autre différence tient à l'utilisation de TCP par SSH. TCP, comme il est décrit ci-dessus, est un protocole de la couche de transport, et l'un des principaux utilisés sur Internet. Il existe un autre protocole de couche de transport largement utilisé, il s'agit d'UDP, User Datagram Protocol. UDP est un protocole qui assure le transport « au mieux », c'est-à-dire qu'il envoie des paquets sans en garantir la remise. Il est donc plus rapide mais il arrive qu'il perde les paquets. Bien que TCP soit plus lent qu'UDP, il garantit la livraison de tous les paquets dans l'ordre et est donc plus fiable.

IPsec utilise exclusivement UDP au lieu de TCP afin de permettre aux paquets IPsec de traverser les pare-feu. Par conséquent, les tunnels IPsec sont généralement plus rapides que les tunnels SSH, mais peuvent perdre des paquets en transit. GRE et IP-in-IP peuvent être utilisés avec TCP ou UDP.

Enfin, le protocole SSH ne chiffre qu'une application à la fois, et non l'ensemble du trafic entrant et sortant d'un appareil. En cela, SSH se distingue d'IPsec qui crypte tout le trafic réseau, quelle que soit l'application d'où il provient. C'est la raison pour laquelle SSH n'est pas utilisé pour la mise en place de VPN.

Comment Cloudflare Zero Trust contribue à rendre-t-il SSH plus sûr ?

Si SSH est largement utilisé, il n'en reste pas moins risqué d'exposer les ports d'un serveur à Internet. Cloudflare Zero Trust permet aux organisations de rendre leurs serveurs SSH disponibles sur Internet sans risquer d'ouvrir ces ports entrants. Les serveurs peuvent être connectés en toute sécurité au réseau Cloudflare. Les administrateurs et autres utilisateurs peuvent ensuite accéder au serveur via Cloudflare en installant un client Cloudflare WARP sur leur appareil ; pour en savoir plus, cliquez ici.