Exposé Sur Le SSH
Exposé Sur Le SSH
Exposé Sur Le SSH
Introduction.........................................................................................................................................2
I- Présentation de SSH.........................................................................................................................3
1. Une petite histoire.......................................................................................................................3
2. Le cryptage symétrique, le cryptage asymétrique et le Hashing................................................3
a. Le cryptage symétrique..........................................................................................................3
b. Le cryptage asymétrique........................................................................................................3
c. Le Hashing (Hachage)............................................................................................................4
3. SSH en bref.................................................................................................................................4
a. Le fingerprint..........................................................................................................................4
b. Fonctionnement du SSH........................................................................................................5
c. Quelques cas d’usage du protocole SSH................................................................................7
II- Configuration d’un serveur SSH sur Linux....................................................................................7
1. Installation du client et du serveur SSH sur Debian..............................................................7
2. Installation du client et du serveur SSH sur Fedora...............................................................8
3. Les méthodes d’authentification............................................................................................9
4. Création de la paire de clef.....................................................................................................9
5. Envoie de notre clef public sur le serveur............................................................................10
6. Le fichier de configuration principale du serveur SSH........................................................11
III- Utilisation du SSH.......................................................................................................................12
1. Le SSH sur un client Linux..................................................................................................12
a. Connexion à un serveur SSH...........................................................................................12
b. L’utilitaire Scp (Secure copy)..........................................................................................12
c. L’utilitaire SFTP (SSH File Transfer Protocol)...............................................................13
d. X11 Forwarding..............................................................................................................14
2. Connexion à un serveur SSH depuis un client Windows.....................................................15
3. Visualisons exactement la securité de ssh par rapport à celle offerte par telnet..................16
a. Sniffing des données lors d’utilisation de telnet.............................................................16
b. Sniffing des données en utilisant le protocol ssh.............................................................17
Conclusion.........................................................................................................................................19
Webographie......................................................................................................................................20
1
Introduction
Dès les débuts de l’informatique, les professionnels du secteur travaillant pour
de grosses ou petites entreprises se sont heurtés à un ensemble de problèmes
concernant la gestion d’un parc de serveur. À cette époque, il fallait toujours se
rendre physiquement sur le site où se situaient les serveurs pour pouvoir effectuer des
manipulations complexes comme par exemple faire une sauvegarde des données du
serveur. Ce qui devenait un gros problème pour des personnes travaillant dans
plusieurs entreprises. Pour donc résoudre ce problème, un ensemble de protocoles à
l’instar de Rlogin, Telnet et SSH ont été développés ayant pour but de permettre la
connexion sur le terminal d’une machine distante sur le réseau et d’y effectuer des
tâches sans se déplacer. Ainsi donc, un administrateur système peut administrer
plusieurs serveurs depuis chez lui sans se déplacer et gagner énormément en
productivité. À cause de la vulnérabilité du protocole Telnet qui transmet les
informations en clair sur le réseau, SSH a finalement été adoptés comme standard en
industries.
2
I- Présentation de SSH
1. Une petite histoire
Après que l’Université de Technologie d’Helsinki en Finlande ait été victime
d’une attaque par reniflage de mot de passe (password-sniffing) en 1994, un de leur
chercheur au nom de Tatu Ylönen développa le protocole SSH-1 en 1995 pour son
propre usage. La béta version de celui-ci a suscité un grand intérêt auprès du public si
bien qu’il a rendu son protocole open source et a fondé la SCS (SSH
Communications Security Corp) pour le maintenir, le commercialiser et continuer
son développement. C’est d’ailleurs la SCS qui a standardisé et publié la version 2 de
ce protocole en 1998.
b. Le cryptage asymétrique
Le cryptage asymétrique utilise deux clefs distinctes pour le cryptage et le
décryptage des informations, ces deux clefs sont appelées clef publique et clef privée
et forme une paire de clefs public-privée. La clef publique est disponible et accessible
publiquement à tout moment et cette dernière est utilisée pour le calcul de la clef
privée. Ainsi, une machine ne peut décrypter que des messages qui ont été crypté
3
avec sa clef publique. Comme example, nous avons les cryptosystèmes RSA, DSA,
etc.
c. Le Hashing (Hachage)
Le hachage à sens unique est une forme de cryptographie où les
messages cryptés ne sont pas destinés à être décryptés. Au cours du
processus de cryptage, une valeur unique d’une longueur fixe est
générée pour chaque entrée du message. Ce qui rend pratiquement
impossible le processus inverse.
3. SSH en bref
a. Le fingerprint
Le fingerprint (enprunte numérique) d’une clef publique est une chaîne de 32
caractères hexadécimaux unique pour chaque clef. Lors de la première connexion
avec un serveur SSH, il faut toujours versifier le fingerprint du serveur pour s’assurer
que vous vous connecter au bon serveur pour éviter une attaque man-in-the-
middle.Les administrateurs systèmes doivent donc fournir aux utilisateurs du serveur
4
le fingerprint de celui-ci pour leur permettre de vérifier l’identité du serveur. La
commande suivante permet d’obtenir ce fingerprint.
ssh-keygen -l or ssh-keygen -l -f <path_to_pub_key>
b. Fonctionnement du SSH
Le protocole SSH est intégré aux serveurs Unix et Linux pour permettre des
connexions sécurisées entre les systèmes. Il fournit une méthode d’authentification
par mots de passe ou clef publique et permet de crypter les communications entre
deux points d’un réseau.
➔ Le client crypte son mot de passe avec la clef publique du serveur et l’envoie à
5
➔ Et la chaîne de caractère généré automatiquement représente la clef symétrique
3. La clef publique du serveur est stockée chez le client dans le fichier d’hôte
connue.
6
c. Quelques cas d’usage du protocole SSH
Les connexions SSH sont fréquemment utilisées pour sécuriser les connexions entre
une machine locale et une machine distante pour :
La famille Red Hat est composée des ditributions commes Red Hat Linux
Entreprise, Fedora et Centos
7
Démarrer le serveur SSH
sudo service ssh start
Par défaut, Debian utilise le pare-feu ufw (Uncomplicated Firewall) qui peut
interférer avec le traffic shell sécurisé. Pour autorisé l’accès SSH, utilisez la
commande suivante : sudo ufw allow ssh
8
Étape 4 : récupérer l’adresse IP de notre serveur
ip a
Une fois que vous installer le serveur SSH et que vous le démarrer, il est déja
prêt à fonctionner sans aucune configuration supplémentaire. Nous verons plus loin
ses différents fichiers de configuration et quelques configurations avancées.
L’authentification par mot de passe est vulnérable malgrès le fait que le ssh soit
un protocole sécurisé car les mots de passe sont généralement court, facile à deviner
et retenir. Face donc à la faiblesse de l’authentification par mot de passe,
l’authentification par clef se revèle être très efficaces. Il permet de garantir à un
système qu’un utilisateur est bien celui qu’il prétend être et fonctionne grâce à trois
composantes :
Une clef publique qui sera exposé sur chaque hôte sur lequel on souhaite se
connecter
Une clef privée qui permet de prouver son identité aux serveurs
La création de la paire de clef se fait avec ssh-keygen . Il existe deux types de clefs :
RSA et DSA chacune pouvant être de longueur différente. Pour créer une clef RSA
de 4096 bits, taper la commande suivante :
ssh-keygen -t rsa -b 4096 -C username@domain.tld
9
Lorsque cette commande est exécutée sans paramètre, les options par défaut
sont de type RSA en 2048 bits. Le commentaire permet de distinguer les clefs et est
très utile lorsqu’on en a plusieurs. Il peut être un texte de votre choix, mais en
général, on préfère utiliser l’adresse e-mail de l’organisation concernée pour mieux
différencier nos clefs.
Lorsque vous exécuter la commande précédente, deux fichiers sont crées dans
le dossiers ~/.ssh/ :
id_rsa (ou id_dsa dans le cas d’une clef DSA) : contient la clef privée et ne
doit pas être dévoilée ou mis à disposition
id_rsa.pub (ou id_dsa.pub dans le cas d’une clef DSA) : contient la clef
publique, celle qui sera mis sur les serveurs dont l’accès est voulu
Une fois votre paire de clefs générée, il faut faire en sorte que votre ssh-agent (
agent d’authenfication inclu dans la suite OpenSSH qui tourne en arrière plan en
mémoire et retient les clefs privées pendant toute la durée de la session) la
reconnaisse. Pour cela, il faut utiliser la commande suivante :
ssh-add ou ssh-add /chemin-complet-vers-la-clef/nom_clef
Pour vérifier la liste des paires de clefs existantes, taper la commande suivante :
ssh-add -l
Une fois notre paire de clef générée, il faut envoyer notre clef public sur le
serveur. Pour cela, nous allons utiliser l’authentification par mot de passe pour nous
connecter et envoyer notre clef sur le serveur. Il existe plusieurs manière d’envoyer sa
clef publique sur le serveur. Nous présenterons ici deux méthodes.
Méthode 1 :
cat ~/.ssh/id_rsa.pub | ssh user@ip_machine "cat - >> ~/.ssh/authorized_keys"
Cette commande va lire le fichier $HOME/.ssh/id_rsa.pub (clef publique), se
connecter sur le serveur avec l’adresse ip « ip_machine » avec le nom
10
d’utilisateur « user » et ajouter au fichier des clefs autorisés
($HOME/.ssh/authorized_keys) le contenu de la clef lue.
En générale, la configuration par défaut du serveur SSH est suffisante mais si vous
voulez modifier le comportement par defaut de votre serveur, vous devez modifier le
fichier /etc/ssh/ssh_config où est centralisé toute la configuration de ssh. Le tableau
suivant indique les principales directives à modifier :
11
Voilà cité quelques configurations que vous pouvez effectuer sur votre serveur ssh. Si
vous voulez avoir accès à l’ensemble des configuration possible, vous pouvez faire
une recherche sur internet ou consulter sa documentation interne sur Linux avec la
commande man ssh
Lorsque vous voulez effectuer une authentification par clef privée après avoir généré
votre paire de clef et l’avoir envoyé sur le serveur, vous avez juste à taper la
commande ssh -i <nom_utilisateur>@<adresse_ip_serveur> et le ssh-agent va se
charger de vous connecter en utilisant votre clef public. Dans le cas où votre paire de
clef n’est pas gérée par votre ssh-agent, vous devez en plus indiquer le chemin d’acès
à cette clef publique.
ssh -i <chemin_vers_la_clef_public> <nom_utilisateur>@<adresse_ip_serveur>
12
De votre machine vers une machine distante
Lorsque vous transferez les données avec scp, les fichiers et les mots de passe sont
cryptés, ce qui justifie son usage dans le cadre des échanges SSH.
Pour avoir plus d’information sur l’utilisation de scp, vous pouvez consulter le
manuel avec la commande man scp
Le protocole SCP n'est pas bien conçu et peut entraîner des résultats inattendus. Dans
le passé, il était la source de plusieurs CVE (Common Vulnerabilities and Exposures)
où un serveur malveillant pouvait remplacer des fichiers dans le système de fichiers
local lors du téléchargement de fichiers. Il est recommandé d'utiliser sftp lorsque cela
est possible.
SFTP également connu sous le nom de Secure FTP est une méthode populaire
pour transférer en toute sécurité des fichiers sur des systèmes distants. SFTP a été
conçu comme une extension du protocole Secure Shell (SSH) version 2.0 pour
améliorer les capacités de transfert de fichiers sécurisés. Avec SFTP, les données et
les commandes sont cryptées et transférées dans des paquets binaires spécialement
formatés via une connexion unique et sécurisée utilisant SSH.
Pour se connecter à une machine distante par sftp, utiliser la comande suivante :
sftp username@ip_adresse
L’utitilaire sftp accepte un ensemble de commande similaire à ceux utilisé par ftp.
Les principales sont :
13
Commande Description
ls [directory] Liste le contenu le dossier distant. S’il est non spécifier, le repertoire
courant est utilisé par défaut
cd directory Changer le repertoire courant vers le repertoire « directory »
Pour avoir plus d’informations sur sftp, vous pouvez consulter le manuel sous Linux
avec la commande man sftp et l’explorer en profondeur.
d. X11 Forwarding
X11 Forwarding ou déportage graphique est un mécanisme qui permet à un
utilisateur de démarrer des applications distantes mais de transmettre l'affichage de
l'application à votre ordinateur local. Pour se connecter en mode X11 Forwarding,
utiliser la commande ssh -Y <nom_utilisateur>@<adresse_ip_serveur> . Une fois
connecté, vous pouvez ouvrir n’importe quelle application graphique accessible en
ligne de commande. La figure suivante vous montre un exemple.
14
L’image 1 et l’image 3 représentent le déportage graphique sur le poste client
Les images 2 et 4 représentent les mêmes écrans mais cette fois ci sur le poste
La connexion par ssh sous windows se fait à partir des outils comme PUTTY.La
demarche est la suivante :
Puis, dans la zone port, le port à travers lequel l’on voudrait se connecter (par
defaut, il faut entrer le port 22, sauf si vous l’avez changé).
15
Cette procedure est recapitulée par la capture ci-dessous.
3. Visualisons exactement la securité de ssh par rapport à celle offerte par telnet
Créons deux utilisateurs sur un même hôte possédant les services telnet, l’on se
connecte au premier compte : dans notre cas tderick(qui est considère comme le
serveur telnet) et connectons nous à l’autre compte qui est sur le même hôte (user1) et
lançons l’analyseur réseau Wireshark depuis le début de la connexion(sur le compte
de tderick).
16
Alors, il est bien réel qu’un man-in-the-middle pourrait connaitre avec exactitude et
sans trop d’effort l’ensemble des informations transmises en reseau.
Toujours dans la même configuration que plus haut, le serveur sur le compte
tderick et le client sur le compte user1, lancons wireshark et capturons les paquets et
trames transmises, puis filtrons les via ssh. Pour chaque trame, consultons la section
ssh protocol. On constate que pour une trame envoyée, on a un ensemble de
caractères de la forme xcuolidsyr5672chgsc265. Ceci est en fait un caractère crypté à
l’aide de l’algorithme symétrique AES dans SSH-2 et DES ou 3DES dans SSH-1 par
défaut.
17
Remarque : L’on pourrait effectuer les opérations précédentes sur un plus grand
réseau. Dans ce cadre, il faudrait s’assurer que le man-in-the-middle peut recevoir les
données qui ne lui sont pas destinées. Le point central du réseau pourrait être le hub
pour que les informations arrivent chez tous les nœuds et ainsi, le man-in-the-middle
pourrait y avoir accès ou alors il pourrait mettre sa machine en mode promiscious en
utilisant la commande ip link set <interface_réseau> promisc on et pour le
désactivé taper ip link set <interface_réseau> promisc off
18
Conclusion
Au terme de notre rapport où il était question de vous présenter le Protocole
ssh, il en ressort que c’est un protocole utilisé pour sécuriser la communication dans
un réseau. Nous nous sommes attardées sur l’installation et la configuration du
serveur ainsi que du client ssh. Nous avons également étudié le système de sécurité
des données telles que le cryptage symétrique (clef de cryptage=clef de décryptage)
le cryptage asymétrique (clef publique et clef privée) ainsi que les fonctions de
hachage. Aussi avec le Protocole ssh on peut également prendre le contrôle d’une
machine à distance et effectuer des travaux sur un serveur distant.
19
Webographie
https://blog.keyfactor.com/ssh-protocol
https://documentation.help/PuTTY/you-what.html
https://www.hostinger.fr/tutoriels/ssh-linux/
https://phoenixnap.com/kb/how-to-enable-ssh-on-debian
https://doc.fedora-fr.org/wiki/SSH_:_Authentification_par_cl%C3%A9
https://doc.ubuntu-fr.org/ssh
https://docs.fedoraproject.org/en-US/fedora/rawhide/system-administrators-guide/
infrastructure-services/OpenSSH/#s2-ssh-clients-ssh
https://www.serv-u.com/what-is-ssh-file-transfer-protocol
https://fr.wikipedia.org/wiki/Promiscuous_mode
20