0% ont trouvé ce document utile (0 vote)
20 vues6 pages

TP1 Enonce

Ce document est un guide pour un TP sur la sécurité réseau, axé sur l'utilisation de SSH et OpenSSL. Il couvre des exercices pratiques sur la connexion à distance sécurisée, l'authentification par clés asymétriques et la gestion de clés avec OpenSSL. Les étudiants sont encouragés à explorer les commandes et à prendre des notes tout au long de l'exercice.

Transféré par

ellanacaldin26
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
20 vues6 pages

TP1 Enonce

Ce document est un guide pour un TP sur la sécurité réseau, axé sur l'utilisation de SSH et OpenSSL. Il couvre des exercices pratiques sur la connexion à distance sécurisée, l'authentification par clés asymétriques et la gestion de clés avec OpenSSL. Les étudiants sont encouragés à explorer les commandes et à prendre des notes tout au long de l'exercice.

Transféré par

ellanacaldin26
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Phelma 2 ème

année
TP n°1 — Sécurité réseau

Il est recommandé de prendre des notes. Se référer à la version


numérique de ce document pour les liens (sur Chamilo).
Une question sur l’effet ou l’utilisation d’une commande ?
man nom de la commande ! !

1 Utilisation de SSH

L’objectif de cette partie de TP est d’étudier l’outil de connexion à distance ssh et l’authentification
sous-jacente. Vous découvrirez aussi quelques utilitaires associés à ssh, comme scp, ssh-keygen,
ssh-copy-id.
L’utilitaire ssh permet d’ouvrir une session de terminal à distance sécurisée. Si vous avez des problèmes
au cours de cet exercice, consultez man ssh. Les répertoires à retenir : $HOME/.ssh sur la machine
cliente et serveur, ainsi que /etc/ssh sur la machine serveur (voir aussi la section ≪ FILES ≫ dans
la page du manuel de ssh). Ces répertoires contiennent entre autres les différentes clés publiques et
privées.
Les informations les plus utiles se trouvent dans la documentation de chaque outil ainsi que sur les
pages man (ssh-keygen. . .). D’autres informations peuvent se trouver dans des tutoriels, sur Wikipédia
ou via des moteurs de recherche.
Dans la suite du TP, lorsqu’on vous demande d’ouvrir une session sur vmcebox-m37305, utilisez l’outil
ssh pour vous connecter sur l’une des machines de salle de TP (sauf la vôtre) dont le nom est sous la
forme vmcebox-m373XX.
(ex : ssh votre login@vmcebox-m373XX). L’indication du nom de login login@ est optionnelle (non
nécessaire) si vous avez le même nom de login sur les deux machines. De même, il n’est pas nécessaire
de donner un nom de machine distante complet avec .phelma.grenoble-inp.fr (FQDN) si vous êtes
dans le même domaine.
Il sera utile en général d’avoir deux fenêtres de type “terminal” : une dans laquelle vous ne ferez pas
de SSH pour voir ce qui se passe sur votre PC local, et une autre dans laquelle vous travaillerez sur
une machine distante après y avoir lancé une commande SSH.

1.1 Premiers pas

Q 1 Connectez-vous par SSH au PC de votre voisin par ssh vmcebox-m37305. Quelle différence
observez-vous sur le souffleur (prompt) de votre shell, i.e. les caractères en début de ligne à gauche de
l’invite de commande juste avant là où vous allez pouvoir taper votre commande ?

1
Q 2 Vérifiez qui est actuellement connecté à ce serveur, à l’aide de la commande ≪ w ≫ . Comparez
avec votre propre machine dans un autre terminal.

Q 3 Essayez de lancer un programme graphique comme xclock (ou en plus rigolo, xeyes qui permet
de suivre le pointeur de la souris) d’abord sur un terminal de votre machine, puis sur le PC distant
par le shell par lequel vous vous êtes connecté en ssh. Cela fonctionne-t-il ?

Q 4 Trouvez l’option de ssh qui active l’affichage graphique à travers le réseau (chercher ≪ X11
forwarding ≫ dans le man ssh). Réessayez ensuite de lancer xclock sur vmcebox-m37305. N’oubliez
pas de vous déconnecter de la session SSH entre chaque essai de connexion !

Q 5 Dans un autre terminal sur votre machine, essayez de terminer ce processus xclock grâce à
la commande killall. Cela fonctionne-t-il ? Pouvez-vous en déduire sur quelle machine s’exécute le
processus xclock ?

Pensez bien à vous déconnecter de la machine de votre voisin.

1.2 Authentification du serveur distant

Pour démarrer d’un environnement vide pour SSH sur votre machine (requis pour cette partie du
TP), vous devez exécuter la commande :
mv ~/.ssh ~/.ssh.sav
À la fin de la séance, vous pourrez au choix conserver l’environnement du TP et supprimer l’ancien
(rm -r ~/.ssh.sav) ou restaurer l’ancien (rm -r ~/.ssh; mv ~/.ssh.sav ~/.ssh).
Ouvrez une session SSH sur gitlab.ensimag.fr, sans préciser de login. N’acceptez pas la connexion
immédiatement.
Le serveur gitlab.ensimag.fr utilise une clé publique ED25519, dont les empreintes SHA256 et MD5
sont (en hexadécimal) :

ED25519 key fingerprint is SHA256:1WMnjPktwTkHJe3ZkK16iIjWZZRE5x4/24hEBHWLsIg.


ED25519 key fingerprint is MD5:c4:12:90:e4:f1:ca:d5:16:74:68:33:83:c8:90:41:d7.

ou alternativement (selon la version du client ssh qui cherche à s’y connecter) une clé ECDSA, dont
les empreintes SH256 et MD5 sont (en hexadécimal)

ECDSA key fingerprint is SHA256:olZGWJVI5+5MsitMuLMtuvForxjZwt4NyOjku/A6btE.


ECDSA key fingerprint is MD5:f8:69:0a:9f:2a:0c:05:0a:cb:dd:9c:62:6f:bb:53:35.

On obtient l’empreinte md5 (deprecated depuis 2008) avec ssh -o FingerprintHash=md5 gitlab.ensimag.fr.

Q 6 Quel est le nombre de bits de l’empreinte MD5 ? Et pour l’empreinte SHA256 ? (que représentent
chacun des caractères de l’empreinte ?)

Q 7 Quelle est la question que l’on vous pose pour savoir si vous acceptez ou non la connexion ? A
quelle condition acceptez-vous ?

Page 2
Q 8 Si les empreintes de la clé publique de l’énoncé et celles données sur votre ordinateur sont égales,
que peut-on en déduire (en supposant que la cryptographie est robuste et n’a pas été compromise, par
exemple par un vol de clés) ? Si elles sont différentes, qu’a-t-il pu se passer (au moins 2 possibilités)
et quelles sont les conséquences si l’on saisit ses identifiants ?

Q 9 Après avoir accepté la connexion (*), inspectez le fichier ~/.ssh/known hosts sur votre machine
cliente. Quelles modifications ont été apportées ?

(*) Nota Bene : En fait, vous ne pouvez pas aller au bout d’un login sur gitlab, car vous n’avez
pas de compte de login vous permettant d’ouvrir un shell sur gitlab. Ainsi la suite de ssh échouera car
il n’y a pas de login à votre nom, donc quel que soit le mot de passe que vous mettiez, vous ne pourrez
pas en donner un valide et vous n’aurez pas de shell. Donc à la demande de mot de passe, répondez
par CTRL-C pour arrêter là votre tentative de connexion.

L’utilitaire ssh-keygen (grâce à la commande : ssh-keygen -l -f <fichier clé>) permet d’af-


ficher l’empreinte de la clé contenue dans le fichier <fichier clé>.

Q 10 Utilisez la commande ssh-keygen avec les bonnes options pour afficher l’empreinte de la clef
pour gitlab.ensimag.fr stockée dans ~/.ssh/known hosts et vérifiez que cette empreinte est tou-
jours celle qui vous a été fournie précédemment.

L’utilitaire ssh-keygen génère par défaut une paire de clés RSA (équivalent à l’option -t RSA) de
taille 3072 bits (minimum 1024)

Q 11 Générez une paire de clés RSA de taille 4096 bits. Lorsque l’utilitaire vous demande où stocker
les clés générées, vous pouvez laisser le chemin proposé par défaut (il suffit de valider avec Entrée).

N.B. : La passphrase est un “mot de passe” (généralement un texte de 4 mots donne un mot de
passe robuste et facile à mémoriser sans le noter) qui permet de chiffrer/déchiffrer localement votre
clé privée. En effet, la clé privée est stockée dans un fichier de votre compte (.ssh/id rsa par défaut),
pour que les applications comme ssh puissent la lire lorsqu’elles en ont besoin. Mais cela fait qu’un
indiscret (profitant de votre compte ouvert, ou un root non scrupuleux) pourrait la lire et la copier.
Donc la clé elle-même peut être chiffrée, pour que ce qui reste stocké sur l’ordinateur ne puisse être
utilisé en votre absence. La passphrase vous sera demandée par ssh pour “déverrouiller” votre clé,
i.e. la déchiffrer avant de l’utiliser. Si vous décidez de mettre une passphrase sur votre clé privée, il
ne faudra pas l’oublier, sinon votre clé privée deviendra inutilisable. Si vous décidez d’appuyer sur la
touche d’entrée lors de cette étape, aucune passphrase ne sera utilisée, et votre clé privée ne sera pas
chiffrée sur votre disque dur, et donc n’importe quelle personne qui aurait accès à votre ordinateur ou
votre compte pourrait utiliser cette clé et se faire passer pour vous.

Q 12 Vérifiez le contenu du dossier où vos nouvelles clés ont été stockées. Quels fichiers ont été
générés et quel est le rôle de chacun ?

Q 13 Générez une paire de clés de taille 16385 bits. Que se passe-t-il ?

Q 14 Générez une paire de clés RSA de taille maximum. Que remarquez-vous ?

Page 3
Q 15 Générez une paire de clés par défaut (sans spécifier de taille) utilisant le système de signature
ed25519 (car pour ed25519 la taille est fixe)

Q 16 Comparez la taille des clés publiques générées avec RSA et ed25519

N.B. Nous verrons plus loin que l’utilitaire openssl permet non seulement de créer des clés comme
ssh-keygen, mais aussi de réaliser d’autres opérations cryptographiques.

1.3 Authentification de l’utilisateur par clés asymétriques

Pour l’instant, vous pouvez vous connecter à vmcebox-m37305 en donnant votre mot de passe. Nous
allons maintenant utiliser un mécanisme évitant de saisir votre mot de passe, par une authentification
avec une clé publique (et la clé privée associée) que vous allez vous créer.

Q 17 Fabriquez une paire de clés RSA à l’aide de l’utilitaire ssh-keygen. Vous pouvez également
utiliser la paire de clés RSA de taille 4096 bits fabriquée précédemment.

Nous allons maintenant transférer votre clé publique sur la machine de votre voisin (n’importe quel
vmcebox-m37305) afin que celle-ci puisse l’utiliser pour vous authentifier. Pour cela, nous allons utiliser
la commande ssh-copy-id.
D’après le man (allez le consulter !), la commande ssh-copy-id ≪ use locally available keys to authorise
logins on a remote machine ≫, ou, en d’autres termes, va copier votre clé publique au bon endroit sur
l’hôte distant. La section DESCRIPTION donne des détails sur sa façon de procéder.

Q 18 Utilisez la commande ssh-copy-id pour copier votre clé publique sur la machine de votre voisin.
Vérifiez ensuite que lorsque vous essayez de vous connecter à vmcebox-m37305, vous n’avez plus besoin
d’utiliser de mot de passe.

Q 19 Sur vmcebox-m37305, regardez le contenu de $HOME/.ssh/authorized keys et comparez le avec


le contenu de votre clé publique. Que remarquez-vous ?

Q 20 Revenez maintenant sur votre machine, et ouvrez de nouveau une connexion cette fois-ci en
mode “verbeux” par ssh -v vmcebox-m37305 Identifiez la suite des opérations faites par votre client
ssh, et notamment l’authentification de la machine distante puis l’utilisation de votre clé privée pour
vous authentifier auprès du serveur.

INFO : L’utilisation d’une passphrase non vide chiffre votre clé privée, ce qui fait que le client ssh
est obligé de vous demander votre passphrase pour répondre au défi d’authentification. Pour éviter
d’avoir à saisir cette passphrase à chaque nouvelle connexion ssh, vous pouvez consulter les commandes
ssh-agent, puis ssh-add, et rajouter ces commandes dans votre fichier .bash profile.

1.4 Ajout de clés SSH sur GitLab

Avec votre navigateur, visitez la page https://gitlab.ensimag.fr et connectez-vous sur votre


compte sur ce site. Si vous n’en avez pas, créez-en un. Dans les réglages de votre compte, ajoutez
votre clé publique pour que Gitlab autorise celle-ci.

Q 21 Connectez-vous à GitLab en SSH avec l’utilisateur git en utilisant cette clé. Cela fonctionne-
t-il ?

Page 4
2 Utilisation de OpenSSL

L’objectif de cette partie de TP est d’étudier l’outil OpenSSL une implémentation d’une grande variété
de primitives cryptographiques symmétriques et asymétriques.
L’outil en ligne de commande est openssl suivi d’une commande (dont la liste s’obtient par openssl
help).
Pour lister les options possibles pour une commande et l’aide associée, ajouter l’option -help. Par
exemple openssl genrsa -help vous donnera la liste des options pour la commande genrsa en charge
de la génération de clés RSA.

2.1 Premiers pas : étude des composants d’une clé

Q 22 Générez une clé (privée) RSA de 2048 bits dans un fichier privkey.pem.

Vous pouvez protéger le fichier de votre clé privée RSA ainsi généré en le chiffrant lui-même (ce fichier)
par un chiffrement de votre choix utilisant comme clé de protection une passphrase à saisir en mode
interactif. Par exemple nous allons produire un nouveau fichier privkey2.pem mais qui sera cette fois
chiffré avec l’algorithme aes256 (alors qu’il était en clair précédemment).

Q 23 Générez maintenant une clé privée RSA de 2048 bits chiffrée en aes256, que vous stockerez
dans un fichier privkey2.pem.

Revenons à la première clé privée RSA (celle que vous avez produite en clair).

Q 24 La commande rsa permet la manipulation et l’inspection de clés RSA. Affichez le modulo de


votre clé. Vérifiez sa taille en bits.

Q 25 Quel est l’exposant public de chiffrement ?

Vous pouvez maintenant générer votre clé publique correspondante à partir de votre clé privée avec
la commande
openssl rsa -in privkey.pem -pubout -out pubkey-rsa-<VOTRE LOGIN>.pem

2.2 Signatures et vérifications

La commande dgst permet de gérer les fonctionnalités de hachage et de signature pour l’authentifi-
cation.
Dans cette partie, vous allez utiliser des fichiers et en copier des fichiers produits dans le répertoire
/tmp/seoc secu de la machine vmcebox-m37305. Pour cela, vous pourrez utiliser la commande scp,
qui fonctionne comme la commande cp de copie de fichiers, mais permettant d’indiquer que la source
ou la destination se trouve sur une machine distante, et exigeant pour cette copie, une connexion ssh.
Par exemple scp [email protected]:/home/pernetc/toto.txt ./dest va recopier le fichier
toto.txt qui se trouve à la racine de mon home sur monserver.com vers le répertoire dest de la
machine ou je me trouve.
Dans le répertoire TP1-openssl-fichiers de la page chamilo 1 du cours, vous trouverez les fichiers
de l’énoncé.
1. https://chamilo.grenoble-inp.fr/main/document/document.php?cidReq=PHELMA4PMISSR1

Page 5
Q 26 Récupérez dans le dossier TP1-openssl-fichiers les 3 fichiers v1.txt, v2.txt et v3.txt.
Parmi ces trois fichiers, un seul est authentique et a été signé par l’un de vos professeurs dans le
fichier signature sign-pernetc.bin. Sa clé publique RSA est le fichier pubkey-rsa-pernetc.pem.
Ces deux fichiers sont également disponibles dans les documents de la page chamilo du cours.
En utilisant la commande openssl dgst, retrouver lequel de ces 3 fichiers est authentique.

Q 27 Créez un fichier reponse-<LOGIN>.txt dans lequel vous indiquerez le numéro de la bonne


solution. Chiffrez ce fichier avec la clé publique de votre professeur dans un fichier que vous appelerez
reponse-<LOGIN>.chiffre.

Q 28 Créez un fichier de signature que vous nommerez reponse-LOGIN.chiffre.signe permet-


tant à votre professeur de vérifier l’authenticité de votre réponse chiffrée. Copiez les deux fichiers
reponse-<LOGIN>.chiffre et reponse-<LOGIN>.chiffre.signe ainsi que votre clé publique que
vous nommerez pubkey-rsa-LOGIN.pem dans le dossier /tmp/seoc-secu/reponses de la machine
vmcebox-m37305 pour que votre professeur vérifie votre réponse.

Page 6

Vous aimerez peut-être aussi