Aller au contenu principal

Accès physique = fin de partie : changer le mot de passe root d'une VM sans le connaître

Un mot de passe de 30 caractères protège la porte d'entrée. Mais que vaut-il si l'on peut passer par la fenêtre ?

Petite vérification​

Avant de commencer, vérifiez si vous savez encore réaliser ces 3 actions très simples, sur la séance précédente consacrée à la double authentification :

  1. depuis votre dossier tp-2fa, lancer python3 totp.py (ou python totp.py sous Windows) et vérifier que le code calculé pour l'instant 1700000000 est bien celui attendu
  2. expliquer pourquoi les instants 1700000000 et 1700000009 donnent le même code
  3. citer la limite de la double authentification par code TOTP face à un faux site de connexion
📌 Réponse attendue

TP pour réfléchir et résoudre des problèmes​

Votre défi pour aujourd'hui consiste à reprendre la main sur votre propre serveur Linux sans connaître aucun mot de passe, puis à mesurer ce que cela implique

attention

Cette manipulation se fait uniquement sur votre propre machine virtuelle, ou sur une machine dont vous avez l'autorisation écrite. Sur la machine d'une autre personne, sans son accord, elle constitue un accès frauduleux, qui est un délit (article 323-1 du code pénal).

info

Le Cabinet Delmas et son serveur sont fictifs, construits pour l'exercice. Les étapes 1 à 3 se font dans la console de votre VM Debian (celle du cours Linux). Si vous le pouvez, prenez d'abord un instantané de la VM pour pouvoir revenir en arrière.

Étape 1 — Verrouiller soi-même la porte​

Dans la VM, connectez-vous avec votre compte habituel, puis donnez au compte root un mot de passe que vous ne connaîtrez plus :

sudo passwd root

Saisissez une suite de caractères au hasard, sans la noter (si sudo n'est pas installé, passez d'abord par su -). Vérifiez ensuite que la porte est bien fermée :

su -

Saisissez un mot de passe quelconque.

  1. Que répond la machine ?
  2. Pourquoi cette situation correspond-elle à celle d'un administrateur qui a oublié son mot de passe, ou d'un intrus qui ne le connaît pas ?
📌 Réponse attendue

Étape 2 — Démarrer un shell sans mot de passe​

Redémarrez la VM avec sudo reboot. Dès que le menu GRUB apparaît (le menu de choix du système au démarrage), appuyez sur la touche e (edit) alors que la première entrée, Debian GNU/Linux, est sélectionnée. Si le menu ne s'affiche pas, maintenez la touche Maj (démarrage BIOS) ou appuyez sur Échap (démarrage UEFI) juste au démarrage de la VM.

  1. Repérez la ligne qui commence par linux (elle se termine souvent par ro quiet).
  2. Placez le curseur à la fin de cette ligne, ajoutez un espace puis init=/bin/bash.
  3. Démarrez avec Ctrl+X (ou F10).

Quelques secondes plus tard, vous obtenez une invite qui se termine par #. Saisissez :

whoami
id
  1. Quel mot de passe avez-vous saisi pour obtenir cette invite ?
  2. Que renvoient whoami et id ?
📌 Réponse attendue

Étape 3 — Choisir un nouveau mot de passe​

Pendant ce démarrage minimal, le clavier est en disposition QWERTY : certaines touches ne donnent pas le caractère inscrit dessus. Choisissez donc un mot de passe temporaire sans les lettres a, q, w, z et m (par exemple retrouve). Saisissez d'abord :

passwd root

Puis, quelle que soit la réponse, lancez les commandes suivantes :

mount -o remount,rw /
passwd root
sync
reboot -f

Après le redémarrage, connectez-vous en root avec le mot de passe retrouve.

  1. Que se passe-t-il lors du premier passwd root, et pourquoi ?
  2. Quel est le rôle de mount -o remount,rw / ?
  3. La connexion avec le nouveau mot de passe réussit-elle ?
📌 Réponse attendue

Étape 4 — Mesurer ce que l'on vient de faire​

Le serveur du Cabinet Delmas (comptabilité de petites entreprises) est installé dans un placard du bureau d'accueil, sans clé. Il contient les dossiers de clients, leurs coordonnées et leurs déclarations.

  1. Qu'aurait pu lire ou copier une personne qui vient de faire la manipulation des étapes 2 et 3 ?
  2. Un mot de passe root de 30 caractères aurait-il changé quelque chose ? Pourquoi ?
  3. Citez 2 mesures qui auraient rendu cette attaque plus difficile ou inutile.
📌 Réponse attendue

Étape 5 — Répondre à une objection​

Le responsable du Cabinet Delmas vous dit : « Personne ici ne sait se servir d'un terminal Linux, et le serveur est protégé par un mot de passe très solide. Inutile de fermer le placard. » Que lui répondez-vous ?


Restitution orale​

Un étudiant (ou un binôme) vient présenter au tableau la manipulation réalisée (étapes 2 et 3) et sa réponse au responsable du cabinet (étape 5).

  • Durée : 5 minutes de présentation + 2 à 3 minutes de questions.
  • Qui passe : un(e) étudiant(e) (ou un binôme) désigné(e) par l'enseignant.
  • Support : le travail réalisé pendant le TP, aucune préparation supplémentaire n'est nécessaire.
  • Ce qui est attendu :
    • expliquer comment un shell root a été obtenu sans mot de passe ;
    • présenter les conséquences pour le serveur du Cabinet Delmas et les mesures proposées ;
    • répondre aux questions de la classe.
astuce

Cet exercice entraîne à l'oral technique court exigé par plusieurs épreuves du BTS (notamment E5 et E6) : clarté, structure, capacité à répondre à l'improviste.

📌 Une solution

Notions théoriques​

Vous venez de constater qu'un mot de passe ne protège que ce que le système contrôle. Il reste à comprendre pourquoi, et quelles protections complètent cette limite.

Que se passe-t-il au démarrage ?​

Au démarrage d'une machine Linux, plusieurs programmes s'enchaînent :

  1. le micrologiciel (BIOS ou UEFI) initialise le matériel ;
  2. le chargeur de démarrage (GRUB) affiche le menu et lance le noyau ;
  3. le noyau Linux démarre, monte le système de fichiers, puis lance le premier programme du système (init, en pratique systemd) ;
  4. ce premier programme démarre les services et affiche la demande de connexion.

Le mot de passe n'est demandé qu'à l'étape 4. Le paramètre init=/bin/bash placé sur la ligne du noyau remplace l'étape 3 : le noyau lance directement bash, avec les droits de root, avant toute authentification.

info

Le système de fichiers est alors monté en lecture seule (option ro de la ligne du noyau) : c'est pourquoi la commande mount -o remount,rw / est nécessaire avant de pouvoir modifier un fichier comme /etc/shadow, qui contient les empreintes des mots de passe.

Pourquoi on dit « accès physique = fin de partie »​

Lorsqu'une personne dispose d'un accès physique sans limite à une machine, elle peut :

  • démarrer un autre système, ou modifier les paramètres de démarrage (comme dans le TP) ;
  • retirer le disque, le brancher sur une autre machine, et lire ses fichiers ;
  • installer un matériel espion (enregistreur de frappe sur le clavier, par exemple).

Aucun mot de passe du système installé n'est opposable à ces gestes. C'est une règle classique de la sécurité informatique : si un attaquant dispose d'un accès physique illimité à votre machine, ce n'est plus votre machine.

attention

Cette règle vaut aussi sous Windows et macOS : des méthodes équivalentes existent pour réinitialiser un mot de passe à partir d'un support de démarrage. Seule la protection physique des données change réellement la donne.

Les protections, et leurs limites​

ProtectionCe qu'elle empêcheSa limite
Mot de passe GRUBModifier la ligne du noyau depuis le menuNe protège pas du démarrage sur une clé USB ni du retrait du disque
Mot de passe UEFI + ordre de démarrage verrouilléDémarrer un autre support que le disque interneContournable par réinitialisation du micrologiciel quand on ouvre le boîtier
Chiffrement du disqueLire les données sans la phrase de passe, même disque retiréProtège les données, pas la disponibilité ; doit être prévu à l'installation
Sécurité physique du local (porte fermée, baie verrouillée)Approcher la machineDépend des clés et des procédures d'accès

La seule mesure qui protège réellement la confidentialité des données contre un accès physique est le chiffrement du disque : c'est l'objet d'une séance ultérieure. Le reste ralentit l'attaquant ou réduit la probabilité qu'il approche la machine.

Que retenir pour un administrateur ?​

La sécurité d'un serveur se pense en couches : physique (local), matérielle (UEFI, démarrage), système (comptes, droits) et données (chiffrement, sauvegardes). Une couche manquante n'est pas compensée par la force des autres : un très bon mot de passe ne remplace pas une porte fermée.

Pour aller plus loin

Un poste de travail portable est exposé au même risque, en plus grand : la perte ou le vol d'un ordinateur non chiffré équivaut à la perte de tous les fichiers qu'il contient. C'est le scénario de la clé USB perdue vu lors de la séance sur les conséquences d'une fuite de données.


Test de mémorisation/compréhension​


Que permet l'ajout de init=/bin/bash à la ligne du noyau, dans le menu GRUB ?


Pourquoi faut-il exécuter mount -o remount,rw / avant de lancer passwd dans ce shell ?


Pourquoi un mot de passe root de 30 caractères n'a-t-il rien changé dans ce TP ?


Quelle mesure rend les données illisibles même si l'attaquant démarre la machine autrement ?


Pourquoi un mot de passe sur GRUB ne suffit-il pas à protéger les données d'un serveur ?


Pourquoi choisit-on, dans le TP, un mot de passe temporaire sans les lettres a, q, w, z et m ?


Le serveur d'un cabinet est dans un placard ouvert, et le responsable pense que « personne ne sait s'en servir ». Quelle est la mesure prioritaire ?


Cette manipulation (reprendre la main sur une machine sans connaître le mot de passe) est-elle licite sur n'importe quelle machine ?



Bonnes pratiques​

  • Installer un serveur dans un local fermé à clé, dont l'accès est limité aux personnes qui en ont besoin.
  • Ne pas compter sur un mot de passe pour protéger un accès physique : il n'est contrôlé que par le système, une fois démarré.
  • Chiffrer le disque des serveurs et des postes portables : c'est la seule protection qui rend les données illisibles à qui détient la machine.
  • Protéger GRUB et l'UEFI par un mot de passe et verrouiller l'ordre de démarrage, en sachant que cela retarde l'attaquant sans l'arrêter.
  • Ne réaliser cette manipulation que sur sa propre machine ou avec une autorisation écrite : sur celle d'autrui, c'est un délit.
  • Prendre un instantané ou une sauvegarde avant toute manipulation de démarrage, pour pouvoir revenir en arrière.