Comment fonctionne le SSH ?
Qu’est-ce que le SSH ?
Le SSH ou Secure Shell est un protocole d’administration à distance. Grâce à ce protocole, les utilisateurs peuvent contrôler et éditer leurs serveurs distants sur Internet. SSH a été conçu comme une alternative sécurisée pour un Telnet non-chiffré. Ce service exploite des techniques cryptographiques afin de garantir que toutes les communications vers et depuis le serveur distant auront lieu d’une façon sécurisée. Avec SSH, vous serez fourni d’un mécanisme pour authentification d’un utilisateur distant. Vous pourrez également transférer les accès d’un client vers l’hôte ou même transmettre la sortie vers le client.
Nous vous présentons ci-dessous une fenêtre SSH ordinaire. Les utilisateurs Linux ou MacOS peuvent directement se connecter en SSH à leurs serveurs distants par le biais de la fenêtre du terminal. En revanche, les utilisateurs Windows peuvent tirer parti de SSH clients comme Putty.
Vous aurez la possibilité d’exécuter des commandes Shell de la même façon que vous le feriez si vous étiez en train d’opérer physiquement le serveur distant.
Par le biais de ce Tutoriel SSH minutieux, nous tenterons de vous montrer les fonctionnements basiques de SSH également les technologies sous-jacentes exploitées par le protocole pour garantir un moyen sécurisé d’accès à distance.
Fonctionnement de SSH
Lorsque vous exploitez Mac ou Linux, l’utilisation SSH s’avère être très facile. Par contre, si vous utilisez Windows, il sera nécessaire d’utiliser un client SSH afin que vous puissiez ouvrir les connexions SSH. Dans ce cas, nous vous recommandons de choisir le client SSH Putty.
Pour les utilisateurs Mac et Linux, commencez tout d’abord par vous diriger vers le programme de terminal puis tapez :
SSH {user}@{host}
Cette commande SSH se constitue de 3 parties différentes. Cette commande vous permet d’ouvrir une connexion Secure Shell chiffrée.
{user} désigne le compte auquel vous voulez accéder. Lorsque, par exemple vous souhaitez accéder à l’utilisateur root un administrateur système et qui possède l’ensemble de droits pour modifier tous dans le système. {host} désigne l’ordinateur auquel vous voulez accéder. Ceci pourrait être soit une adresse IP par exemple 244.235.23.19 ou un nom de domaine www.abcdomaine.com.
Lorsque vous cliquez sur « Enter », vous serez demandé d’introduire le mot de passe du compte en question. Saisissez votre mot de passe puis cliquez sur « Enter » afin d’accéder une fenêtre à distance de terminal.
Les multiples techniques de cryptage
L’ultime point fort de SSH comparé à ses prédécesseurs est qu’il utilise un cryptage pour garantir un transfert sécurisé des données entre l’hôte et son client.
Donc hôte désigne le serveur distant auquel vous souhaitez accéder alors que client désigne l’ordinateur que vous usez afin d’accéder à hôte.
Nous allons vous introduire ci-dessous à trois formes de cryptages distinctes du SSH
- Le cryptage symétrique
- Le cryptage asymétrique
- Hashing
Cryptage symétrique
Le cryptage symétrique est une technique de cryptage où le client et l’hôte nécessite une clé secrète pour le cryptage et le décryptage d’un message. Par conséquent, tout individu ayant cette clé pourra décoder le message transféré.
Nous pourrons également désigner le cryptage symétrique de clé partagée ou Cryptage de secret partagé. Généralement, on n’utilise qu’une clé unique. Mais parfois une paire de clés est générée néanmoins une est facilement calculable en utilisant l’autre clé.
La fonction des clés symétriques est d’encrypter l’intégralité de la communication durant une session SSH. La clé secrète sera dérivée par l’hôte et le client selon une démarche convenue et le résultat ne sera jamais dévoilé à un tiers.
L’action de générer une clé symétrique est exécutée par un algorithme d’échange de clés. La caractéristique qui rend cet algorithme extrêmement sécurisé est que la clé n’est jamais communiquée entre le serveur et le client. A la place de transmettre directement la clé, les deux ordinateurs calculent d’une façon autonome la clé secrète à travers des données publiquement partagées. Dans le cas où un autre appareil vole les données publiques partagées, ne craignez rien le calcul de la clé secrète sera impossible parce qu’il ignore l’algorithme d’échange de clés.
Il faut, en revanche, prendre en compte qu’une clé secrète est exclusive à chaque session SSH et sera créée avant l’authentification du client. Le moment où la clé sera créée, il faudrait encrypter par la clé secrète tous les paquets transmis entre les deux appareils de telle façon que les données d’identification sont toujours protégées des « renifleurs » ou « sniffers » des paquets réseau.
Nous pourrons trouver plusieurs cryptages symétriques comme AES (Advanced Encryption Standard), CAST128, Blowfish, et beaucoup plus d’autres… Avant de mettre en place une connexion sécurisée, le client et un hôte choisissent quel type de chiffrage utiliser en consultant une liste des chiffrages compatibles.
Cryptage asymétrique
Différent du cryptage symétrique, le cryptage asymétrique exploite deux clés distinctes pour le cryptage et le décryptage. Ces deux clés sont désignées clé publique et clé privée. Ces deux clés constituent ensemble une paire de clés public-privé.
Comme nous pouvons le déduire à travers sa désignation, la clé publique est partagée et répartie publiquement avec toutes les parties concernées. Vu que ses fonctionnalités sont fortement liées à la clé privée, cette dernière ne peut être calculée que depuis la clé publique. Le lien entre ces deux clés est très compliqué : par exemple, un message chiffré par une clé publique d’un appareil ne peut être décrypté que par le biais de la clé privée du même appareil. Vous ne serez pas en mesure de décrypter avec la clé publique ses propres messages, ni les messages cryptés par la clé privée.
Il est crucial que la clé privée reste privée, en d’autres termes la connexion doit être sécurisée. Et nul à part les parties concernées ne doit la connaitre. La clé privée est le seul et unique moyen de déchiffrer les messages cryptés en utilisant sa clé publique. C’est le point fort du cryptage asymétrique. Donc toute personne qui peut décrypter des messages cryptés publiquement, doit connaitre la clé privée correspondante.
À partir du moment qu’une communication asymétrique sécurisée a été faite, le serveur se sert de la clé publique de ses clients pour créer et transmettre au client une authentification. Le client qui possède la clé privée requise pourra décrypter avec succès le message. La session SSH débute ainsi.
Le hachage
Le hachage est un autre type de cryptage utilisé dans les connexions Secure Shell. Sa spécificité est qu’il est à sens unique. De plus, pas comme les formes de cryptages ci-dessus le symétrique et l’asymétrique, les fonctions de hachage à sens unique ne sont pas conçues afin d’être déchiffrées. En effet, elles créent une valeur unique d’une longueur bien définie pour chaque entrée, dont aucune caractéristique évidente ne peut être utilisée. Cela rend quasiment impossible le décryptage.
Il est simple de créer un hachage cryptographique depuis une entrée donnée, mais il est impossible de créer l’entrée du hash. En d’autres termes, si un client possède l’entrée exacte, il est en mesure de réaliser le hachage cryptographique et comparer sa valeur afin de vérifier s’il a vraiment la bonne entrée.
SSH a recours à des hachages pour le but de garantir l’authenticité des messages. Ceci est établi en usant HMAC, ou Hash-based Message Authentication Codes. Cela assure que la commande reçue n’est jamais éditée.
Bien que l’algorithme de cryptage symétrique soit choisi, un algorithme d’authentification de message adapté sera aussi choisi. Cette procédure est semblable à la manière dont le chiffrage est choisi comme nous l’avions vu dans le cryptage symétrique.
Chaque message transmis doit avoir un MAC, qui sera calculé en utilisant la clé symétrique, le numéro de séquence de paquets et le contenu du message. Le message en question est envoyé hors des données chiffrées symétriquement en tant que la partie finale du paquet de communication.
De quelle façon fonctionne le SSH avec ces techniques de cryptage ?
SHH fonctionne en utilisant un modèle client-serveur pour autoriser l’authentification de deux systèmes distants ainsi le cryptage des données traversant ces systèmes.
SSH agit par défaut sur le port TCP 22 (que vous aurez la possibilité de changer si vous le souhaitez). L’hôte (le serveur) prête l’attention au port 22 ou n’importe quel autre port choisi pour détecter les connexions entrantes. Il administre la connexion sécurisée en authentifiant le client et en ouvrant l’environnement Shell exact si la vérification est avec succès.
Le client devrait débuter la connexion SSH en initiant le handshake TCP avec le serveur, ensuite il doit assurer une connexion symétrique sécurisée, puis il doit vérifier si l’identité affichée par le serveur correspond aux enregistrements précédents (généralement enregistrés dans un fichier de stockage de clés RSA) et enfin soumettre les données d’identification nécessaires pour l’authentification de la connexion.
Nous trouvons deux phases pour assurer une connexion : d’abord, les systèmes devraient consentir sur les mêmes normes de cryptage pour protéger les communications prochaines, et ensuite, l’utilisateur doit s’authentifier. Si les données d’identification se recoupent, l’utilisateur aura l’accès.
Négociation du cryptage pour la session
Quand client essaye de se connecter au serveur via TCP, le serveur montre les protocoles de cryptage et les versions respectives qu’il assume. Si le client détient les protocoles et les versions concordants, il y aurait un accord et la connexion sera démarrée via le protocole approuvé. Le serveur exploite aussi une clé publique asymétrique que le client peut utiliser pour garantir l’authenticité de l’hôte.
Dés que cela est fait, les deux parties utilisent ce qu’on appelle Diffie-Hellman key exchange Algorithm pour générer une clé symétrique. Cet algorithme donne la possibilité au client et au serveur d’aboutir à à une clé de cryptage partagée qui sera dés lors exploitée pour encrypter toute la session de communication.
Authentification de l’utilisateur
La dernière étape, avant que l’utilisateur ait accès au serveur, est d’authentifier ses données d’identification. Pour ce faire, la majorité des utilisateurs SSH choisissent un mot de passe. L’utilisateur est demandé d’introduire le nom d’utilisateur, suivi du mot de passe. Ces données d’identification traversent en toute sécurité le tunnel crypté symétriquement sans la crainte d’être volées par un tiers.
Conclusion
Bien assimiler le fonctionnement de SSH est très bénéfique pour que vous puissiez créer un système de sécurité robuste. La majorité des utilisateurs ont tendance à considérer le SSH comme une énigme complexe et indéchiffrable or il est beaucoup plus simple qu’il n’y parait. Nous espérons que ce tutoriel vous sera d’une grande aide pour vous aider à mieux comprendre le fonctionnement de SSH.