Qu’est-ce que SSH ? Secure Shell expliqué simplement
La sécurité joue toujours un rôle majeur sur Internet : c’est pourquoi le protocole de sécurité SSH est fermement intégré dans la pile de protocoles TCP/IP. Le protocole SSH permet aux utilisateurs d’établir une connexion sécurisée entre deux ordinateurs. Le protocole réseau est utilisé depuis 1995 et a été depuis lors révisé et actualisé à plusieurs reprises. Nous expliquons les termes les plus importants en lien avec le protocole SSH et comment fonctionne ce chiffrement.
Une interface système (shell en anglais) est la partie du système d’exploitation avec laquelle les utilisateurs peuvent accéder à l’ordinateur. On entend généralement par-là une interface en ligne de commande textuelle (ou invite de commande, terminal ou console), mais l’interface utilisateur graphique fait également partie du « shell ». La procédure d’établissement d’une connexion est appelée Secure Shell car le protocole établit une connexion sécurisée avec l’interface système (shell) d’un autre ordinateur.
Pourquoi avez-vous besoin de SSH ?
SSH permet à deux ordinateurs d’établir une connexion directe et sécurisée au sein d’un réseau potentiellement non sécurisé, tel qu’Internet. Ceci est nécessaire pour que des tiers ne puissent pas accéder au flux de données et que les données sensibles ne tombent entre de mauvaises mains. Même avant Secure Shell, il était possible d’établir des connexions directes entre deux ordinateurs, mais les applications correspondantes telles que Telnet, Remote Shell ou rlogin n’étaient pas toujours sûres. SSH chiffre la connexion entre deux ordinateurs et permet d’utiliser un deuxième ordinateur à partir d’un seul.
SSH fournit non seulement une connexion chiffrée, mais garantit également que seules des connexions sont établies entre les ordinateurs désignés (de sorte qu’aucune attaque de l’homme du milieu ne soit possible) et que les données correspondantes ne peuvent être manipulées sur le chemin du destinataire. À l’origine, l’accès à distance de l’ordinateur se faisait toujours via les lignes de commande. Elles sont utilisées pour envoyer des commandes à l’appareil distant. Maintenant, il est également possible d’utiliser Virtual Network Computing (VNC) pour dupliquer une interface utilisateur graphique (qui n’est pas toujours disponible sur les serveurs) sur votre propre ordinateur et ainsi contrôler l’autre ordinateur.
SSH possède de nombreuses applications possibles différentes :
- Gestion des serveurs auxquels il n’est pas possible d’accéder localement
- Transfert de fichiers sécurisé
- Création sécurisée de sauvegardes
- Connexion entre deux ordinateurs utilisant le chiffrement de bout en bout
- Télémaintenance d’autres ordinateurs
Le développement de SSH a également influencé d’autres protocoles. Par exemple, le protocole FTP non sécurisé, avec lequel il est possible de télécharger des fichiers sur un serveur et de les télécharger à nouveau à partir de là, a été développé dans le protocole SFTP (SSH File Transfer Protocol).
Un avantage de SSH est que le protocole fonctionne sur tous les systèmes d’exploitation courants. Comme il s’agissait à l’origine d’une application Unix, il est également implémenté par défaut sur toutes les distributions Linux et sur macOS. Mais SSH peut aussi être utilisé sous Windows si vous installez un programme approprié.
SSH vs. OpenSSH
Secure Shell a été créé à l’origine en 1995 en tant que projet open source. La même année, le développeur Tatu Ylönen a fondé une société pour développer le protocole. Le projet initialement open source s’est donc de plus en plus transformé en un logiciel propriétaire. Cependant, la communauté réseau n’a pas accepté cela simplement et a développé en réaction un fork libre basé sur le protocole SSH-1 : OpenSSH. Cependant, comme SSH Communication Security continue également à travailler sur Secure Shell, deux protocoles concurrents coexistent désormais. D’une part, il y a le protocole propriétaire SSH-2 (un développement complémentaire, car les failles de sécurité sont devenues connues dans SSH-1) et d’autre part, il existe OpenSSH.
OpenSSH et le SSH « commercial » sont à peu près équivalents en fonctionnalité et en portée. La différence concerne principalement les coûts, mais aussi le support technique. Si vous optez pour le produit SSH Communication Security, vous bénéficiez également d’une assistance 24h/24 et 7j/7. Cela peut être particulièrement utile pour les grandes entreprises dont les responsables informatiques changent souvent. OpenSSH, d’autre part, a l’avantage de la communauté open source, ce qui signifie que le projet est constamment développé par de nombreux participants.
Comment fonctionne SSH ? Explication
Secure Shell utilise plusieurs techniques de chiffrement et d’authentification. D’une part, cela garantit que les flux de données ne peuvent être ni lus ni manipulés. Par contre, seuls les participants autorisés peuvent se contacter entre eux.
Authentification
Dans un premier temps, le serveur SSH et le client s’authentifient mutuellement. Le serveur envoie un certificat au client pour vérifier qu’il s’agit bien du bon serveur. Ce n’est que lors du premier contact qu’un tiers risque de commuter entre les deux participants et d’intercepter ainsi la connexion. Comme le certificat lui-même est également chiffré, il ne peut pas être imité. Une fois que le client sait quel est le bon certificat, personne d’autre ne peut prétendre contacter le serveur approprié.
Après l’authentification du serveur, le client doit également s’identifier au serveur en tant qu’utilisateur autorisé. Ceci ou la valeur de hachage chiffrée de celui-ci est stockée sur le serveur. Toutefois, cela signifie également que les utilisateurs doivent entrer leur mot de passe chaque fois qu’ils se connectent à un serveur différent au cours de la même session. Par conséquent, il existe une autre possibilité d’authentification côté client, l’utilisation de l’authentification par paire de clefs privée et publique.
La clef privée est créée individuellement pour votre propre ordinateur et sécurisée avec une phrase de chiffrement qui devrait être plus longue qu’un mot de passe classique. La clef privée est stockée exclusivement sur votre propre ordinateur et reste secrète à tout moment. Si vous voulez établir une connexion SSH, entrez d’abord la phrase de chiffrement et ouvrez l’accès à la clef privée.
Sur le serveur (ainsi que sur le client lui-même) il y a aussi des clefs publiques. Le serveur crée un problème cryptographique avec sa clef publique et l’envoie au client. Ce dernier déchiffre à son tour le problème avec sa propre clef privée, renvoie la solution et informe le serveur qu’il est autorisé à établir une connexion légitime.
Au cours d’une session, vous n’avez besoin d’entrer la phrase de chiffrement qu’une seule fois pour vous connecter à un nombre quelconque de serveurs. A la fin de la session, les utilisateurs se déconnectent de leur machine locale pour s’assurer qu’aucun tiers ayant un accès physique à la machine locale ne peut se connecter au serveur.
Chiffrement
Après une authentification mutuelle, les deux participants à la communication établissent une connexion chiffrée. Pour ce faire, une clef est générée pour la session, et expire à la fin de la session. Il ne faut pas confondre cela avec les paires de clefs publiques/privées, qui ne sont utilisées que pour l’échange de clés. La clé utilisée pour le chiffrement symétrique n’est valable que pour cette seule session. Le client et le serveur ont la même clef, donc tous les messages échangés peuvent être chiffrés et déchiffrés. Le client et le serveur créent la clé simultanément, mais indépendamment l’un de l'autre. Dans l’algorithme d’échange de clés, les deux parties utilisent certaines informations publiques et secrètes pour créer la clé.
Une autre forme de chiffrement a lieu avec SSH par la fonction de hachage. Un hachage est une forme de signature des données transmises. À l’aide d’un algorithme, un hachage unique est généré à partir des données. Si les données sont manipulées, la valeur de hachage change également automatiquement. Cela permet au destinataire de voir si les données ont été modifiées par des tiers en cours de route. Les valeurs de hachage sont conçues de telle sorte qu’elles ne peuvent pas être simplement simulées. Idéalement, il n’est jamais possible de créer deux transmissions différentes.
Ports SSH
Les ports TCP sont des terminaux qui ouvrent des serveurs et des clients pour permettre la communication. Comme pour un port, les partenaires de communication reçoivent et envoient les paquets de données via ce port. TCP a un espace d’adressage de 16 bits et donc 65535 ports sont disponibles. Cependant, l’Internet Assigned Numbers Authority (IANA) a attribué quelques ports (exactement 1024) pour certaines applications : le port SSH également. Par défaut, toutes les connexions SSH fonctionnent ainsi sur le port 22.
Comme le port utilisé pour les connexions SSH est généralement connu et apparemment utilisé pour transmettre des données sensibles, le port SSH est une cible de choix pour les cybercriminels. Par conséquent, certains utilisateurs pensent qu’il est logique de déplacer le port SSH. Toutefois, cela n’offre qu’une protection à court terme. Avec un scanner de ports, il est possible de trouver tous les ports utilisés par une machine.
SSH permet également la redirection de port (port forwarding) : le port SSH d’un client ou d’un serveur est utilisé par un autre abonné dans un réseau local pour établir une connexion sécurisée sur Internet. Pour cela, les participants créent un tunnel : les données sont reçues via le port 22 puis transmises au client dans le réseau local.
Clients SSH
Le client SSH est généralement votre propre ordinateur avec lequel vous voulez établir une connexion au serveur. Pour ce faire, vous pouvez ou devez (selon le système d’exploitation) installer un logiciel séparé qui établit une connexion SSH. Ces programmes sont aussi appelés clients SSH. SSH Communication Security provient de Tectia SSH qui contient aussi un serveur logiciel. Il existe également de nombreuses alternatives gratuites, telles que le logiciel open source PuTTy pour Windows et Linux ou lsh qui fonctionne sur tous les systèmes d’exploitation sous Unix.
Certains programmes fournissent aux utilisateurs une interface graphique qui simplifie la configuration et le déploiement de SSH. En principe, Secure Shell peut également être exécuté à partir de la ligne de commande sous macOS et autres systèmes d’exploitation de type Unix, même sans installation supplémentaire.
Serveur SSH
Le serveur SSH est le pendant du client. Ici aussi, le terme est en même temps utilisé pour le logiciel. Une grande partie du logiciel pour les clients fonctionne également sur des serveurs. En outre, il existe également des logiciels conçus exclusivement pour les serveurs SSH. Il est courant de démarrer SSH sur les serveurs au démarrage. Ceci garantit que vous pouvez accéder au serveur depuis l’extérieur via SSH à tout moment.
Il n’est d’ailleurs pas nécessaire que le serveur SSH soit en fait un serveur au sens strict, situé dans un centre de données à distance. Les utilisateurs peuvent également installer un serveur SSH sur leur propre ordinateur à la maison pour bénéficier des avantages du transfert de port, par exemple.