IT Explained

IT Explained:

SSH (Secure Shell)




Qu'est-ce que le SSH ?

 

 

Définition

SSH est un acronyme pour Secure Shell. Il s'agit d'un terme générique qui fait référence aux versions du protocole SSH, par exemple SSH-1 et SSH-2, et autres comme OpenSSH. Bien qu'il se réfère souvent à une version de SSH, il s'agit, à proprement parler, d'une suite composée d'utilitaires réseau, basés sur le protocole SSH.

Les protocoles SSH définissent des normes pour l'exploitation sécurisée des services réseau d'hôtes non approuvés à travers des réseaux non sécurisés. Les communications entre un client et un serveur utilisant SSH sont cryptées et sont donc idéales pour une utilisation sur les réseaux non sécurisés.

À l'origine, le mot shell dans SSH faisait référence à un programme de traitement des commandes Unix. Au fil du temps, le terme a été de plus en plus utilisé pour les interfaces utilisateur des serveurs, qui rendent l'interactivité plus conviviale avec ces derniers. Un autre exemple de shell utilisé couramment est l'interpréteur de commandes de Windows (cmd.exe), qui permet d'accéder aux outils du système d'exploitation Windows. SSH n'est pas un shell en soit, comme le shell Unix Bourne ou le shell C. Au lieu de cela, il crée un canal pour exécuter un shell sur un ordinateur à distance.

SSH gère plus de la moitié des serveurs Internet dans le monde, sur site et dans le Cloud. SSH est utilisé pour sécuriser, configurer, gérer, maintenir et exploiter les serveurs réseau, les routeurs, les pare-feux, les switchs, les systèmes d'exploitation et les applications. Les protocoles SSH incluent l'authentification, le cryptage et l'intégralité des données. SSH est si populaire qu'il est souvent utilisé comme verbe, comme Google qui utilise le terme SSH-ant.

Versions

Il existe deux versions principales de SSH : SSH-1 et SSH-2. Un quatrième type de SSH, le SSH-1.9 a été défini en 2006. Il est utilisé pour identifier les serveurs, qui sont rétro-compatibles avec d'autres versions de SSH, plus particulièrement lorsqu'un serveur supporte SSH-2 et les versions précédentes.

SSH est le plus souvent utilisé par divers systèmes d'exploitation Unix, par exemple Linux et MacOs. Il est également utilisé dans Microsoft Windows, par exemple Windows 10 utilise OpenSSH comme client SSH et serveur SSH par défaut.

Comparé à SSH-1, SSH-2 est fourni avec des améliorations au niveau de la sécurité et des fonctionnalités. Cependant, il n'est pas compatible avec SSH-1. L'une des améliorations de SSH-2 au niveau de la sécurité est l'utilisation de l'échange de clés Diffie-Hellman. L'échange de clés Diffie-Hellman est une méthode consistant à échanger des clés de cryptage à travers un canal public comme l'Internet. SSH-2 additionne également d'autres messages de code d'authentification, afin d'améliorer l'intégralité des données.

À cause du design de ses flux, SSH-1 est généralement considéré comme étant obsolète. La plupart des systèmes modernes supportent SSH-2.

Historique

 

 

SSH a été développé en 1995 par Tatu Ylonen, un chercheur à l'université technologique d'Helsinki. Ylonen a créé une première version du protocole, après que le réseau de l'université ait été piraté et que des milliers de noms d'utilisateurs et de mots de passe aient été dérobés. L'objectif de monsieur Ylonen était de trouver une solution pouvant être utilisée pour se connecter à distance sur Internet en toute sécurité.

Monsieur Ylonen a commencé par passer du temps à étudier la cryptographie, la base de SSH. Une fois SSH standardisé par l'Internet Engineering Task Force (IETF), il a créé le SSH File Transfer Protocol (SFTP) et fondé la SSH Communications Security Corporation, afin d'apporter un support commercial aux versions payantes de SSH.

Ce protocole a été conçu pour remplacer Telnet (port 23) et FTP (port 21). Tatu Ylonen a pu obtenir l'attribution du port 22 pour SSH auprès de l'Internet Assigned Numbers Authority (IANA).

Qu'est qu'un client SSH ?

 

 

SSH est basé sur un modèle d'architecture client-serveur. Dans ce modèle, un hôte est un ordinateur connecté à un réseau, les clients et les serveurs étant des programmes qui sont exécutés sur un hôte.

L'utilisateur utilise son ordinateur (le client) pour se connecter sur un ordinateur distant (le serveur). En utilisant une interface graphique (GUI) ou un outil avec des lignes de commandes, un utilisateur peut transférer des données entre les clients et le serveur. SSH doit être actif sur le client et sur le serveur.

Le client SSH est un programme sur l'ordinateur effectuant une demande pour se connecter à un système à distance en utilisant SSH. Dans les systèmes d'exploitation Unix, la fonction SSH est intégrée de source. Pour les systèmes d'exploitation non Unix, il existe aussi des clients externes, par exemple PuTTY, EasySSH, et Cyberduck. Dans les systèmes d'exploitation Windows, il y a également de nombreux clients SSH, par exemple PuTTY, Solar-PuTTy, WinSCP et MobaXterm.

La plupart des clients SSH fournissent plus de fonctions qu'une ligne de commande d'exécution traditionnelle SSH. Par exemple, ils permettent d'ouvrir simultanément plusieurs sessions, de marquer des mots clés au travers des sessions, d'utiliser d'autres types de connexion comme Telnet et de sauvegarder les données d'authentification.

 

Où SSH est-il utilisé ?

 

SSH est souvent utilisé en combinaison avec d'autres protocoles Internet. SFTP est une alternative sécurisée au FTP traditionnel et aux protocoles Secure Copy (SCP), qui supportent les transferts de fichiers entre les hôtes à travers un réseau. SFTP permet des cryptages et des décryptages rapides et dynamiques.

Connexions sécurisées automatiques

Dans les environnements des entreprises, les connexions SSH automatiques sont généralement utilisées pour les transferts cryptés de fichiers et pour l'authentification automatique des processus de machine à machine (M2M). Les tâches automatisées incluent les sauvegardes de données, l'archivage, les rapports, le nettoyage des bases de données, les sauvegardes de systèmes et la maintenance du réseau.

Connexions sécurisées manuelles

Les entreprises peuvent utiliser des tunnels SSH pour échanger des fichiers de façon sécurisée avec leurs clients.

Gestion du réseau à distance

SSH permet des connexions sécurisées sur les ordinateurs distants. Il est couramment utilisé par les gestionnaires de réseau et par les administrateurs de sites Internet pour effectuer les tâches suivantes : sécuriser les transferts de données, automatiser les transferts de données utilisant des scripts SSH, établir des connexions VPN, tester des applications, redémarrer des systèmes, changer les droits d'accès aux fichiers et gérer les droits d'accès des utilisateurs. La majorité des administrateurs utilisent un client SSH pour accéder à distance de façon sécurisée aux serveurs, aux switchs, aux routeurs, aux plate-formes de virtualisation et aux systèmes d'exploitation. Les tâches incluent le streaming de vidéos utilisant SFTP, la création d'une authentification unique pour plusieurs connexions, l'exécution de sauvegardes à distance, la connexion de répertoires distants à un répertoire local et l'utilisation d'une clé de cryptage pour plusieurs comptes pour remplacer les différents mots de passe.

Sécurité de l'application

Généralement, les applications TCP/IP utilisent un port dédié pour communiquer. Avec le transfert de port, de nombreuses applications peuvent utiliser un seul port, le port 22.

Fonctionnalités de base SSH

 

SSHD

Pour établir une connexion SSH, l'ordinateur distant doit exécuter un démon SSH (sshd), qui est un programme surveillant les demandes de connexion, généralement sur le port 22, authentifiant ces demandes et déclenchant les connexions.

Le démon SSH permet des échanges cryptés de données entre des hôtes non approuvés à travers un réseau non sécurisé, en utilisant le protocole SSH. Un démon est une application qui fonctionne en arrière-plan. Comme toute autre application, elle est codée et configurée pour exécuter des tâches spécifiques, dédiées à une application spécifique.

RFCs

SSH est défini par certaines publications Request For Comments (RFCs). Une RFC décrit des normes; des protocoles et des technologies qui sont pertinentes pour Internet, comme SSH. Par exemple, il y a des documents standards pour les couches SSH, les algorithmes de cryptage SSH et les certificats de sécurité SSH. Il y a également un RFC, qui spécifie que la couche de transport SSH doit permettre le perfect forward secrecy (PFS). Le Perfect forward secrecy garantit qu'un pirate ne pourra pas accéder aux données précédemment transmises, lorsque la clé privée d’un serveur est corrompue.

Couches SSH

SSH est composé de trois couches : la couche de transport, la couche d'authentification de l'utilisateur et la couche de connexion.

La couche de transport gère le cryptage et le décryptage des données échangées. La couche de transport identifie également le serveur et établit la confidentialité et l'intégrité.

La couche d'authentification de l'utilisateur certifie l'identité du client.

La couche de connexion gère les canaux, à travers lesquels les données transitent entre les parties identifiées dans les processus d'échange de données. Il existe des canaux de stream de données pour différents types de communication, par exemple des connexions simultanées sur différents terminaux ou services à distance, ou des transferts de sessions X11.

Cryptage SSH

Le principal avantage de SSH par rapport aux alternatives est l'utilisation du cryptage. SSH crypte l'ensemble du trafic entre un client et un serveur lors du transfert de données. Une personne effectuant des écoutes du trafic, par exemple en utilisant un programme de détection de paquets, ne pourra pas accéder aux données transmises ou les décrypter.

SSH utilise trois méthodes de cryptage : le cryptage symétrique, le cryptage asymétrique et le hachage.

Le cryptage symétrique nécessite une clé secrète, qui est utilisée pour le cryptage et pour le décryptage sur l'ensemble d'une connexion SSH. La clé symétrique est créée en utilisant un algorithme d'échange de clés agréées.

Le cryptage asymétrique nécessite deux clés différentes - une paire de clés publique-privée - pour le cryptage et le décryptage. Dans une session SSH, le cryptage asymétrique est utilisé pour installer le cryptage symétrique. Pendant la phase de cryptage symétrique, le client et le serveur créent des paires de clés temporaires et échangent la clé publique, afin de créer la clé symétrique. Le cryptage asymétrique est également utilisé pour authentifier l'identité du client pour le serveur.

La méthode de hachage convertit les données transmises en une autre valeur unique. SSH utilise le hachage pour vérifier authenticité des messages.

Tunnelisation et transfert de ports

SSH supporte le transfert de port et la tunnelisation. Les termes transfert de port et tunnelisation sont souvent utilisés de façon interchangeable. Cependant, le terme tunnelisation est un terme plus global, qui décrit trois types de transfert de ports : le transfert de port local, le transfert de port distant et le transfert de port dynamique.

La tunnelisation SSH peut être utilisée pour transférer un trafic non crypté sur un réseau à travers un canal crypté. Par exemple, un tunnel SSH crypté peut être créé pour transmettre des données entre un serveur FTP et un client, même si le protocole FTP n'est pas crypté. Les tunnels SSH peuvent également être utilisés pour accéder à des contenus géographiquement restreints et pour contourner les pare-feux.

Transfert X11

SSH permet le transfert X11 pouvant être utilisé, quand un utilisateur veut se connecter à un serveur distant et qu'il a également besoin d'une interface GUI pour visualiser l'application utilisée ou les données. Le transfert X11 permet à un utilisateur de démarrer une application à distance et d'en transférer le contenu sur son ordinateur local Windows.

 

Les avantages de SSH

 

 

SSH a été créé pour remplacer les protocoles shell distants non sécurisés, tels que Telnet, FTP, rsh, rlogin, and rexec. Ces protocoles sont par nature non sécurisés, lorsqu'ils échangent des informations, y compris les mots de passe en texte clair, ce qui nuit à la sécurité. Le principal avantage de SSH est l'utilisation de cryptage pour assurer un transfert d'informations sécurisé entre le client et le serveur.

SSH permet aux utilisateurs d'exécuter des commandes shell sur un ordinateur distant comme s'ils se trouvaient devant la machine physique. En utilisant les commandes et les scripts SSH, les administrateurs peuvent visualiser, supprimer ou déplacer des fichiers, créer de nouveaux dossiers, répertoires et fichiers et télécharger des fichiers.

La couche de connexion SSH permet des streams multiples à travers une seule connexion TCP. Cette capacité est appelée multiplexage et signifie que moins de connexions FTP sont nécessaires, ce qui permet le partage de ressources rares et réduit ainsi les frais généraux.

La capacité de SSH à utiliser la tunnelisation et le transfert de port peut être utilisée pour contourner des pare-feux restrictifs.

SSH permet aux administrateurs de réseau de limiter à distance l'accès des utilisateurs à un réseau.

Les clés SSH peuvent être utilisées pour identifier les utilisateurs, qui se connectent à un système pour remplacer le nom d'utilisateur et le mot de passe. Un agent SSH est un programme, qui garde en mémoire des clés privées et qui fournit des services d’authentification. Les clés SSH sont plus difficiles à pirater que les mots de passe, bien que le processus d'authentification SSH soit un peu plus difficile à mettre en place que celui utilisant les noms d'utilisateur et les mots de passe. L'utilisation de clés SSH limite les succès des attaques directes sur les noms d'utilisateurs et les mots de passe.

Les tunnels SSH sont utilisés dans le Cloud pour résoudre les problèmes de connectivité et pour éviter les failles de sécurité, où les machines virtuelles présentes dans le Cloud sont directement exposées à Internet. Les tunnels SSH fournissent un chemin sécurisé vers une machine virtuelle à travers Internet et un pare-feu.

Les inconvénients de l'utilisation de SSH

 

 

SSH-2 est généralement reconnu comme étant sûr. Cependant, toutes les mises en place de processus de sécurité ont des failles.

SSH supporte la tunnelisation, utilisée par exemple par les administrateurs pour accéder à distance à un réseau en passant par un tunnel. Cependant, les transactions SSH sortantes sans restriction peuvent entraîner des failles de sécurité. La tunnelisation peut ouvrir des portes aux pirates et peut également enfreindre certaines réglementations de sécurité, telles que PCI et HIPAA. Les transactions SSH entrantes peuvent être contrôlées plus facilement que les transactions SSH sortantes, par exemple en redirigeant les connections du port 22 (SSH) vers une adresse IP spécifique.

Les clés SSH - souvent utilisées par les utilisateurs pour se connecter à la place de mots de passe - n'expirent jamais. Dans les grandes entreprises, on peut trouver des centaines de clés SSH sur de multiples serveurs. Une mauvaise gestion des clés SSH peut provoquer une multiplication des clés, ce qui pourrait ouvrir des portes aux pirates. La tunnelisation SSH pourrait permettre à un pirate d'utiliser ces clés SSH pour contourner les pare-feux. Cependant, les attaques de tunnelisation ne sont pas spécifiques aux systèmes utilisant SSH.

Certains hôtes peuvent partager la même clé parce que celle-ci a été préconfigurée dans un équipement. Les clés privées de ces équipements peuvent être accessibles par ingénierie inverse. Les clés plus anciennes et plus courtes peuvent également permettre à un pirate de détourner les valeurs des clés privées.

SSH peut être lent à répondre aux demandes à travers une bande passante haute performance ou à travers une connexion lente.

Certaines études montrent que la plupart des failles de sécurité SSH étaient dues à une mauvaise gestion de SSH par les services IT.

 

Sources