Protocole SSH
Protocole SSH
Protocole SSH
• Depuis l’apparition de SSH, son rôle a évolué pour ne pas se limiter à une
simple fonctionnalité de connectivité à distance pour le shell. La version 2
de ce protocole, normalisée en janvier 2006, propose la sécurisation de
n’importe quel protocole applicatif et ceci grâce à ses mécanismes de
« port forwarding » et de « tunneling ».
• Dans ce dossier, nous allons expliquer les différents services de sécurité
mis en place dans SSH tout en se focalisant sur sa version 2, normalisée en
2006 à l’IETF. Nous présenterons par la suite, les sous-protocoles de
SSHv2, sa phase d’initialisation et les différentes méthodes
d’authentification qui y sont intégrées. Nous aborderons aussi la solution
SSH VPN en la comparant à IPSec et SSL. Nous discuterons ensuite de
l’avenir du protocole SSH et des nouveaux standards TLS qui influencent
l’avenir de ce protocole et son actuelle utilisation dans l’accès aux
équipements distants. Nous terminerons le dossier par une conclusion.
• Remerciements :
FTP : File Transfer Protocol (RFC 959) SFTP : Secure File Transfer Protocol
POP3 : Post Office Protocol, version 3 TLS : Transport Layer Security (RFC
(RFC 1081) 2246)
Pour avoir davantage d’informations sur chacun de ces sigles, le lecteur pourra se
référer au site web de l’IETF (Internet Engineering Task Force) : http://www.ietf.org à la
page suivante : http://www.ietf.org/rfc.html.
1. Introduction et évolution du protocole SSH
• 1.1 L’authentification
•
1.2 La confidentialité des données
•
1.3 L’intégrité des données
•
1.4 L’évolution du protocole SSH
• Le protocole SSH, ou Secure Shell, a été développé en 1995 par Tatun
Ylönen, un professeur finlandais qui, à l’époque, souhaitait sécuriser les
connexions distantes vers un serveur Unix via des commandes telles que
telnet, rlogin, copy, etc.
• Les protocoles tels que telnet, ftp, et rsh, transmettent en clair les mots de
passe des utilisateurs. Cela signifie qu’ils peuvent facilement être
espionnés et exploités par n’importe quelle personne écoutant le réseau.
SSH améliore la sécurité en chiffrant n’importe quel trafic utilisé pendant
l’authentification.
• Les mots de passe ne sont pas transférés en clair sur le réseau public. De
plus, l’avantage significatif de SSH est l’utilisation des clefs publiques RSA
(dans la version 1 du protocole) puis de l’algorithme DSA (dans la
version 2 de SSH) pour l’authentification des entités en communication.
Ce mécanisme de chiffrement asymétrique (encadré 1) est plus sûr que
l’authentification simple du couple nom de l’utilisateur/mot de passe
(user name/password). SSH supporte cependant d’autres méthodes
d’authentification qui seront détaillées dans les paragraphes suivants.
• Une fonction de hachage est une fonction mathématique qui calcule une
empreinte d’un message. Plus précisément, elle prend en entrée un
message M de longueur m quelconque et fournit en sortie un résultat
appelé empreinte, de taille fixe, calculé à partir de M. Les fonctions de
hachage les plus utilisées sont SHA-1 et MD5.
1.4 L’évolution du protocole SSH
• Nota :
• * Durant le développement de spécifications à l’IETF, un groupe de travail
établit une version du travail du document et qui reste disponible sous la
forme d’un draft Internet IETF (Projet Internet). Un draft IETF peut
demeurer à l’état draft pendant six mois, et les parties intéressées ont la
possibilité de le réviser et le commenter régulièrement.
Afin de mieux comprendre les principaux changements existants entre la
version 1.5 et la version 2 du protocole, nous les présentons dans le
tableau 1. Pour plus de détails sur les caractéristiques, le lecteur intéressé
pourra se référer au paragraphe 2 descriptif.
• Sans rentrer dans les détails, dans une session SSH v1, les deux entités SSH
utilisent les mêmes algorithmes cryptographiques et les mêmes clefs pour les
deux sens de communication alors que dans la version 2 de SSH, les deux
entités négocient séparément pour chaque sens les différents algorithmes,
évitant ainsi de nombreuses attaques par analyse de trafic sur la session SSH.
De plus, SSH v1 utilise une somme de contrôle ordinaire CRC-32 pour assurer
l’intégrité des données transmises. Ce procédé étant trop faible pour la
vérification des données, SSH v2 l’a remplacé par l’usage de la fonction HMAC.
Un autre changement majeur est le fait que SSH v1 était monolithique alors
que SSH v2 divise le protocole en trois « couches », le rendant plus modulaire
en séparant le processus d’authentification de l’établissement du canal de
communication.
• C’est sur cette couche que reposent les deux autres couches SSH. SSH-
TRANS fournit l’authentification du serveur, la confidentialité et
l’intégrité des données au moyen d’un chiffrement symétrique (cf.
encadré 3). Elle fournit en option la compression des données de session
en utilisant le mécanisme zlib (LZ77) défini dans les IETF RFC 1950 et 1951
(voir http://www.ietf.org). Cette couche doit être utilisée pour permettre
au client de vérifier qu’il communique bien avec le serveur attendu.
• Ce protocole fonctionne au-dessus de TCP/IP mais peut être utilisé au-
dessus de toute couche de transport fiable. Il effectue : l’authentification
du serveur, la négociation des algorithmes de protection des données, la
mise en place d’une clef de session, la création d’un secret partagé,
l’intégrité et la confidentialité des données et l’identification de la session.
• Le chiffrement symétrique, à clef secrète ou à simple clef, consiste à
utiliser la même clef pour le chiffrement et le déchiffrement d’un message
M. Il consiste à appliquer une opération (algorithme) sur les données à
chiffrer à l’aide de la clef secrète, afin de les rendre inintelligibles. Cette
même clef servira aussi pour le déchiffrement des messages chiffrés.
Caractéristiques des versions 1 et 2 de SSH
SSH v1 SSH v2
Rhosts (à l’image de rsh dans Unix) Clef d’hôte (clef asymétrique permettant
d’identifier les hôtes exécutant SSH, ou
Kerberons (à base de tickets) les instances du serveur SSH de la
machine elle-même)
Plusieurs méthodes d’authentification
sont configurables pour un même
Une seule forme d’authentification par
utilisateur pour un même accès et le
session
choix est fait lors de la phase
d’initialisation (cf. § 2.2 )
Couche Description
— Authentification du serveur, négociation
des algorithmes, mise en place d’une clef
Transport de session, intégrité et confidentialité des
données, compression, identification de
session.
— Authentification du client (clef
Authentification publique, mot de passe, clef d’hôte),
changement du mot de passe.
— Transfert de port TCP et transfert X,
transfert d’agent d’authentification ;
— Gestion des sessions interactives,
Connexion exécution de programmes distants ;
— Contrôle de flux, gestion des terminaux
(modes et tailles des fenêtres) ;
— Compression des données.
Payload
Random padding
MAC
•Le mécanisme d’authentification par mot de passe (password) est une méthode
d’authentification très simple à mettre en place et qui permet aux utilisateurs
Telnet de migrer vers SSH sans aucun changement au niveau de leur mécanisme
d’authentification sauf que le mot de passe qui transitait en clair avec Telnet est
maintenant encapsulé dans une communication chiffrée, ce qui permet
d’obtenir un meilleur niveau de sécurité de l’authentification. Cependant, cette
méthode d’authentification n’est pas la plus sûre dans SSH. En effet, ce dernier
utilise le même mécanisme de transfert de mot de passe que Telnet qui envoie
un caractère du mot de passe dans chacun des messages. Ceci a augmenté le
nombre d’attaques par analyse de trafic sur cette méthode d’authentification.
2.3.2 L’authentification par clef RSA ou DSA (publickey)
3.3 Le tunneling
• Le shell SSH (la commande SSH) est une version sécurisée de rsh (et
rlogin). SSH veut dire Secure Shell à l’image de rsh qui veut dire Remote
Shell. Quand rsh permet d’obtenir un shell distant aisément, mais sans
mécanisme d’authentification satisfaisant (du point de vue de la
sécurité), SSH procure le même service de façon sécurisée. Ainsi, pour
utiliser SSH, il suffit d’utiliser la commande ssh à la place des
commandes telnet, rsh et rlogin. Donc, à la place d’utiliser la
commande : %rlogin serveur, il suffit d’utiliser maintenant %ssh serveur.
3.2 Le transfert de fichiers par SFTP
SFTP (Secure File Transfer Protocol) est un sous-protocole séparé qui se
situe au-dessus du protocole SSH. Il est utilisé dans le transfert sécurisé
des fichiers. SFTP a plusieurs avantages par rapport au protocole non
sécurisé FTP. D’abord, SFTP chiffre le couple username/password ainsi
que les données transférées en se basant sur les algorithmes
cryptographiques négociés dans la phase d’initialisation du protocole
SSH. En second lieu, il utilise le même port que le protocole SSH, ce qui
élimine la nécessité d’ouvrir un autre port sur les pare-feux. Ainsi,
l’utilisation de SFTP résout également les problèmes connus dans le
protocole FTP avec la traduction des adresses IP (NAT).
• 3.3 Le tunneling
• SSH permet de rediriger n’importe quel flux TCP dans le tunnel de la session SSH.
Cela veut dire que le flux de n’importe quelle application circulant entre les ports
client et serveur habituels, pourra être encapsulé à l’intérieur du tunnel créé par
la session SSH (figure 4). Cette fonctionnalité permet d’établir, entre deux points,
un canal sécurisé par lequel peut transiter n’importe quel type de donnée IP. Le
principe est simple. Prenons l’exemple de la mise en place d’un tunnel IP afin de
sécuriser les connexions entre un client et un serveur POP situé dans l’intranet
d’une entreprise et derrière un serveur SSH. Les étapes sont les suivantes :
Intégrité.
Confidentialité.
Authentification.
Intégrité.
Non rejeu des paquets (grâce
aux cookies, et aux numéros Authentification.
aléatoires utilisés dans la
phase d’initialisation du Non rejeu des paquets (grâce
protocole (SSH-CONN), les aux cookies, et aux numéros Confidentialité.
données envoyées ne peuvent aléatoires utilisés dans la
Intégrité.
pas être rejouées après un phase d’initialisation du
certain temps) protocole (IKE), les données Authentification.
envoyées ne peuvent pas être
Protection d’identité du rejouées après un certain Non rejeu des paquets (grâce
Service de sécurité
client SSH (les méthodes temps). aux numéros aléatoires
d’authentification du utilisés dans la phase
client SSH, par Protection d’identité de handshake du protocole, les
username/mot de passe, l’émetteur et du données envoyées ne peuvent
clef asymétrique ou par récepteur IPSec (les pas être rejouées après un
certificat X.509 sont méthodes certain temps)
chiffrées avec la clef de d’authentification, par
chiffrement SSH). clef partagée, clef
asymétrique ou
Autorisation, (c.à.d, certificat X.509, sont
contrôle d’accès aux protégées par la clef de
comptes), tunnel chiffrement IPSec).
sécurisé, port
forwarding, service de
SSO (Single Sign On).
SSL utilise une
Dépend du méthode de
protocole externe chiffrement
Gestion des clefs à
IKE (basé sur DH asymétrique (RSA
Gestion des clefs travers un échange
ou sur un ou DSA) ou des
Diffie-Hellman.
chiffrement clefs DH pour la
asymétrique). création d’un secret
partagé.
Méthodes
Username/mot de Clef partagée, clef
d’authentification Clef partagée ,
passe, clef asymétrique,
définies dans les certificat X.509.
asymétrique. certificat X.509.
normes
•Une fausse acceptation de la clef publique envoyée par le serveur SSH peut laisser
une personne malveillante détourner le trafic SSH en envoyant une fausse clef lors
de la première connexion au serveur SSH.
•Ce problème peut aussi se poser si le client utilise une clef asymétrique pour
s’authentifier. En effet, le serveur doit disposer de l’ensemble des clefs publiques de
ses clients. L’ensemble des clefs publiques des clients pouvant se connecter au
serveur doit être envoyé préalablement au serveur. Dans le cas d’utilisation d’un
serveur OpenSSH, les clefs publiques des utilisateurs sont toutes ajoutées dans le
fichier ∼ /.ssh/authorized_keys du serveur.
5.2 Les attaques sur le mot de passe
•En encapsulant les données applicatives dans des paquets SSH, ce dernier
ajoute du bourrage à chaque paquet (bourrage de taille fixe pour SSH v1,
bourrage de taille variable en fonction des méthodes de chiffrement par
blocs pour SSH v2) ; SSH chiffre les données et les envoie en clair dans le
champ plaintextlength. Ainsi, un attaquant passif, espionnant le trafic SSH,
est capable de détecter la taille des données envoyées sur le réseau et ainsi
de mener à bien des attaques par analyse de trafic.
•Comme dans Telnet, les caractères formant le mot de passe des clients SSH
sont envoyés directement dans des paquets IP séparés. Une personne
malveillante qui observe ces paquets peut conclure non seulement le
nombre de caractères formant le mot de passe mais elle peut aussi, à travers
des méthodes markoviennes s’appuyant sur le temps et le délai nécessaire
par le client pour introduire son mot de passe, estimer les différents
caractères du mot de passe.
5.3 L’authentification non sûre par « hôte de
confiance »
• Par définition, l’authentification par hôte de confiance renvoie aux
méthodes d’authentification Rhosts, RhostsRSA de SSH-1 et hôte de SSH-2.
Plutôt que de demander au client de prouver son identité à tous les hôtes
qu’il visite, l’authentification par hôte de confiance établit des relations de
confiance entre les machines. Même si l’authentification par hôte de
confiance est pratique pour les utilisateurs et les administrateurs (car elle
permet de mettre en place une authentification automatique entre des
hôtes), cette technique dépend lourdement d’une administration correcte
et de la sécurité des hôtes concernés. En effet, si un seul de ces hôtes est
compromis, un attaquant pourra accéder automatiquement à tous les
comptes des autres hôtes.
Vandyke
Secure CRT
Windows et Versions 1 et (États-Unis) Mot de passe, Version
(version 5.1.
Unix 2 www.vandyk clef publique commerciale
1)
e.com
WinSSHD
WinSSHD
Versions 1 et (États-Unis) Mot de passe, Version
(version 4.15 Windows
2 www.winssh clef publique commerciale
a)
d.com
SSF – SSF est une
(Centre version
IN2P3 – gratuite.
SSF (version CNRS) – Mot de
Windows et C’est une
francisée de Version 1 France passe, clef
Unix adaptation à
SSH) publique
http://polyw la législation
ww.in2p3.fr/ française de
grpinfo/ ssf/ SSH
• 8.Conclusion
• Le protocole SSH constitue une approche puissante et pratique pour
protéger les communications sur un réseau d’ordinateurs. À travers son
mécanisme d’authentification, SSH permet d’effectuer dans un tunnel
sécurisé, des connexions à distance, des transferts de fichiers, et d’autres
fonctionnalités importantes telles que le tunneling et la redirection de
port. Ces deux derniers ont fait de SSH le protocole de sécurité le plus
transparent pour les applications. En effet, une application non sécurisée
peut bénéficier de l’ensemble des services de sécurité de SSH sans aucun
changement/ajout dans son code ou noyau. C’est SSH tout seul qui va
maintenir la sécurité des données applicatives, l’authentification des
entités communicantes, le chiffrement et le contrôle d’intégrité des
données.
• Cependant, même si SSH a pu contourner de nombreuses menaces à la
sécurité liées au réseau, il reste rattaché, dans sa spécification, à une
conception logicielle plus qu’à un vrai protocole de sécurité. Même si SSH,
dans sa version 2, est devenu plus modulaire et extensible, nous pouvons
remarquer que les fonctionnalités de chaque sous-protocole dépendent
fortement des autres sous-protocoles.
• Par exemple, le service d’authentification entre deux entités est divisé
entre la couche d’authentification et la couche de transport. Ceci rend ce
protocole non applicable aux nouveaux environnements sans fils et ainsi
incapable de satisfaire les nouveaux besoins des applications et des
utilisateurs.