Qu’est-ce que SSH

SSH, ou Secure Shell, est un protocole d’administration à distance qui permet aux utilisateurs de contrôler et de modifier leurs serveurs distants via Internet. Le service a été créé comme un remplacement sécurisé du Telnet non crypté et utilise des techniques cryptographiques pour garantir que toutes les communications vers et depuis le serveur distant se déroulent de manière cryptée. Il fournit un mécanisme pour authentifier un utilisateur distant, transférer les entrées du client vers l’hôte et relayer la sortie vers le client.

La figure ci-dessous montre une fenêtre SSH typique. Tout utilisateur de Linux ou macOS peut se connecter en SSH à son serveur distant directement à partir de la fenêtre du terminal. Les utilisateurs de Windows peuvent tirer parti de clients SSH tels que Putty. Vous pouvez exécuter des commandes shell de la même manière que si vous utilisiez physiquement l’ordinateur distant.

Ce tutoriel SSH couvrira les bases du fonctionnement de ssh, ainsi que les technologies sous-jacentes utilisées par le protocole pour offrir une méthode sécurisée d’accès à distance. Il couvrira les différentes couches et les types de cryptage utilisés, ainsi que le but de chaque couche.

Obtenez votre hébergement VPS Linux avec Hostinger. Obtenez jusqu’à 77 % de réduction !

Démarrez ici

Comment fonctionne SSH

Si vous utilisez Linux ou Mac, alors l’utilisation de SSH est très simple. Si vous utilisez Windows, vous devrez utiliser un client SSH pour ouvrir des connexions SSH. Le client SSH le plus populaire est PuTTY, que vous pouvez découvrir ici.

Pour les utilisateurs Mac et Linux, dirigez-vous vers votre programme de terminal, puis suivez la procédure ci-dessous :

La commande SSH se compose de 3 parties distinctes :

ssh {user}@{host}

La commande SSH key indique à votre système que vous souhaitez ouvrir une connexion Secure Shell chiffrée. {user} représente le compte auquel vous voulez accéder. Par exemple, vous pouvez vouloir accéder à l’utilisateur root, qui est fondamentalement synonyme d’administrateur système avec des droits complets pour modifier quoi que ce soit sur le système. {host} représente l’ordinateur auquel vous voulez accéder. Il peut s’agir d’une adresse IP (par exemple, 244.235.23.19) ou d’un nom de domaine (par exemple, www.xyzdomain.com).

Lorsque vous appuyez sur la touche Entrée, vous êtes invité à saisir le mot de passe du compte demandé. Lorsque vous le tapez, rien n’apparaît à l’écran, mais votre mot de passe est, en fait, transmis. Une fois que vous avez fini de le taper, appuyez une nouvelle fois sur la touche Entrée. Si votre mot de passe est correct, vous serez accueilli par une fenêtre de terminal distant.

Si vous voulez en savoir plus sur d’autres commandes SSH, découvrez-les ici.

Comprendre les différentes techniques de cryptage

L’avantage significatif offert par SSH par rapport à ses prédécesseurs est l’utilisation du cryptage pour assurer un transfert sécurisé des informations entre l’hôte et le client. L’hôte désigne le serveur distant auquel vous essayez d’accéder, tandis que le client est l’ordinateur que vous utilisez pour accéder à l’hôte. Il existe trois technologies de chiffrement différentes utilisées par SSH :

  1. Chiffrement symétrique
  2. Chiffrement asymétrique
  3. Hachage.

Chiffrement symétrique

Le chiffrement symétrique est une forme de chiffrement où une clé secrète est utilisée à la fois pour le chiffrement et le déchiffrement d’un message par le client et l’hôte. Effectivement, toute personne possédant la clé peut décrypter le message transféré.

Le cryptage symétrique est souvent appelé cryptage à clé partagée ou à secret partagé. Il n’y a généralement qu’une seule clé qui est utilisée, ou parfois une paire de clés où une clé peut facilement être calculée à l’aide de l’autre clé.

Les clés symétriques sont utilisées pour chiffrer l’ensemble de la communication pendant une session SSH. Le client et le serveur dérivent la clé secrète en utilisant une méthode convenue, et la clé résultante n’est jamais divulguée à un tiers. Le processus de création d’une clé symétrique est effectué par un algorithme d’échange de clés. Ce qui rend cet algorithme particulièrement sûr est le fait que la clé n’est jamais transmise entre le client et l’hôte. Au lieu de cela, les deux ordinateurs partagent des données publiques et les manipulent ensuite pour calculer indépendamment la clé secrète. Même si une autre machine capture les données partagées publiquement, elle ne pourra pas calculer la clé car l’algorithme d’échange de clés n’est pas connu.

Il faut toutefois noter que le jeton secret est spécifique à chaque session SSH et qu’il est généré avant l’authentification du client. Une fois la clé générée, tous les paquets circulant entre les deux machines doivent être chiffrés par la clé privée. Cela inclut le mot de passe tapé dans la console par l’utilisateur, de sorte que les informations d’identification sont toujours protégées des renifleurs de paquets du réseau.

Il existe une variété de chiffrements symétriques, notamment, mais sans s’y limiter, AES (Advanced Encryption Standard), CAST128, Blowfish, etc. Avant d’établir une connexion sécurisée, le client et l’hôte décident du chiffre à utiliser, en publiant une liste des chiffres pris en charge par ordre de préférence. Le chiffre le plus préféré parmi les chiffres supportés par les clients et présent dans la liste de l’hôte est utilisé comme chiffre bidirectionnel.

Par exemple, si deux machines Ubuntu 14.04 LTS communiquent entre elles par SSH, elles utiliseront aes128-ctr comme chiffre par défaut.

Chiffrement asymétrique

Contrairement au chiffrement symétrique, le chiffrement asymétrique utilise deux clés distinctes pour le chiffrement et le déchiffrement. Ces deux clés sont connues comme la clé publique et la clé privée. Ensemble, ces deux clés forment une paire de clés publique-privée.

La clé publique, comme son nom l’indique, est ouvertement distribuée et partagée avec toutes les parties. Bien qu’elle soit étroitement liée à la clé privée en termes de fonctionnalité, la clé privée ne peut pas être mathématiquement calculée à partir de la clé publique. La relation entre les deux clés est très complexe : un message crypté par la clé publique d’une machine ne peut être décrypté que par la clé privée de cette même machine. Cette relation à sens unique signifie que la clé publique ne peut pas décrypter ses propres messages, ni décrypter quoi que ce soit crypté par la clé privée.

La clé privée doit rester privée c’est-à-dire que pour que la connexion soit sécurisée, aucun tiers ne doit jamais la connaître. La force de l’ensemble de la connexion réside dans le fait que la clé privée n’est jamais révélée, car elle est le seul composant capable de décrypter les messages qui ont été chiffrés à l’aide de sa propre clé publique. Par conséquent, toute partie ayant la capacité de déchiffrer des messages signés publiquement doit posséder la clé privée correspondante.

Contrairement à la perception générale, le chiffrement asymétrique n’est pas utilisé pour chiffrer toute la session SSH. Au lieu de cela, il est uniquement utilisé pendant l’algorithme d’échange de clés du 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.

Une fois qu’une communication symétrique sécurisée a été établie, le serveur utilise la clé publique des clients pour générer et challenge et la transmettre au client pour authentification. Si le client peut déchiffrer le message avec succès, cela signifie qu’il détient la clé privée nécessaire à la connexion. La session SSH commence alors.

Hachage

Le hachage à sens unique est une autre forme de cryptographie utilisée dans les connexions Secure Shell. Les fonctions de hachage à sens unique diffèrent des deux formes de cryptage ci-dessus dans le sens où elles ne sont jamais destinées à être décryptées. Elles génèrent une valeur unique d’une longueur fixe pour chaque entrée qui ne présente aucune tendance claire pouvant être exploitée. Cela les rend pratiquement impossibles à inverser.

Il est facile de générer un hachage cryptographique à partir d’une entrée donnée, mais impossible de générer l’entrée à partir du hachage. Cela signifie que si un client détient la bonne entrée, il peut générer le hachage cryptographique et comparer sa valeur pour vérifier s’il possède la bonne entrée.

SSH utilise des hachages pour vérifier l’authenticité des messages. Pour ce faire, il utilise des HMAC, ou codes d’authentification de message basés sur le hachage. Cela permet de s’assurer que la commande reçue n’est pas altérée de quelque manière que ce soit.

Lorsque l’algorithme de chiffrement symétrique est sélectionné, un algorithme d’authentification de message approprié est également sélectionné. Cela fonctionne de manière similaire à la façon dont le chiffrement est sélectionné, comme expliqué dans la section sur le chiffrement symétrique.

Chaque message transmis doit contenir un MAC, qui est calculé à l’aide de la clé symétrique, du numéro de séquence du paquet et du contenu du message. Il est envoyé à l’extérieur des données cryptées symétriquement en tant que section de conclusion du paquet de communication.

Comment SSH fonctionne-t-il avec ces techniques de cryptage

Le fonctionnement de SSH consiste à utiliser un modèle client-serveur pour permettre l’authentification de deux systèmes distants et le cryptage des données qui passent entre eux.

SSH fonctionne sur le port TCP 22 par défaut (bien que cela puisse être modifié si nécessaire). L’hôte (serveur) écoute sur le port 22 (ou tout autre port attribué à SSH) les connexions entrantes. Il organise la connexion sécurisée en authentifiant le client et en ouvrant l’environnement shell correct si la vérification est réussie.

Le client doit commencer la connexion SSH en initiant la poignée de main TCP avec le serveur, en assurant une connexion symétrique sécurisée, en vérifiant si l’identité affichée par le serveur correspond aux enregistrements précédents (généralement enregistrés dans un fichier RSA key store) et en présentant les informations d’identification de l’utilisateur requises pour authentifier la connexion.

L’établissement d’une connexion se fait en deux étapes : d’abord, les deux systèmes doivent se mettre d’accord sur des normes de chiffrement pour protéger les communications futures, et ensuite, l’utilisateur doit s’authentifier. Si les informations d’identification correspondent, alors l’utilisateur se voit accorder l’accès.

Négociation du chiffrement de la session

Lorsqu’un client tente de se connecter au serveur via TCP, le serveur présente les protocoles de chiffrement et les versions respectives qu’il prend en charge. Si le client présente une paire de protocole et de version similaire, un accord est conclu et la connexion est lancée avec le protocole accepté. Le serveur utilise également une clé publique asymétrique que le client peut utiliser pour vérifier l’authenticité de l’hôte.

Une fois que cela est établi, les deux parties utilisent ce que l’on appelle un algorithme d’échange de clés Diffie-Hellman pour créer une clé symétrique. Cet algorithme permet au client et au serveur d’arriver à une clé de chiffrement partagée qui sera utilisée dorénavant pour chiffrer l’ensemble de la session de communication.

Voici comment fonctionne l’algorithme à un niveau très basique :

  1. Le client et le serveur s’accordent sur un très grand nombre premier, qui n’a bien sûr aucun facteur en commun. Cette valeur de nombre premier est également connue sous le nom de valeur de semence.
  2. Puis, les deux parties conviennent d’un mécanisme de chiffrement commun pour générer un autre ensemble de valeurs en manipulant les valeurs de semence d’une manière algorithmique spécifique. Ces mécanismes, également appelés générateurs de chiffrement, effectuent des opérations importantes sur la graine. Un exemple d’un tel générateur est AES (Advanced Encryption Standard).
  3. Les deux parties génèrent indépendamment un autre nombre premier. Celui-ci est utilisé comme clé privée secrète pour l’interaction.
  4. Cette clé privée nouvellement générée, avec le nombre partagé et l’algorithme de cryptage (par exemple AES), est utilisée pour calculer une clé publique qui est distribuée à l’autre ordinateur.
  5. Les parties utilisent ensuite leur clé privée personnelle, la clé publique partagée de l’autre machine et le nombre premier original pour créer une clé partagée finale. Cette clé est calculée indépendamment par les deux ordinateurs mais créera la même clé de chiffrement des deux côtés.
  6. Maintenant que les deux parties ont une clé partagée, elles peuvent chiffrer symétriquement toute la session SSH. La même clé peut être utilisée pour chiffrer et déchiffrer les messages (lire : section sur le chiffrement symétrique).

Maintenant que la session sécurisée à chiffrement symétrique a été établie, l’utilisateur doit être authentifié.

Authentification de l’utilisateur

La dernière étape avant que l’utilisateur n’ait accès au serveur est l’authentification de ses informations d’identification. Pour cela, la plupart des utilisateurs de SSH utilisent un mot de passe. Il est demandé à l’utilisateur de saisir son nom d’utilisateur, suivi de son mot de passe. Ces informations d’identification passent en toute sécurité dans le tunnel à chiffrement symétrique, il n’y a donc aucune chance qu’elles soient capturées par un tiers.

Bien que les mots de passe soient chiffrés, il n’est toujours pas recommandé d’utiliser des mots de passe pour les connexions sécurisées. En effet, de nombreux bots peuvent simplement forcer par brute des mots de passe faciles ou par défaut et accéder à votre compte. Au lieu de cela, l’alternative recommandée est les paires de clés SSH.

Il s’agit d’un ensemble de clés asymétriques utilisées pour authentifier l’utilisateur sans avoir besoin de saisir un quelconque mot de passe.

Conclusion

Avoir une compréhension approfondie du fonctionnement sous-jacent de SSH peut aider les utilisateurs à comprendre les aspects de sécurité de cette technologie. La plupart des gens considèrent que ce processus est extrêmement complexe et incompréhensible, mais il est beaucoup plus simple que la plupart des gens le pensent. Si vous vous demandez combien de temps il faut à un ordinateur pour calculer un hachage et authentifier un utilisateur, sachez que cela se fait en moins d’une seconde. En fait, le maximum de temps est consacré au transfert de données sur Internet.

Espérons que ce tutoriel SSH vous a permis de voir comment différentes technologies peuvent être mises en club pour créer un système robuste dans lequel chaque mécanisme a un rôle très important à jouer. En outre, vous savez maintenant pourquoi Telnet est devenu une chose du passé dès que SSH est apparu.

Pour plus de tutoriels Linux, assurez-vous de consulter notre section de tutoriels VPS.

Cet article a été modifié pour la dernière fois le 16 juin 2020 4:37 am

.

Laisser un commentaire

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