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

  1. Ouvrez un terminal.
  2. 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 !

  3. Récupérez le contenu complet de l'archive /home/public/r4b10/ssh/ssh.tar.gz dans le dossier de votre TP.

Machine virtuelle

  1. Sur votre machine physique créez une machine virtuelle nommée r4b10-ssh puis démarrez là.

    Les commandes à utiliser doivent être :

    vmiut creer r4b10-ssh
    vmiut run r4b10-ssh
    

    Pour mémoire la commande vmiut help donne accès la documentation du wrapper vmiut.

    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 commande vmiut info.

    Elle possède 2 utilisateurs :

    • root avec comme mot de passe root
    • user avec comme mot de passe user

    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..

  2. Mettez à jour les logiciels installés sur votre machine virtuelle, puis installez un serveur apache2 et le navigateur web firefox-esr.

    Si votre mémoire est défaillante reportez-vous aux pages apt(8) ou apt-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.