SSH & Linux VPS

Utiliser au mieux le SSH en comprenant son fonctionnement

ssh linux ubuntu

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 sur Internet. Le service a été créé en tant que remplacement sécurisé pour le Telnet non chiffré, et utilise des techniques cryptographiques pour s’assurer que toutes les communications vers et depuis le serveur distant se produisent de manière chiffré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.

L’image ci-dessous montre une fenêtre SSH typique. Tout utilisateur Linux ou MacOS peut SSH dans leur serveur distant directement à partir de la fenêtre du terminal. Les utilisateurs de Windows peuvent utiliser des clients SSH comme Putty. Vous pouvez exécuter des commandes shell de la même manière que vous le feriez si vous étiez en train d’utiliser physiquement l’ordinateur distant.

Example SSH connection showing how SSH works

Ce didacticiel 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 types de cryptage utilisés, ainsi que le but de chaque couche.

Fonctionnement de 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 les connexions SSH. Le client SSH le plus populaire est PuTTY, au sujet duquel vous pouvez en apprendre plus ici.

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

La commande SSH se compose de 3 parties distinctes :

La commande de la clé SSH indique à votre système que vous souhaitez ouvrir une connexion Secure Shell cryptée. {user} représente le compte auquel vous souhaitez accéder. Par exemple, vous voudrez peut-être accéder à l’utilisateur root, qui est essentiellement synonyme d’administrateur système avec tous les droits de modification de tout sur le système. {host} fait référence à l’ordinateur auquel vous souhaitez accéder. Ceci peut être une adresse IP (par ex. 244.235.23.19) ou un nom de domaine (par exemple, www.xyzdomain.com).

Lorsque vous appuyez sur Entrée, vous serez invité à entrer le mot de passe du compte demandé. Lorsque vous le saisissez, rien ne s’affiche à l’écran, mais votre mot de passe est en fait transmis. Une fois que vous avez fini de taper, appuyez une fois sur Enter. Si votre mot de passe est correct, vous serez accueilli avec une fenêtre de terminal à distance.

Si vous voulez en savoir plus sur certaines commandes SSH, retrouvez-les ici.

Comprendre différentes techniques de cryptage

L’avantage important offert par SSH par rapport à ses prédécesseurs est l’utilisation du cryptage pour assurer le transfert sécurisé d’informations entre l’hôte et le client. Host se réfère au serveur distant auquel vous tentez d’accéder, tandis que le client est l’ordinateur que vous utilisez pour accéder à l’hôte. Il existe trois technologies de cryptage différentes utilisées par SSH :

  1. Cryptage symétrique
  2. Cryptage asymétrique
  3. Hashing.

Cryptage symétrique

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

SSH tutorial - Symmetric Encryption

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

Les clés symétriques sont utilisées pour chiffrer toute la communication lors d’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 s’effectue par un algorithme d’échange de clésCe qui rend cet algorithme particulièrement sécurisé, c’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, puis les manipulent pour calculer de manière indépendante la clé secrète. Même si une autre machine capture les données publiquement partagées, il ne sera pas capable de calculer la clé car l’algorithme d’échange de clés n’est pas connu.

Il faut toutefois noter que la clé secrète est spécifique à chaque session SSH et est générée avant l’authentification du client. Une fois la clé générée, tous les paquets qui se déplacent entre les deux machines doivent être crypté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 sniffers de paquets réseau.

Il existe une variété de chiffrages symétriques, y compris, mais sans s’y limiter, AES (Advanced Encryption Standard), CAST128, Blowfish, etc. Avant d’établir une connexion sécurisée, le client et un hôte décident quel chiffrage utiliser, en publiant une liste des chiffrages compatibles, par ordre de préférence. Le chiffrage préféré des cybers clients pris en charge sur la liste de l’hôte est utilisé comme chiffrage bidirectionnel.

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

Cryptage asymétrique

Contrairement au cryptage symétrique, le cryptage asymétrique utilise deux clés distinctes pour le cryptage et le décryptage. Ces deux clés sont appelées clé publique et clé privée. Ensemble, ces deux clés forment une paire de clés public-privé.

Asymmetric Encryption

La clé publique, comme son nom l’indique, est distribuée et partagée ouvertement 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 calculée mathématiquement à partir de la clé publique. La relation entre les deux clés est très complexe : un message crypté par une clé publique d’une machine ne peut être déchiffré que par la clé privée d’une même machine. Cette relation à sens unique signifie que la clé publique ne peut pas décrypter ses propres messages, ni décrypter quelque chose de crypté par la clé privée.

La clé privée doit rester privée, c’est-à-dire que la connexion doit être 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 des messages cryptés à l’aide de sa propre clé publique. Par conséquent, toute partie ayant la capacité de décrypter des messages signés publiquement doit posséder la clé privée correspondante.

Contrairement à ce qu’on croit, le cryptage asymétrique n’est pas utilisé pour chiffrer toute la session SSH. Au lieu de cela, il n’est utilisé que pendant l’algorithme d’échange de clés de cryptage symétrique. Avant de lancer une connexion sécurisée, les deux parties génèrent des paires de clés public-privé 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 contester et transmettre au client une authentification. Si le client peut décrypter avec succès le message, cela signifie qu’il dispose de la clé privée requise pour la connexion. La session SSH commence alors.

Hashing (hachage)

Le hachage à sens unique est une autre forme de cryptographie utilisée dans les connexions Secure Shell. Les fonctions one-way-hash diffèrent des deux formes de cryptage ci-dessus en ce sens qu’elles ne sont jamais destinées à être déchiffrées. Elles génèrent une valeur unique d’une longueur fixe pour chaque entrée, dont aucune tendance claire ne peut être exploitée. Cela rend pratiquement impossible l’inversion.

Hash

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 du hash. Cela signifie que si un client détient l’entrée correcte, 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. Ceci est fait en utilisant HMAC, ou Hash-based  Message Authentication Codes. Cela garantit que la commande reçue n’est modifiée d’aucune manière que ce soit.

Même si l’algorithme de cryptage 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 chiffrage est sélectionné, comme expliqué dans la section sur le cryptage symétrique.

Chaque message transmis doit contenir un MAC, qui est calculé en utilisant la clé symétrique, le numéro de séquence de paquets et le contenu du message. Il est envoyé en dehors des données cryptées symétriquement comme la partie finale du paquet de communication.

Comment fonctionne SSH avec ces techniques de cryptage

La façon dont fonctionne SSH, c’est qu’il utilise un modèle client-serveur pour permettre l’authentification de deux systèmes distants et le cryptage des données qui les traversent.

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

SSH Client and Server

Le client doit commencer la connexion SSH en lançant le handshake 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 (habituellement enregistrés dans un fichier de stockage de clés RSA) et présente les informations d’identification requises pour authentifier la connexion.

Il existe deux étapes pour établir une connexion : d’abord, les systèmes doivent s’entendre sur les normes de cryptage pour protéger les communications futures, et deuxièmement, l’utilisateur doit s’authentifier. Si les informations d’identification correspondent, l’utilisateur reçoit l’accès.

Négociation de chiffrement de session

Lorsqu’un client tente de se connecter au serveur via TCP, le serveur présente les protocoles de cryptage et les versions respectives qu’il prend en charge. Si le client possède une paire de protocoles et de versions correspondant, un accord est atteint et la connexion commence 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 qu’on appelle un algorithme d’échange de clés Diffie-Hellman (en anglais) pour créer une clé symétrique. Cet algorithme permet au client et au serveur d’arriver à une clé de cryptage partagée qui sera désormais utilisée pour chiffrer toute la session de communication.

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

  1. Le client et le serveur se mettent d’accord sur un très grand nombre premier, qui n’a bien sûr aucun facteur en commun. Cette valeur de nombre premier est également appelée  valeur de départ.
  2. Ensuite, les deux parties conviennent d’un mécanisme de cryptage commun pour générer un autre ensemble de valeurs en manipulant les valeurs de base d’une manière algorithmique spécifique. Ces mécanismes, également appelés générateurs de cryptage, effectuent de grandes opérations sur les valeurs de base. 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 numéro partagé et l’algorithme de cryptage (p. Ex. AES), sert à calculer une clé publique qui est distribuée à l’autre ordinateur.
  5. Les parties utilisent ensuite leur propre clé privée, la clé publique partagée de l’autre machine et le numéro premier d’origine 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 cryptage des deux côtés.
  6. Maintenant que les deux côtés ont une clé partagée, ils peuvent chiffrer symétriquement toute la session SSH. La même clé peut être utilisée pour chiffrer et décrypter des messages (lire : section sur le cryptage symétrique).

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

Authentification de l’utilisateur

La phase finale avant que l’utilisateur ait accès au serveur authentifie ses informations d’identification. Pour cela, la plupart des utilisateurs SSH utilisent un mot de passe. L’utilisateur est invité à entrer le nom d’utilisateur, suivi du mot de passe. Ces informations d’identification passent en toute sécurité par le tunnel crypté symétriquement, de sorte qu’il n’ a aucune chance d’être capturé par un tiers.

Bien que les mots de passe soient cryptés, il n’est toujours pas recommandé d’utiliser des mots de passe pour les connexions sécurisées. C’est parce que de nombreux robots peuvent simplement forcer des mots de passe faciles ou mots de passe par défaut, et accéder à votre compte. Au lieu de cela, l’alternative recommandée est SSH Key Pairs.

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

Conclusion

Obtenir 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 c’est beaucoup plus simple que la plupart des gens pensent. Si vous vous demandez combien de temps il faut pour qu’un ordinateur calcule un hachage et authentifie un utilisateur, ça se passe en moins d’une seconde. En fait, la plupart du temps est consacrée au transfert de données sur Internet.

J’espère que ce tutoriel de SSH vous a aidé à voir comment différentes technologies peuvent être regroupées pour créer un système solide dans lequel chaque mécanisme a un rôle très important à jouer. Egalement, maintenant, vous savez pourquoi Telnet est devenu une technique du passé, dès l’arrivée de SSH.

Pour plus de tutoriels Linux, n’oubliez pas de consulter notre section sur les tutoriels VPS .

 

Rejoignez des milliers d'abonnés du monde entier

et recevez des offres exclusives et tous les nouveaux tutoriels dans votre boîte mail

Please wait...

Merci de vous être inscrit !

Commencez à économiser dès maintenant !

Hébergement et nom de domaine tout-en-un à partir de

2
45
/mois