TX Printemps 2018 : Déchiffrement des snapshots et restauration d'une machine virtuelle

Afin de déchiffrer les backups de Proxmox chiffrées, un script est présent sur Bob et Alice appelé unencrypt_backup.py.

Il est codé en Python et utilisable avec Python3 ou version supérieure.

Ce script nécessite l’installation du module Python Python-Gnupg en version 0.42 ou au dessus.

pip install python-gnupg

Gnupg doit également être installé.

Afin de pouvoir déchiffrer les snapshots, il est nécessaire d’exporter la clé privée correspondante à la clé publique qui a permis de chiffrer le snapshot. Cette étape devrait être faite avant même de commencer à chiffrer les snapshots. En effet, en cas de crash de l’hyperviseur avec une impossibilité de récupérer les données dessus, la clé privée serait alors rendue illisible et il ne sera alors plus possible de restaurer une machine virtuelle à partir d’un snapshot chiffré.

Pour pouvoir exporter la clé privée, il faut récupéré l’ID de la paire de clés. On utilise pour cela la commande :

gpg --list-keys

L’identifiant de la clé correspond à la deuxième ligne de la section “pub”. Dans la capture d’écran ci-dessus, il vaut : 14C48AF5EB27C44FFB32BDA5251A2C40F37D5633

On récupère donc cette identifiant, et on l’insère dans la commande :

gpg --export-secret-keys -a 14C48AF5EB27C44FFB32BDA5251A2C40F37D5633 > private.key

Le fichier private.key contient la privée. On peut maintenant l’importer sur la machine où va s’effectuer le déchiffrement :

gpg --import private.key

Le script prend un paramètre en entrée le chemin relatif vers une archive .tar contenant la backup chiffrée, telle que produite par le hook-script de Proxmox

python3 unencrypt_backup.py backups/Bob-vzdump-qemu-105-2018_05_23-04_03_16.vma.gz.tar

Une fois lancé, le script demande aussi à l’utilisateur de rentrer la passphrase utilisée pour chiffrer la backup.

Afin de restaurer une VM chiffrée par Proxmox, il est nécessaire de se connecter par SSH à la machine dont on veut restaurer une VM. Si elle est déchiffrée, il n’est pas nécessaire de se connecter, et tout peut s’effectuer depuis l’interface de Proxmox : https://alice.picasoft.net:8006 ou https://bob.picasoft.net:8006

Les étapes suivantes ne sont nécessaires que dans le cas de l’utilisation d’une backup chiffrée.

Etape 1 (VM Chiffrée)

Cette étape n’est nécessaire que dans le cas où la backup à restaurer est chiffrée. Copiez si nécessaire le backup chiffré de votre machine à la machine concernée par la restauration de backup.

scp ~/backup_chiffree root@alice.picasoft.net:/SAVE/dump

Etape 2 (VM Chiffrée)

Les backups récupérables depuis Alice et Bob sont chiffrées, et nécessitent d’être déchiffrées avant de pouvoir être utilisées. Le script de déchiffrement unencrypt_backup.py est disponible sur chacune des machines à l’emplacement ~/scripts.

Afin de déchiffrer le backup, utilisez-le comme ceci :

./unencryptbackup.py cheminverslebackup_chiffré

Etape 3 (VM Chiffrée)

Déplacez la VM de son emplacement actuel vers le dossier suivant :

mv backup /SAVE/dump/

Etape 4 (VM Chiffrée)

Renommez le fichier pour correspondre au format suivant : vzdump-qemu-<Numéro VM>-<ANNEE><MOIS><JOUR>-<HEURE><MINUTES><SECONDES>.vma.gz (retirez le nom de la machine inclue en début du nom du fichier)

mv Bob-vzdump-qemu-105-20180613-040338.vma.gz . vzdump-qemu-105-20180613-040338.vma.gz

Cette étape est nécessaire pour que Proxmox interprète correctement le fichier traité comme une backup effectuée par Proxmox.

Etape 1

Connectez-vous à Proxmox à l’URL https://alice.picasoft.net:8006 (pour Alice) ou https://bob.picasoft.net:8006 (pour Bob)

Etape 2

Cliquez sur la VM à restaurer dans la liste des VM gauche

Etape 3

Si elle est active, désactivez la VM.

Etape 4

Cliquez sur l’onglet Sauvegardes

Etape 5

Sélectionnez la backup à restaurer dans la liste. Si elle n’apparaît pas, vérifiez que le nom du backup sur la machine soit localisée dans le dossier suivant : /SAVE/dump et avec le format de nom suivant : vzdump-qemu-<Numéro VM>-<ANNEE><MOIS><JOUR>-<HEURE><MINUTES><SECONDES>.vma.gz

Etape 6

Cliquez sur le bouton “Restaurer”

Etape 7

Confirmer sur la nouvelle fenêtre ouverte.

  • Le script extrait le contenu de l’archive dans un dossier situé au même niveau que l’archive, contenant la backup d’origine en différentes parties chiffrées tels que créé par le hookscript. * Une fois décompressée, Le programme demande à l’utilisateur de renseigner une passphrase. Elle correspond à la passphrase utilisée pour accéder au répertoire de clés privées de gnupg : via celui-ci, le script peut récupérer automatiquement la clé privée nécessaire pour le déchiffrement. Pour plus de renseignements, se référer à la page suivante : Déchiffrement des snapshots et restauration d'une machine virtuelle * Le script déchiffre chaque partie chiffrée dans l’ordre et recompose progressivement la backup d’origine au même niveau que l’archive. Chaque partie traitée est ensuite effacée. * Une fois toutes les parties traitées et effacées, le dossier dans lequel ont été extraites les backups est effacé
  • txs/infra/backups_p18/dechiffrement.txt
  • de 127.0.0.1