R4B10 - TP 3
Tour des fonctionnalités de SSH
1. Introduction
L'objectif de ce TP est de revoir l'utilisation de l'outil de
connexion à distance ssh qui implémente le protocole de même nom,
qui vous a été présenté lors de la SAÉ 303 et un cours
cours-03-ssh.pdf.
Il s'agit de à la fois comprendre que ssh est le couteau suisse de
l'administration système mais aussi en faire un tour rapide des
fonctionnalités principales. Connaître son fonctionnement est ses
fonctionnalités est indispensable pour toutes informaticiennes ou
informaticiens.
Lors de ce TP vous allez devoir travailler en ligne de commande. Il est important de bien faire les étapes de préparation de votre environnement de travail en début de séance et le nettoyage de celui-ci en fin de séance.
2. Préparation de l'environnement
Dossier de travail
- Ouvrez un terminal.
Créez un dossier pour le TP dans votre dossier personnel (par exemple
~/r4b10/ssh) et déplacez vous dans celui-ci.L'intégralité du TP devrait être fait dans ce dossier !
- Récupérez le contenu complet de l'archive
/home/public/r4b10/ssh/ssh.tar.gzdans le dossier de votre TP.
Machine virtuelle
Sur votre machine physique créez une machine virtuelle nommée
r4b10-sshpuis démarrez là.Les commandes à utiliser doivent être :
vmiut creer r4b10-ssh vmiut run r4b10-ssh
Pour mémoire la commande
vmiut helpdonne accès la documentation du wrappervmiut.Cette machine obtient son adresse IP via un serveur DHCP répondant sur son segment réseau qui est
10.42.0.0/16. Son adresse probable est visible via un appel à la commandevmiut info.Elle possède 2 utilisateurs :
rootavec comme mot de passerootuseravec comme mot de passeuser
Par ailleurs la configuration réseau de cette machine est obtenue par un appel à DHCP et l'empreinte de sa clé SSH pour l'algorithme ED25519 est
SHA256:FghmLiSpQ6iUxtlctLQIL7IvJVh5jVR2V4KWzuA5iuc..Mettez à jour les logiciels installés sur votre machine virtuelle, puis installez un serveur
apache2et le navigateur webfirefox-esr.Si votre mémoire est défaillante reportez-vous aux pages
apt(8)ouapt-get(8).
3. Connexion à une machine distante
Génération de clés
Dans votre dossier de TP, générez deux paires de clés identifiées par
./ssh/premiere et ./ssh/seconde. Toutes les deux doivent avoir
avec comme passphrase ssh. La première doit être de type RSA et la
seconde de type ED25519. Chacune doit avoir comme commentaire leur nom
respectif (i.e. premiere et seconde).
Mise en mémoire de la clé privé
Ajoutez vos deux clés dans la liste des clés contrôlées par votre agent SSH.
Autorisation de connexion comme user sur la machine virtuelle
En utilisant ssh-copy-id ajouter la clé identifiée par
./ssh/premiere, comme clé publique autorisée pour l'utilisateur
user sur la machine virtuelle.
Sans utiliser ssh-copy-id ajouter la clé identifiée par
./ssh/seconde, comme clé autorisée pour l'utilisateur user sur la
machine virtuelle.
Vérifiez que vous êtes capable de vous connecter à la machine
machine virtuelle en tant que user avec chacune des deux identités.
Autorisation de connexion comme root sur la machine virtuelle
Sans modifier la configuration du serveur ssh distant (i.e. le
fichier /etc/ssh/sshd_config de la machine virtuelle), ajoutez la
clé identifiée par ./ssh/seconde, comme clé autorisée pour
l'utilisateur root sur la machine virtuelle.
Vérifiez que vous êtes capable de vous connecter à la machine
machine virtuelle en tant que root avec cette identité.
Comment avez-vous fait ?
Pourquoi, depuis votre machine physique, on ne peut-on pas directement
copier la clé dans le fichier /root/.ssh/authorized_keys de la
machine virtuelle ?
Droits sur la clé privée
Changez les droits de la clé privée ./ssh/premiere pour que tout
le monde puisse la lire (644 par exemple).
Essayez de vous connecter avec cette identité (./ssh/premiere) sur la
machine virtuelle en tant que user.
Cela est-il encore possible ? Pourquoi ?
Supprimez la clé de la mémoire de l'agent et ré-essayez de vous
connecter avec cette identité (./ssh/premiere) sur la machine
virtuelle en tant que user.
Cela est-il encore possible ? Pourquoi ?
Chiffrement de clé privée et vols de clés
La présence dans votre dossier de travail des clés identifiées par
jekyll et hyde simule le vol de paires de clés d'un tiers : vous
avez récupéré 2 paires de clés ne vous appartenant pas (celle du
Dr JEKYLL et celle de Miss HYDE).
L'identité jekyll de votre dossier de travail est une clé RSA
sans passphrase. L'identité hyde de votre dossier de travail
est une clé RSA avec passphrase.
Essayez, pour chacune de ces 2 identités, de les ajouter comme clé
publique autorisée pour l'utilisateur user de la machine
virtuelle.
Essayez ensuite de vous connecter avec ces identités (c'est-à-dire de vous faire passer pour le propriétaire de la clé, i.e usurper son identité) et d'ajouter les clés dans la mémoire de votre agent
Pensez à ce que vous avez compris de la question précédente avant vos essais de connexion.
Pour laquelle la connexion (ou l'ajout dans la liste de la'agent) a fonctionné ? Pourquoi ?
4. Limitation d'accès
Lisez la section AUTHORIZED_KEYS FILE FORMAT de sshd(8).
Faites en sorte que la seule commande exécutée sur la machine
virtuelle quand vous tentez de vous y connecter en tant que user
avec l'identité ssh/premiere soit un affichage du message
Utilisation disque suivi du résultat de l'appel de la commande df
limité à la ligne correspondant à la partition /dev/sda1.
Essayez ensuite de vous connecter sur la machine virtuelle avec
chacune des 2 identités ssh/premiere et ssh/seconde.
Quel résultat de connexion différent obtenez-vous ?
5. Raccourcis
Après avoir lu ssh_config(5) faites en sorte que l'appel de la ligne
ssh espace lance une connexion directe à la machine virtuelle en
tant que user avec l'identité ssh/premiere et affiche donc
l'utilisation de l'espace disque de la partition /dev/sda1 de la
machine virtuelle comme vous l'avez mis au point dans l'exercice
précédent.
6. Transfert en tous genre
Copie vers la machine virtuelle
Sur la machine virtuelle, remplacer le fichier
/var/www/html/index.html par celui que vous avez récupéré en début
de TP en utilisant la commande scp.
Affichage déporté
En étudiant ssh(1), déterminez puis exécutez une ligne de commande
permettant d'exécuter firefox sur la machine virtuelle en tant que
user mais de déporter son affichage (considéré comme géré par le
système X11) sur l'écran de votre machine physique.
Faites en sorte que cette commande soit exécutée en arrière plan sur votre machine physique.
Vérifiez que la copie de la question précédente a bien fonctionnée en naviguant avez cette instance de firefox vers l'adresse http://localhost.
Transferts de connexion
Exécutez une ligne de commande permettant uniquement de rediriger toutes les connexions arrivant sur le port 8888 de la machine locale vers le port 80 de la machine virtuelle. Aucune commande ne doit être exécuté par ssh sur la machine virtuelle.
Dans une instance de Firefox sur votre machine physique vérifiez que votre transfert de connexion fonctionne en naviguant vers l'adresse http://localhost:8888. Si le transfert fonctionne vous devez voir la même page que celle observée lors de la question précédente
7. Mise en oeuvre concrête
Écrivez deux scripts offrant les mêmes fonctionnalités implémentées de deux manières différentes.
Ces scripts doivent vous permettre d'afficher l'espace disque utilisé par vos machines virtuelles sur chacune des machines de la salle de TP courante sans interaction.
Pour chaque machine les scripts doivent afficher une seule ligne
composé de 2 mots : le nom de la machine est la taille en Mo du
dossier $VBOXES.
La commande iut-machines pourra vous être utile.
Listez tout ce que vous avez dû mettre en place pour que vos commandes fonctionnent.
8. Nettoyage de l'environnement de travail
Supprimez votre machine virtuelle via la commande vmiut rm r4b10-ssh.