ENSIIE
                           
Sécurité des réseaux
R. Rioboo
Année 2017-2018

 
Prise en main de ssh

Pour ce TP nous allons nous familiariser avec ssh et ses fonctionalités. Nous utiliserons la machine sfr1.pedago.ensiie.fr que nous appellerons simplement sfr1 dans la suite.

Exercice 1   Dans un terminal, connectez vous sur sfr1. Vous avez peutremarqué qu’on vous a donné une empreinte cryptographie de la clé privée de la machine pedago. Ceci devrait être vérifié car celà constitue une protection contre la classique attaque «Man in the Middle» en vous permettant d’être sûr qu’il s’agit bien de cette machine. Cette empreinte est ensuite stockée dans le fichier ~/.ssh/known_hosts de votre machine pour ne pas avoir à valider cette empreinte à chaque connexion.
Exercice 2   Ouvrez un nouveau terminal et connectez vous sur sfr1 par ssh, vous pouvez remarquer qu’on vous demande votre mot de passe. Nous voulons éviter celà et nous allons crééer notre clé privée. Lisez le manuel de la commande ssh-keygen et crééez vos clés privées et publiques. La clé privée est utilisée sur le client et la clé publique sur le serveur.

Comme vous avez les mêmes fichiers sur sfr1 que sur les machines des salles de TP, votre répertoire ~/.ssh est le même. Si vous travaillez sur votre portable vous devrez éventuellement le crééer sur pedago en mode 700 et y transporter votre clé publique. Les fichiers créés par la génération de clé se trouvent dans ce répertoire.

La clé privée est le fichier id_rsa et doit se trouver sur le client (la machine qui fait le ssh). La clé publique est le fichier id_rsa.pub et doit se trouver sur le serveur (la machine vers laquelle on fait ssh) dans le fichier authorized_keys.

Vous pouvez maintenant vous connecter sur sf1 sans taper votre mot de passe mais votre passphrase utilisée lors de l’exécution de la commande ssh-keygen. L’authentification utilisée est dite «par challenge» c’est à dire que le serveur utilise la clé publique autorisée du client pour poser une question au client qui décode à l’aide de sa clé privée (le fichier id_rsa) et donne la réponse.

Si vous travaillez avec votre portable vous pouvez utiliser les commandes scp ou sftp (dont vous pourrez lire les manuels) sans avoir à taper votre mot de passe pour transférer des fichiers.

Pour ne plus taper la passprase à chaque connexion ssh nouas pouvons l’enregistrer à l’aide de la commande ssh-add.

Exercice 3   Les outils Xwindow fonctionnent en mode client/serveur et le serveur fait les affichages demandés par les clients suivant le protocole X11. Le serveur reçoit en général ses ordres sur le port 6000. C’est la variable d’envirionnement DISPLAY qui indique au client quel serveur il doit contacter. En lisant le manuel de la commande ssh faites en sorte de pouvoir lancer des applications graphiques depuis la machine sfr1, vous pourrez regarder la variable shell DISPLAY sur sfr1 et sur votre machine.
Exercice 4   Le protocole ssh permet également d’avoir des «tunnels», c’est à dire faire l’association entre un port de la machine client et un port de n’importe quelle autre machine accessible depuis le serveur. Pour cela nous devons éditer le fichier de configuration ssh du client soit ~/.ssh/config. En lisant le manuel du fichier ssh_config vous trouverez la documentation de LocalForward et vous pourrez rediriger le port 8080 de votre machine vers le port 80 de la machine sfr2.pedago.ensiie.fr (sfr2). Vous pouvez vérifier que la machine sfr2 n’est accessible que depuis sfr1.

Pour vérifier, vous pourrez pointer votre navigateur sur l’url localhost:8080 jusque ce que vous ayez la page d’accueil de sfr2. Pour des raisons de sécurité la machine sfr1 ne peut pas joindre l’extérieur mais potentiellement vous pous pouvez utiliser cette technique. De même la machine sfr2 n’est pas accessible autrement que via sfr1

Exercice 5   Pendant que vous avez le fichier de configuration de ssh sous la main vous en profiterez pour faire en sorte que les machines sur lesquelles vous vous connectez puissent envoyer des fenêtres X11, c’est plus convivial. Au besoin relisez le manuel ssh et en particulier ce qui concerne X11..
Exercice 6   Un serveur SOCKS offre la possibilité de multiplexer plusieurs ports de destination sur un seul port source, la techique est connue sous le nom de «deep packet embeedding» dans la mesure où on examine le contenu des données envoyées afin d’en déterminer le protocole utilisé et de transmettre les données sur le bon port.

Par exemple une connexion identifiée comme du web sur le port 80 sera transmise via le tunnel ssh comme du web sur le port 80 du serveur que vous contactez via le tunneltextttssh. En relisant le manuel du fichier ssh_config vous pourrez regarder la documention de l’option DynamicForward qui permet de rediriger tous les ports vers le serveur SOCKS implémenté sur votre client ssh

Pour expérimenter cette possibilité vous devrez paramétrer votre navigateur afin d’utiliser un serveur proxy SOCKS sur votre machine locale et le port dynamique que vous aurez choisi. Nous ne pouvons pas expérimenter cette configuration depuis les machines de l’École puisque la navigation internet requiert déjà un proxy.

Exercice 7   Revenons sur l’authentification par challenge, pour ce qui me concerne j’ai des comptes dont je ne rappelle plus le mot de passe et la seule solution est d’installer ma clé publique pour pouvir me loger sans mot de passe.

Le fichier dans votre catalogue de configuration de ssh autorisant les utilisateurs à se connecter sur votre compte se nommme authorized_keys et il contient normalement une liste de ligne décrivant les clé publiques autorisées à se connecter. Avec votre voisin(e) je vous propose d’en ajouter une contenant la clé publique de l’autre, vous pourrez ainsi constater que l’on peut se loger sur votre compte sans avoir besoin de votre mot de passe.

Évidement et à moins d’avoir entière confiance en votre voisin(e) je vous conseille d’enlever la ligne que vous avez ajoutée après l’expérimantation.

Exercice 8   Traditionnelement la cryptographie et la correction d’eereurs sont associées aux techniques de compression de données que nous n’avons pas abordées mais que vous avez déjà vues dans d’autres modules. Le protocole ssh permet aussi de compresser les données qui transitent entre le client et le serveur. Experimentez les différents niveaux de compression; surtout si vous voulez le faire depuis chez vous

This document was translated from LATEX by HEVEA.