R410B - TP 2

Tour des fonctionnalités de SSH

1. Introduction

Au cours de ce TP vous allez devoir revoir la configuration des interfaces réseaux et l'utilisation de l'outil de connexion à distance ssh qui implémente le protocole de même nom, qui vous a été présenté dans un TP (en maths) et un cours cours-03-ssh.pdf.

ssh est le couteau suisse de l'administration système. Connaître son fonctionnement est ses fonctionnalités est indispensable pour tout informaticien.

2. Préparation de l'environnement

Dossier de travail

  1. Créez un dossier pour le TP dans votre dossier personnel (par exemple ~/r4b10/tp2).

    L'intégralité du TP devrait être fait dans ce dossier !

  2. Copiez l'intégralité du dossier /home/public/r4b10/tp2 dans le dossier de votre TP.

Machine virtuelle

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

    Les commandes à utiliser doivent être :

    vmiut creer r4b10-tp2
    vmiut run r4b10-tp2
    

    Votre machine virtuelle possède 1 Mo de mémoire, un disque dur virtuel de 10 Go sur lequel une version de Debian Bookworm (12.2) et est préinstallée avec 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 ECDSA est SHA256:pIQ72AO/u2dJwwmpjteTC//uKPPnx9ywJ80+4F5jBJg.

    Vous pouvez accéder à la console de votre machine virtuelle via vmiut show r4b10-tp2 et voir les détails de la de machine avec vmiut info r4b10-tp2.

  2. Après vous être connecté en tant que root sur votre machine virtuelle et en appliquant ce que vous avez appris lors du module R306 de M. Peter, modifiez la configuration de l'interface réseau principale (enp0s3) pour que son adresse IP soit 192.168.194.10.

    Si votre mémoire est défaillante reportez-vous aux pages interfaces(5) et ifup(8).

  3. Après avoir lu la page hostnamectl(1), modifiez le nom de votre machine pour qu'elle ait comme nom tp2.
  4. 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 à la machine virtuelle

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 tp2. La première doit être de type RSA et la seconde de type ECDSA. 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_confi de la machine virtuelle=), ajoutez la clé identifiée par ./ssh/premiere, 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 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 prout et tourp 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 de M. Prout et celle de Mme TOURP).

L'identité prout de votre dossier de travail est une clé RSA sans passphrase. L'identité tourp 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 puis soit de vous connecter avec ces identités (c'est-à-dire de vous faire passer pour le propriétaire de la clés, i.e usurper son identité) soit 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 connection (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 correspond à 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. Nettoyage de l'environnement de travail

Supprimez votre machine virtuelle via la commande vmiut rm r4b10-tp2.