Le protocole SSH (Secure Shell) permet l'établissement de connexions chiffrées à distance entre des ordinateurs. Il permet également l'utilisation de la tunnellisation.
Cet article s'articule autour des points suivants :
Contenu associé
Qu'est-ce que l'authentification ?
Contrôle des accès
Sécurité des collaborateurs en télétravail
Sécurité Zero Trust
Abonnez-vous à theNET, le récapitulatif mensuel par Cloudflare des informations les plus populaires sur Internet !
Copier le lien de l'article
Le protocole Secure Shell (SSH) est une méthode permettant d'envoyer, de manière sécurisée, des commandes à un ordinateur sur un réseau non sécurisé. SSH utilise la cryptographie pour authentifier et chiffrer les connexions entre les appareils. SSH permet également la tunnellisation, ou la redirection de ports, permettant aux paquets de traverser des réseaux qu'ils ne pourraient pas traverser autrement. SSH est souvent utilisé pour contrôler des serveurs à distance, pour la gestion de l'infrastructure et les transferts de fichiers.
Lorsqu'il est en déplacement, le propriétaire d'un magasin peut transmettre des instructions à son personnel à distance, afin de veiller au bon fonctionnement de l'enseigne 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 tous. À titre de comparaison, imaginez que les employés du magasin mettent le propriétaire sur haut-parleur pendant un appel ; tous les clients présents dans le magasin pourraient alors entendre des instructions destinées à rester privées.) Contrairement à Telnet, SSH est sécurisé, d'où le nom « Secure Shell ».
Connexions chiffrées à distance : SSH permet d'établir une connexion entre l'appareil d'un utilisateur et une machine éloignée, souvent un serveur. Le protocole utilise le chiffrement pour brouiller les données qui transitent par la connexion. Quiconque parviendrait à intercepter les données ne verrait que des informations semblables à du bruit blanc : des données aléatoires, qui n'ont aucun sens tant qu'elles n'ont pas été déchiffrées. (Les méthodes de chiffrement utilisées par le protocole SSH rendent le déchiffrement extrêmement difficile pour toute personne extérieure.)
Mise en œuvre de la tunnellisation : dans le domaine des réseaux, la tunnellisation est une méthode permettant d'acheminer des paquets sur un réseau en utilisant un protocole ou en empruntant un chemin qui serait normalement inaccessible à ces données. La tunnellisation consiste à encapsuler 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'un ordinateur à un autre. La redirection de port SSH est expliquée plus en détail ci-dessous.
*Toutes les données qui transitent sur un réseau sont décomposées en fragments plus petits, appelés « paquets ».
SSH s'exécute parallèlement à la suite de protocoles TCP/IP, sur laquelle repose une grande partie de l'Internet. TCP/IP assure le transport et la distribution des paquets de données. L'utilisation de TCP distingue SSH des autres protocoles de tunnellisation, dont certains utilisent le protocole UDP, plus rapide, mais moins fiable.
Ces clés « asymétriques », appelées ainsi parce que leurs valeurs sont différentes, permettent également aux deux parties de la connexion de négocier des clés symétriques identiques et partagées, afin de renforcer le chiffrement sur l'ensemble 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 le protocole SSH du protocole HTTPS qui, dans la plupart des cas, vérifie uniquement l'identité du serveur web dans une connexion entre client et serveur. (Parmi les autres différences, citons le fait que le protocole 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.)
Bien que la cryptographie à clé publique assure l'authentification des appareils connectés dans le protocole SSH, un ordinateur correctement sécurisé exigera tout de même l'authentification de la personne utilisant SSH. Cela nécessite souvent la saisie d'un nom d'utilisateur et d'un mot de passe.
Une fois l'authentification terminée, l'utilisateur peut exécuter des commandes sur l'ordinateur distant comme s'il le faisait sur son ordinateur local.
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'un ordinateur donné vers une adresse IP et un port d'un autre ordinateur.
Imaginons par exemple qu'un administrateur veuille apporter une modification à un serveur connecté à un réseau privé dont il assure la gestion, et qu'il souhaite le faire depuis un site distant. Pour des raisons de sécurité, toutefois, ce serveur ne reçoit que des paquets provenant d'autres ordinateurs de ce réseau privé. L'administrateur a alors la possibilité de se connecter à un deuxième serveur du réseau, ouvert à la réception du trafic Internet, puis 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é.
Le protocole SSH est présent dans les systèmes d'exploitation Linux et Mac. Sur les ordinateurs exécutant 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.
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 scénarios d'utilisation les plus courants de SSH sont les suivants :
Le port 22 est le port par défaut utilisé 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. Le protocole SSH est donc utile pour accéder à des serveurs situés 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.
Puisque l'accès SSH est généralement associé à des privilèges élevés, tels que la capacité d'installer des applications sur un serveur ou de supprimer, de modifier ou d'extraire des données, SSH peut être dangereux entre les mains d'un acteur malveillant, ou même celles d'un collaborateur interne bien intentionné. Le protocole SSH a été utilisé dans un certain nombre d'attaques documentées dans le but d'exfiltrer des données privées, d'ouvrir des portes dérobées vers un réseau sécurisé et d'obtenir l'accès à la racine de serveurs.
Le protocole SSH peut également passer à travers les pare-feu qui ne bloquent pas le port 22 (comme c'est le cas pour beaucoup), permettant aux acteurs malveillants de s'introduire sur des réseaux sécurisés.
Les acteurs malveillants peuvent également dérober des clés SSH afin d'accéder à des ordinateurs et des serveurs privés. En réalité, la gestion des clés SSH constitue un problème de sécurité majeur pour les grandes entreprises, car leurs nombreux serveurs peuvent utiliser des milliers, voire des millions de clés, et il est pratiquement impossible de suivre et de mettre à jour ces clés manuellement. Les clés SSH n'expirent pas à moins d'être explicitement révoquées. Aussi, une fois qu'un acteur malveillant a obtenu une clé, il peut bénéficier d'un accès permanent pendant des mois, voire des années.
L'une des principales différences entre le protocole 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. À ce titre, ils ne tiennent pas compte des ports (qui sont 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 décrivent SSH comme un protocole de la couche application (couche 7), comme HTTP, FTP et SMTP.
Une autre différence réside dans l'utilisation du protocole TCP par SSH. TCP, comme nous l'avons décrit ci-dessus, est un protocole de la couche transport, et l'un des principaux protocoles utilisés sur Internet. UDP (User Datagram Protocol) est un autre protocole de la couche transport, fréquemment utilisé, lui aussi. UDP est un protocole de transport qui opère « au mieux », c'est-à-dire qu'il envoie des paquets sans en garantir la remise. Il est plus rapide, mais peut entraîner la perte de 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 le protocole UDP, au lieu du protocole TCP, afin de permettre aux paquets IPsec de franchir les pare-feu. Par conséquent, les tunnels IPsec sont généralement plus rapides que les tunnels SSH, mais peuvent entraîner la perte de paquets pendant le transit. GRE et IP-in-IP sont utilisables 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 différencie d'IPsec, qui chiffre l'ensemble du trafic réseau, quelle que soit l'application dont il provient. C'est la raison pour laquelle SSH n'est pas utilisé pour la configuration de VPN.
Bien que SSH comporte certains risques liés à la sécurité, de nombreuses entreprises en dépendent pour rester productives. Pour atténuer ces risques, Cloudflare propose le protocole SSH avec Access for Infrastructure dans le cadre de sa plateforme SASE. Ce service applique les concepts de la sécurité Zero Trust au protocole SSH, offrant aux entreprises un contrôle granulaire sur la manière dont les utilisateurs peuvent se connecter à leurs serveurs SSH. Il limite les actions que peut effectuer un utilisateur, atténuant ainsi les éventuelles conséquences résultant de l'utilisation non autorisée du protocole SSH par un acteur malveillant ou un collaborateur interne.
Le protocole SSH intégré à Access for Infrastructure élimine également la nécessité de gérer les clés SSH (qui est une tâche réellement complexe, comme nous l'avons décrit plus haut). À la place, les entreprises peuvent utiliser des certificats SSH à durée de vie limitée, émis par une autorité de certification gérée par Cloudflare.
Cloudflare permet également aux entreprises de surveiller et de journaliser l'accès et l'utilisation du protocole SSH. Cette fonctionnalité est essentielle, tant pour la récupération des incidents que pour la conformité aux réglementations.
En savoir plus sur SSH associé à Access for Infrastructure.
SSH (Secure Shell) est un protocole réseau qui établit des connexions chiffrées entre des ordinateurs, permettant un accès distant sécurisé. Il utilise le port TCP 22 et fournit des fonctions d'authentification, de chiffrement et d'intégrité permettant de protéger les données transmises sur les réseaux non sécurisés.
Les clés SSH permettent l'authentification des utilisateurs grâce à la cryptographie asymétrique, qui utilise une paire de clés publique-privée à la place des mots de passe traditionnels. La clé privée reste sur le système du client, tandis que la clé publique réside sur le serveur, permettant une authentification sécurisée sans transmission des informations d'identification réelles sur le réseau.
La tunnellisation SSH établit une connexion sécurisée par laquelle peuvent transiter d'autres données, permettant le chiffrement efficace du trafic non chiffré. Cela permet d'assurer la redirection sécurisée des ports et d'éviter que des informations sensibles ne soient interceptées pendant leur transmission.
Telnet transmet des données en texte clair, tandis que SSH chiffre toutes les communications afin d'empêcher toute écoute clandestine ainsi que les attaques de l'homme du milieu. En raison de ses fonctionnalités de sécurité supérieures, SSH a effectivement remplacé Telnet comme norme pour l'accès à distance aux serveurs.
Les types de clés SSH les plus courants sont RSA, ECDSA et EdDSA, qui offrent différents niveaux de sécurité et de performances. Ed25519, une version du schéma de signature EdDSA utilisant une courbe elliptique, gagne en popularité, car il offre une sécurité renforcée, avec des longueurs de clé réduites et des opérations plus rapides.