Le protocole SSH

Le SSH, pour Secure SHell permet de répondre à la principale problématique posée par la sécurité des informations : la confidentialité.

I. Présentation générale

En effet, grâce à se protocole, il est possible de chiffrer des données par un système de clés privées et publiques. Ces données transitent dans un « tunnel« , une sorte de canal sécurisé où il est impossible de savoir ce qu’il se passe à l’intérieur.

Le SSH a été mit au point par un finlandais, Tatu Ylönen.
La version 1 du SSH (SSH1) qui été proposée dès 1995 était une alternative aux shells comme le Telnet, rsh, ou encore rlogin. Toutefois, cette version du protocole avait une vulnérabilité qui permettait à un hacker d’insérer des données dans le flux sécurisé

La version 2 et naturellement l’évolution majeure (en plus d’avoir de nombreux correctifs de sécurité) de la première monture du SSH ; Cette version inaugure le transfert de fichiers de façon sécurisée avec le protocole FTP. On parle alors de SFTP, pour  « Secure File Transfert Protocol ».
Bien d’autres choses ont été ajoutées / modifiées / supprimées de cette version 2 du SSH – La liste est longue…
Sachez qu’aujourd’hui encore, c’est cette version 2 qui est utilisée quotidiennement.


II. Fonctionnement du protocole SSH

Un client (un utilisateur ou une machine) peut ouvrir une session interactive sur une machine distante (un serveur principalement) lui permettant d’envoyer des commandes et même des fichiers de manière sécurisée. Pour que cette connexion soit établie entre les hôtes, une authentification mutuelle est nécessaire pour s’assurer que les machines qui communiquent entres-elles soit bien les machines « réelles ». C’est-à-dire que l’identité de chacune des machines est vérifiée pour s’assurer que l’on s’adresse à la bonne machine.
L’usurpation d’identité est donc quasiment impossible par se protocole, ni même l’écoute du réseau par un capteur de paquets ou un analyseur de trames… En effet, même si un pirate « capture » les paquets de ce flux, il ne pourra les déchiffrer sans avoir les paires de clés.

La mise en place d’un canal sécurisé

1. Négociation de l’algorithme de chiffrement.

Pour permettre la communication entre les deux machines, il faut tout d’abord commencer une phase de négociation entre le client, et le destinataire pour s’accorder sur l’algorithme de chiffrement à utiliser. Le protocole SSH est prévu pour pouvoir fonctionner avec de nombreux algorithmes de chiffrement, il faut donc une phase de mise en accord sur l’algorithme à utiliser entre les parties.

2. Etablissement de la connexion

Une fois l’algorithme de chiffrement trouvé en accord entre les deux hôtes, le serveur envoie sa clé publique d’hôte (Host Key) à son client. Le client génère alors une clé de session d’un nombre de bits pré-définis (128, 256, 512, 1024, 2048, 4096. Plus les bits sont importants, plus « dure » sera la clé, mais elle sera plus longue à déchiffrer pour les deux parties) qu’il chiffre grâce à la clé publique reçue du serveur.
Le client envoie cette clé générée au serveur, ainsi que l’algorithme de chiffrement utilisé. Pour rappel, cet algorithme de chiffrement est connu des deux parties communicantes.

Le serveur reçoit la clé publique du client et la déchiffre grâce à sa clé privée.
Si les clés sont reconnues, le serveur envoie un message de confirmation chiffré avec la clé publique de son client.

Une fois l’échange des clés terminé et positif entre le client et le serveur, la communication est alors chiffrée grâce à l’algorithme prédéfini par les hôtes et en utilisant les clés publiques de chacune des parties.

3. L’authentification dite « simple »

Lorsque la connexion est établie entre les parties, le client doit s’identifier (phase d’authentification) sur le serveur. La principale méthode d’authentification est la suivante :

  • Le client envoie un nom d’utilisateur et un mot de passe lors de l’établissement de la connexion ;
  • Le serveur vérifie si l’utilisateur en question peut obtenir un accès à la machine si le mot de passe fourni est valide.
    Si les vérifications se sont passées sans problèmes, l’authentification est alors réussie.
    Sinon, l’accès au serveur est refusé et la connexion est immédiatement interrompue.

4. L’authentification par clés

Une autre méthode existe pour s’authentifier. Elle s’appuie sur les clés des hôtes.
Pour rappel, ces clés ont été générées avant la connexion (on parle d’une paire de clés, comprenant une clé publique et une clé privée) :

  • Le serveur crée un « challenge » avec sa clé publique pour tester le client.
  • Le client reçoit ce challenge.
    Son but : Le déchiffrer avec sa clé privée (client).
  • Le client renvoie sa réponse lorsqu’il a réussi à déchiffrer le challenge
  • Le serveur autorisera l’accès au client si et seulement si la réponse reçu est positive.


III. Conclusion

Le protocole SSH est un moyen fiable et sûr de protéger l’accès à ses serveurs et qui plus simple à mettre en place. Grâce à ce protocole, il devient très difficile d’usurper l’identité d’une machine / d’une personne grâce au système de clé publique et privée uniques générée aléatoirement (en plus d’être chiffrée).

Ainsi, pour établir une connexion entre un client et un serveur en SSH, l’authentification (et donc l’accès) ne sera possible que lorsque la vérification des clés entre les parties sera en adéquation.
Dans le cas contraire, la connexion est coupée (et pour aller plus loin, il est même possible de black-lister les clés indésirables, corrompues ou autres) et l’authentification rejetée.

Julien H

Passionné depuis toujours par l'informatique, je transforme ma passion en expertise. J'utilise quotidiennement les outils et systèmes Microsoft. Je ne délaisse pas mon côté ouvert, notamment via l'utilisation des OS Debian et Archlinux. L'infosec m'ouvre les yeux sur les enjeux actuels et futurs de l'IT.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Close
Close