SSH : comment ça marche

Bloqueur de pub détectée - Vous bloquez l'affichage des publicités.
Pour soutenir le site, merci de bien vouloir laisser les publicités s'afficher.

Plus d'informations : Comment désactiver les bloqueurs de publicité sur un site internet.

SSH (Secure Shell ou Secure Socket Shell) est un protocole de communication qui permet d'accéder à une machine distante.
L'accès à la machine se fait depuis un client SSH qui communique avec un serveur SSH.
Le but de ce protocole qui remplace telnet est d'éviter le sniff et attaques MiTM dans l'administration de machines distantes.

Le client SSH peut-être sur Windows, Linux, MacOSX, Android ou n'importe quel OS.
C'est une des méthodes de contrôle des machines UNIX les plus utilisées par les administrateurs.

Dans cet article, nous allons voir le principe de SSH.
Pourquoi est-ce un protocole sécurisé, comment la connexion SSH s'établit, bref SSH comment ça marche.

SSH : comment ça marche

Qu'est-ce que SSH ?

SSH est donc un protocole de communication qui vise à rendre la communication sûre.
Généralement, un administrateur l'utilise pour prendre la main sur une machine distante.

L'établissement de la connexion SSH se fait avec le processus suivant :

  • Un client SSH se connecte à serveur SSH installé sur une machine distante. Par exemple un serveur sur internet ou une autre machine du LAN. Il peut aussi s'agir d'un équipement réseau comme un routeur
  • On s'authentifie soit avec une clé sécurisée, soit par mot de passe
  • L'administrateur ouvre alors un shell et peut passer des commandes sur la machine distante.
Exemple de connexion SSH

En fait le protocole SSH permet d'aller plus loin comme transférer des fichiers ou être utilisé pour la communication avec d'autres applications.
Par exemple, on peut utiliser la prise en main VNC pour passer à transfert SSH.
Pourquoi ?
Car la communication entre client et le serveur SSH est chiffrée.
Ainsi un attaquant ne peut pas sniffer les communications afin de voler des données.

Schéma de connexion SSH

Les caractéristiques d'une connexion sécurisée SSH :

  • Le port réseau par défaut du serveur SSH est le port 22
  • Une authentification est obligatoire par mot de passe ou échange de clé sécurisée
  • Génération d'une clé de session pour chiffrer toute la communication.

L'établissement de la connexion SSH - comment ça marche

Le protocole fonctionne dans le modèle client-serveur.
Ce qui signifie que la connexion est établie par le client SSH se connectant au serveur SSH.
Le client SSH pilote le processus de configuration de la connexion et utilise la cryptographie à clé publique pour vérifier l'identité du serveur SSH. Après la phase de configuration, le protocole SSH utilise un algorithme de chiffrement pour garantir la confidentialité et l'intégrité des données échangées entre le client et le serveur.

Trois phases se succèdent :

  1. L'authentification du client SSH auprès du serveur
  2. une pré-phase de chiffrement symétrique où les deux parties se mettent d'accord sur l'algorithme à utiliser pour chiffrer la session SSH
  3. La session SSH est établit
On peut donc avoir deux pairs de clés, une pour authentification (clés SSH), l'autre pour la session SSH.

L'authentification

SSH supporte deux méthodes d'authentification

  • par mot de passe
  • par une pair de clés. On parle de clés SSH.

Les clés SSH peuvent avoir jusqu'à 4096 bits de longueur, ce qui les rend longues, complexes et difficiles à pirater par force brute. Ces clés font généralement au moins 1024 bits, ce qui est l'équivalent de sécurité d'un mot de passe d'au moins 12 caractères.
Les avantages et inconvénients sont évoqués dans la page suivante :

Les paires de clés SSH peuvent être utilisées pour authentifier un client auprès d'un serveur.

Le client crée une paire de clés, puis télécharge la clé publique sur tout serveur distant auquel il souhaite accéder. Celui-ci est placé dans un fichier appelé authorized_keys dans le répertoire ~/ .ssh du répertoire de base du compte utilisateur sur le serveur distant.

Une fois le chiffrement symétrique établi pour sécuriser les communications entre le serveur et le client, le client doit s'authentifier pour pouvoir accéder.
Le serveur peut utiliser la clé publique de ce fichier pour crypter un message de défi adressé au client.
Si le client peut prouver qu'il a pu déchiffrer ce message, il a démontré qu'il possède la clé privée associée.
Le serveur peut alors configurer l'environnement pour le client.

Chiffrer la communication

Afin de sécuriser la transmission des informations, SSH emploie un certain nombre de différents types de techniques de manipulation de données à divers points de la transaction.

  • Le client et le serveur s'accordent sur l'algorithme de chiffrement symétrique à utiliser et génèrent la clé ou les clés de chiffrement qui seront utilisées pour la session SSH. Leur échange se fait à travers l'algorithme Diffie-Hellman. SSH permet un chiffrement symétrique ou asymétrique.
  • Puis garantit l'intégrité des données transmises en utilisant des algorithmes de hachage standard

Je rappelle qu'il existe un article complet sur le chiffrement des données :

Symétrique

Le chiffrement symétrique est une méthode où les messages entre le client SSH et le serveur SSH sont chiffrés et déchiffrés à l'aide d'une clé secrète.
Le chiffrement symétrique est souvent appelé clé partagée (shared key) ou secret partagé (shared secret).
On utilise alors qu'une seule clé, ou parfois une paire de clés où une clé peut facilement être calculée à l'aide de l'autre clé.

La clé secrète est créée via un processus appelé algorithme d'échange de clés.
Cet échange a pour résultat que le serveur et le client arrivent tous deux à la même clé indépendamment en partageant certaines données publiques et en les manipulant avec certaines données secrètes.

Connexion SSH avec clé symétrique

SSH supporte une variété de systèmes de chiffrement symétriques différents, y compris AES, Blowfish, 3DES, CAST128 et Arcfour.

Asymétrique

La seconde méthode communication SSH consiste à utiliser des pairs de clairs.
Pour rappel :

  • La clé publique sert à chiffrer les données
  • Seule la clé privée permet de déchiffrer les données

Le chiffrement asymétrique n'est pas utilisé pour chiffrer toute la session SSH. Il n'est utilisé que pendant l'algorithme d'échange de clés de chiffrement symétrique.
Avant d'initier une connexion sécurisée, les deux parties génèrent des paires de clés publiques-privées temporaires et partagent leurs clés privées respectives pour produire la clé secrète partagée.

Connexion SSH avec clé asymétrique

Hachage des messages

Une fois la session SSH établie, il y a donc communication entre client et le serveur.

SSH s'appuie ensuite sur HMAC pour garantir que les messages échangées sont intacts et non modifié.
Pour faire simple, à chaque message, le hash de ce dernier est aussi envoyé.

Pour cela, un algorithme HMAC est choisi parmi ceux proposés par le client SSH. Le premier de cette liste que le serveur prend en charge sera utilisé.
Chaque message envoyé après la négociation du chiffrement doit contenir un MAC afin que l'autre partie puisse vérifier l'intégrité du paquet.
Le MAC est calculé à partir du secret partagé symétrique, du numéro de séquence du paquet du message et du contenu réel du message.

Le MAC lui-même est envoyé en dehors de la zone cryptée symétriquement en tant que partie finale du paquet. Les chercheurs recommandent généralement cette méthode pour crypter les données d'abord, puis pour calculer le MAC.

Sécurité SSH

L'empreinte digitale de l'hôte

Lorsque vous vous connectez pour la première e fois en SSH, vous pouvez observer ce type de message Security Alert.

Security Alert sur PuTTY à la connexion SSH

Ou encore un message authentification of host.

Fingerprint à la connexion SSH

A chaque fois on vous propose d'enregistrer "the server fingerprint".
C'est à dire l'empreinte digitale de l'hôte.

En clair donc, le client SSH peut stocker une empreinte numérique du serveur.
Cette dernière se base sur la clé publique de l'hôte, généralement stockée dans /etc/ssh/ssh_host_rsa_key.pub.
Le but de ce mécanisme de sécurité est de s'assurer que vous vous connectez bien au serveur distant auquel vous pensez.

Ainsi lors de la connexion si l'empreinte digitale change, cela peut indiquer plusieurs cas :

  • La machine à laquelle vous vous connectez a changé sa clé publique. Ce n'est peut-être pas une mauvaise chose. Par exemple, cela se produit lors de la réinstallation de SSH.
  • Cela peut également indiquer que vous vous connectez à une machine différente sur le même domaine / IP. Cela se produit lorsque vous vous connectez via quelque chose comme l'équilibreur de charge.
  • Enfin vous êtes la cible d'une attaque de type man-in-the-middle, où l'attaquant intercepte et/ou redirige d'une manière ou d'une autre votre connexion SSH pour se connecter à une hôte différente.

Dans le cas du client PuTTY, cela se traduit par un message POTENTIAL SECURITY BREACH.

Security Alert sur PuTTY à la connexion SSH

WinSCP en français indique un message Rupture de sécurité potentielle.

Avertissement de sécurité à la connexion SSH

Comment regénérer la clé publique et empreinte digitale de l'hôte

Il faut réinstaller SSH.
Pour cela, supprimer les fichiers de clé puis utiliser dpkg-reconfigure :

rm /etc/ssh/ssh_host_*
sudo dpkg-reconfigure openssh-server
Re-générer la clé publique et empreinte digitale de l'hôte

Sécuriser un serveur SSH

Ca se passe dans cet article complet :

Se connecter à un serveur SSH

Enfin voici les instructions afin de pouvoir vous connecter à un serveur SSH.

Générer des clés SSH

Au lieu de vous connecter via le mot de passe d'un compte utilisateur, vous pouvez vous authentifier par un échange de clés SSH.
C'est plus sûr car elles sont plus difficile à pirater.
Cet article vous guide pour générer les clés SSH et les installer.

Vous avez trouvé cet article utile et interressant, n'hésitez pas à le partager...

Trouver la solution sur le forum d'aide

Vous êtes arrivé au terme de l'article SSH : comment ça marche mais vous n'avez pas trouvé la solution à votre problème...
Suivez ces articles du forum pour trouver une réponse ou demandez à votre tour de l'aide sur le forum

Tags:,