M3102 - TP 1
Configuration interface réseau - Utilisation de SSH
1 Introduction
Au cours de ce module, vous allez devoir installer et surtout gérer des serveurs. Pour ce faire, vous allez travailler à l'aide d'outils de virtualisation.
Le virtualisateur que nous allons utiliser est VirtualBox. Il permet d'exécuter un système invité au sein d'un système hôte.
Le but de cette première séance sera de manipuler la configuration
réseau d'une machine Debian dans une machine virtuelle et de se
familiariser avec l'outil de connexion à distance ssh
qui
implémente le protocole de même nom et qui vous a été présenté en
cours.
2 Création du serveur virtuel de TP
Activez l'environnement de travail via les commandes suivantes exécutées dans le shell de votre machine à l'IUT
source /home/public/m3102/tp1.env demarrer_tp1
Vous devriez obtenir une sortie de ce genre là :
$ demarrer_tp1 Virtual machine 'beaufils-tp1' is created and registered. UUID: 912c1dbb-3d36-49fd-8455-c79634bc45cc Settings file: '/usr/local/virtual_machine/infoetu/m3102/beaufils-tp1/beaufils-tp1.vbox' 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Clone medium created in format 'VDI'. UUID: b4759f53-6956-4c30-bb2a-4a5379c36553 $
Cela vous crée une machine virtuelle ayant 1 Mo de mémoire, un disque dur virtuel de 5 Go sur lequel une version de Debian Bullseye (11.0) est préinstallée avec 2 utilisateurs :
root
avec comme mot de passeroot
user
avec comme mot de passeuser
Par ailleurs la configuration réseau de cette machine est obtenue par un appel à DHCP.
Cette machine, qui est votre serveur virtuel de TP, est par ailleurs
connectée à un réseau virtuel sur lequel se trouve également votre
machine physique de TP (via son interface vmnet8
).
Démarrez votre machine en exécutant la commande vmiut demarrer
dans votre shell.
Vous devriez obtenir une sortie de ce genre là :
$ vmiut demarrer Waiting for VM "beaufils-tp1" to power on... VM "beaufils-tp1" has been successfully started. $
Attendez quelques instants puis vérifiez votre serveur virtuel de TP
Pour cela vous allez devoir :
exécutez la commande
vmiut detailler
Vous devriez avoir une sortie de ce genre là :
$ vmiut detailler etat=running mac=08:00:27:98:d9:df ips-probables=192.168.194.29 etat-disque-virtuel=libre $
- accédez à la console de votre serveur virtuel de TP via la
commande
vmiut console
3 Modification de la configuration réseau
Actuellement, votre serveur virtuel de TP obtient son adresse IP de façon automatique via le protocole DHCP. Nous allons changer cette configuration pour la fixer à une adresse appartenant au réseau virtuel.
Lisez la page ip(8)
et utilisez cette commande pour connaître
l'adresse IPv4 :
- de l'interface
vmnet8
de la machine physique de TP, - de l'interface
enp0s3
du serveur virtuel de TP.
De même, déterminez la route par défaut (aussi appelée passerelle) de votre serveur virtuel de TP.
Lisez la page resolv.conf(5)
et déterminez la configuration DNS de
votre serveur virtuel de TP.
Après avoir lue les pages de manuel interfaces(5)
, ifup(8)
,
rédigez une procédure permettant de changer l'adresse IP de votre
machine.
N'oubliez pas d'y inclure la configuration de la passerelle ainsi que du serveur DNS aux valeurs que vous aurez obtenues dans les questions précédentes.
Faites valider votre procédure par votre enseignant, puis appliquez la pour configurer votre serveur virtuel de TP de façon à ce que son adresse soit fixée à :
192.168.194.10
Redémarrez le serveur virtuel de TP.
À l'aide de la commande ping
, vérifiez que :
- les deux machines puissent communiquer entre elles
- de la machine physique de TP vers le serveur virtuel de TP,
- du serveur virtuel de TP vers la machine physique de TP ;
- le serveur virtuel peut joindre la machine
www.univ-lille.fr
. On s'assure ici que le serveur virtuel de TP est non seulement capable de communiquer vers le réseau du campus mais aussi qu'il peut le faire en utilisant des noms plutôt que des adresses IP.
4 Connexion distante
L'utilisation de la console du serveur virtuel de TP n'est pas des plus pratiques (pas de copier/coller, limitation à 80x25 caractères, etc.). Par ailleurs, si vous êtes amenés à administrer des machines, vous souhaiterez éviter le plus possible leur administration directement dans la salle qui les héberge (surtout si ce sont des machines physiques ou virtuelles louées chez un hébergeur).
Nous allons donc utiliser un logiciel de connexion à distance pour
administrer le serveur virtuel de TP. Cet outil est ssh
. Comme vu
en cours, il permet la connexion à distance à travers une connexion
chiffrée et sécurisée.
Sur votre votre machine physique de TP, supprimez la ligne
StrictHostKeyChecking no
, si elle est présente, du fichier
~/.ssh/config
. Si vous n'avez jamais modifié ce fichier, vous
pouvez tout simplement le supprimer.
Première connexion
Lisez la page de manuel ssh(1)
et trouvez la ligne de commande
nécessaire pour vous connecter de la machine physique de TP vers le
serveur virtuel de TP en tant que l'utilisateur user
.
En exécutant cette commande, un message similaire au message suivant devrait apparaître :
The authenticity of host '192.168.194.10 (192.168.194.10)' can't be established. ECDSA key fingerprint is SHA256:SQd8rO9+kH/WsLj2A4O1KkBj5FKw9dVYEqmiH42YDUQ. Are you sure you want to continue connecting (yes/no)?
Ne répondez pas yes
!
Ce message indique que votre client ssh
ne s'est jamais connecté au
serveur virtuel de TP. Il vous demande alors de vérifier si
l'empreinte (fingerprint en anglais) du certificat de la machine
correspond bien à la machine à laquelle vous voulez vous connecter.
Le but de cette vérification est de vous assurer que vous vous connectez bien à une machine de confiance. En effet, si la machine à laquelle vous tentez de vous connecter n'est pas la votre, mais une machine contrôlée par un tiers malveillant, il pourrait récupérer votre mot de passe.
Lisez la page ssh-keygen(1)
et trouvez comment afficher, sur votre
serveur virtuel de TP, l'empreinte de la clé de type ECDSA du,
stockée dans le fichier /etc/ssh/ssh_host_ecdsa_key.pub
.
Vérifiez que cette empreinte correspond à celle que vous avez obtenue, sur votre machine physique de TP, en tentant de vous connecter au serveur virtuel de TP.
Si c'est le cas, vous pouvez saisir yes
et établir la connexion.
Déconnectez vous du serveur virtuel de TP et effectuez à nouveau la connexion. Devez-vous à nouveau vérifier l'empreinte ? Pourquoi ?
Simulation d'une attaque
Vous allez simuler ce qui se passerait si un tiers malveillant avait modifié le réseau pour que votre connexion n'aboutisse pas sur votre serveur mais sur un autre (en truquant les réponses du serveur DNS par exemple) ?
Pour cela vous allez modifier les clés du serveur virtuel de TP.
À l'aide de la commande ssh-keygen
, générez, sur le serveur
virtuel de TP, un nouvel ensemble de clés, de type ECDSA, puis
redémarrez ensuite son serveur ssh
à l'aide de la commande
service ssh restart
(ou systemctl restart ssh
).
Refaites une tentative de connexion. Que se passe-t-il ? Pourquoi ?
Sur votre machine physique de TP, utilisez la commande ssh-keygen
pour supprimer l'empreinte de l'ancienne clé.
Authentification par échange de clés
Comme vous avez pu le voir dans les exercices précédents, il est
possible de se connecter à une machine distante avec ssh
en
fournissant son login et son mot de passe.
Il existe une autre solution pour prouver votre identité au serveur. Cette solution est de vous authentifier à l'aide d'une paire de clés. C'est le même principe que celui utilisé pour la vérification de l'identité du serveur.
Dans cet exercice, vous allez donc vous fabriquer une paire de clés (publique et privée) que vous utiliserez ensuite pour vous connecter à votre serveur, sans avoir à donner votre mot de passe.
Sur votre machine physique de TP et seulement si vous n'avez pas
déjà des clés SSH, fabriquez une paire de clés en utilisant la
commande ssh-keygen
pour fabriquer des clés de type RSA. Cette clé
devra être générée dans le fichier par défaut : ~/.ssh/id_rsa
.
Quand la commande vous le demande, saisissez une passphrase pour cette clé. Ce sera le mot de passe de la clé. En effet, pour plus de sécurité, cette clé sera stockée dans un fichier chiffré. La passphrase sert alors de clé de chiffrement.
La commande que vous avez utilisée a produit deux fichiers :
id_rsa
: c'est votre clé privée. Comme son nom l'indique, elle est privée et ne doit jamais être communiquée à quiconque ;id_rsa.pub
: c'est votre clé publique. Vous pouvez communiquer cette clé. Elle permettra de vérifier, par des moyens cryptographiques, que vous possédez bien la clé privée associée.
Pour utiliser cette paire de clés, vous devez fournir à la machine
sur laquelle vous voulez vous connecter votre clé publique. Dans
le cas de ssh, un utilisateur peut autoriser une connexion en
ajoutant une clé publique au fichier ~/.ssh/authorized_keys
de la
machine sur laquelle il veut se connecter.
Lisez la page de ssh-copy-id(1)
et trouvez comment ajouter la clé
publique que vous venez de créer au compte user
de votre serveur virtuel de TP.
Connectez-vous à votre serveur virtuel de TP en tant que user
depuis votre machine physique de TP.
Connexion root
Sous Debian et par défaut on peut se connecter en tant que
l'utilisateur root
via ssh uniquement si l'authentification n'est
pas faite par l'échange de mot de passe. Cette politique de
sécurité est fixée par une valeur fixée à la clé PermitRootLogin
dans le fichier /etc/ssh/sshd_config
. Elle est justifiée par le
choix d'éviter les authentifications interactives (via la saisie
d'un mot de passe au clavier par exemple).
Après avoir lu la page sshd_config(5)
rédigez une procédure vous
permettant d'ajouter votre clé publique comme clé autorisée pour
l'utilisateur root
de votre serveur virtuel de TP. La politique
de sécurité de Debian doit être la même avant et après
l'application de votre procédure.
Faites valider votre procédure par votre enseignant puis appliquez
votre procédure et vérifiez que vous pouvez vous connecter depuis
votre machine physique de TP vers votre serveur virtuel de TP en
tant que root
.