Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

EC2Rescue à la rescousse : retrouver un mot de passe perdu sur une instance Windows AWS

By Ciara-CloudDec 7, 20236 min read

Cette page est également disponible en English, Deutsch, Español, Italiano, 日本語 et Português.

Récemment, j'ai été confrontée à un imprévu en travaillant avec AWS EC2 Windows.

J'avais créé une Amazon Machine Image (AMI) chiffrée de mon instance Windows EC2. Je me suis heurtée à un blocage : impossible de récupérer le mot de passe Administrateur de l'instance lancée depuis cette AMI chiffrée.

Surprise, car cela tranchait avec mon expérience habituelle des AMI non chiffrées. J'ai finalement réussi à débloquer la situation en réinitialisant le mot de passe depuis une instance EC2 de récupération.

Dans cet article, je vous détaille la démarche que j'ai suivie pour y parvenir.

Création d'une instance chiffrée

Récemment, j'ai eu besoin de sécuriser l'instance Windows sur laquelle je travaillais sur AWS. La solution ? Créer une Amazon Machine Image (AMI) chiffrée de l'instance.

J'ai d'abord créé une AMI de mon instance Windows. Pour la chiffrer, j'en ai fait une copie en activant l'option de chiffrement.

Depuis l'AMI chiffrée, j'ai lancé une nouvelle instance Windows.

J'ai attendu que l'instance passe en cours d'exécution et valide les deux contrôles de statut avant de m'y connecter.

Connexion à EC2 Windows

En tentant d'obtenir le mot de passe Administrateur Windows, je me suis retrouvée bloquée. Le message d'erreur pointait vers l'AMI personnalisée.

Avec la commande EC2 get-password-data, j'ai essayé de récupérer les données chiffrées du mot de passe. Le champ PasswordData était vide. La documentation AWS précise que la génération et le chiffrement du mot de passe peuvent prendre quelques minutes : si vous tentez de le récupérer avant qu'il ne soit disponible, la sortie renvoie une chaîne vide.


aws ec2 get-password-data --instance-id i-0ece1184ee316f9f2
--priv-launch-key ~/.ssh/windows.pem --region eu-west-1 --profile ciara
{
    "InstanceId": "i-0ece1184ee316f9f2",
    "PasswordData": "",
    "Timestamp": "2023-11-02T17:34:27+00:00"
}

Mais après une attente prolongée, le constat était clair : l'instance ne contenait pas de mot de passe Administrateur.

Pourquoi aucun mot de passe ?

Le lancement d'une instance Windows génère un mot de passe unique pour le compte Administrateur. Ce mot de passe est chiffré à l'aide de la paire de clés indiquée au lancement de l'instance. Pour le déchiffrer, il faut fournir le fichier de paire de clés correspondant.

Lorsque vous créez une AMI à partir d'une instance, les données présentes sur ses volumes EBS sont enregistrées dans de nouveaux snapshots EBS. En revanche, le mot de passe du compte Administrateur, lui, n'y figure pas. C'est une mesure de sécurité destinée à garantir un mot de passe unique par instance.

Le service EC2Config ou les scripts EC2Launch (pour Windows Server 2016 et versions ultérieures) génèrent le mot de passe Windows au démarrage. Cela ne se produit qu'au tout premier lancement de l'instance.

Si le mot de passe n'est pas généré pour les AMI re-packagées, impossible de le récupérer. C'est ce qui se produit lorsque EC2SetPassword n'est pas activé avant le packaging de l'AMI.

Voilà pourquoi je n'ai pas pu obtenir le mot de passe Administrateur de mon instance chiffrée.

Comme l'indique la documentation AWS :

Si la génération du mot de passe est désactivée et que vous ne vous souvenez pas du mot de passe de l'instance d'origine, vous pouvez réinitialiser le mot de passe de cette instance.

Réinitialiser le mot de passe

Pour réinitialiser le mot de passe, il faut détacher le volume racine de l'instance Windows, puis le rattacher à une instance temporaire en tant que volume secondaire.

J'appellerai Broken Instance celle dont le mot de passe doit être réinitialisé, et Recovery Instance l'instance temporaire.

Attention : ces deux instances doivent se trouver dans la même Availability Zone.

  1. Sélectionnez la Broken Instance, puis choisissez Actions, Instance state, Stop instance. Lorsque le statut passe à Stopped, passez à l'étape suivante.
  2. Notez le device mapping du volume racine de la Broken Instance (/dev/sda1).
  3. Détachez le volume racine de la Broken Instance. Choisissez Actions, Detach Volume. Lorsque le statut du volume passe à available, passez à l'étape suivante.
  4. Lancez une instance temporaire dans la même AZ que la Broken Instance.
  • Sur la page Launch an instance, sous Network settings, sélectionnez le sous-réseau dans lequel se trouve votre Broken Instance.

  • Sous Configure storage, sélectionnez Advanced.

  • Dans le champ Encrypted, basculez de Not encrypted à Encrypted.
  • Sélectionnez la clé KMS avec laquelle chiffrer le volume.

  • Sous Advanced, attachez un IAM instance profile. Vérifiez que ce profil dispose des permissions KMS nécessaires.

L'instance profile contient un rôle IAM. L'instance s'appuie sur les permissions de ce rôle pour interagir avec les volumes chiffrés rattachés.

5. Attendez que la Recovery Instance soit en cours d'exécution et que les deux contrôles de statut soient validés.

6. Dans le panneau de navigation, choisissez Volumes, sélectionnez le volume détaché de la Broken Instance, puis choisissez Actions, Attach Volume.

  • Dans la boîte de dialogue Attach Volume, pour Instances, sélectionnez la Recovery Instance dans la liste.
  • Pour Device, saisissez xvdf (s'il n'est pas déjà renseigné), puis choisissez Attach.

**Réinitialiser le mot de passe Administrateur**

Connectez-vous à la Recovery Instance via RDP.

Ouvrez une fenêtre de navigateur et téléchargez l'outil EC2Rescue for Windows Server depuis le lien suivant :

https://s3.amazonaws.com/ec2rescue/windows/EC2Rescue\_latest.zip

Extrayez le contenu, puis exécutez EC2Rescue.exe.

  • Lisez le contrat de licence et acceptez les conditions en cliquant sur le bouton I Agree.

Sur l'écran Welcome to EC2Rescue, sélectionnez Next.

Sur l'écran Select mode, choisissez Offline instance.

Sur l'écran Select a disk, sélectionnez le périphérique xvdf, puis choisissez Next.

Si l'erreur The media is write protected apparaît, vous devrez désactiver cette protection sur le disque.

Cette erreur signifie que Windows bloque toute modification du disque. Utilisez l'utilitaire Diskpart pour retirer l'attribut lecture seule. Voici la marche à suivre :

  • Ouvrez l'invite de commandes en tant qu'administrateur.
  • Saisissez diskpart et appuyez sur Entrée.
  • Saisissez list disk et appuyez sur Entrée. La liste de tous les disques du système s'affiche.
  • Saisissez select disk X (remplacez X par le numéro du disque concerné) et appuyez sur Entrée.
  • Saisissez attributes disk clear readonly et appuyez sur Entrée. L'attribut lecture seule du disque doit alors être retiré.

Une fois le volume chargé, choisissez OK.

Sur l'écran Select Offline Instance Option, choisissez Diagnose and Rescue. Sur l'écran Summary, vérifiez les informations et choisissez Next.

Sur l'écran Detected possible issues, sélectionnez Reset Administrator Password, puis choisissez Next.

Sur l'écran Confirm, choisissez Rescue, puis OK.

Sur l'écran Done, choisissez Finish.

Consultez le journal EC2 Rescue pour vous assurer qu'aucun message d'erreur ou d'avertissement n'a été remonté.

Fermez l'outil EC2Rescue for Windows Server, déconnectez-vous de l'instance temporaire, puis revenez à la console Amazon EC2.

Redémarrer l'instance

Détachez le volume secondaire (xvdf) de la Recovery Instance. Rattachez-le comme volume racine (/dev/sda1) à l'instance d'origine.

Vérifiez que l'instance est bien en cours d'exécution et qu'elle valide les contrôles de statut avant de vous y connecter.

J'ai alors pu récupérer le mot de passe administrateur et me connecter en RDP à l'instance chiffrée. La commande EC2 get-password-data renvoie le même mot de passe.

Pensez à terminer la Recovery Instance et à supprimer toute autre instance devenue inutile.

EC2Rescue à la rescousse : récupérer un mot de passe Windows EC2