[Tuto] Sauvegarde froide sur clé USB

Eirikr70

Padawan
16 Décembre 2023
104
29
68
Paris, where else ?...
k-sper.fr
Professionnel
Non
Bonjour à tous,
Je vous propose un micro-tutoriel pour partager la solution de sauvegarde froide que j'ai mise en œuvre sur une clé USB.
Quelques petits rappels :
  1. cette sauvegarde vient s'inscrire et "couronner" une stratégie de sauvegarde préexistante consistant à sauvegarder
    • les données (images, contenu, ...),
    • les bases de données (avec les aspects spécifiques liés aux sauvegardes de bases de données, qui font l'objet de processus dédiés liés à chaque base),
    • les traitements (souvent des fichiers docker-compose, des environnements et des configurations, ...),
    • et éventuellement le système associé,
  2. elle constitue l'ultime étape permettant d'avoir une copie de ses données hors site et hors de tout réseau.
Comme je suis tout sauf tech, il y a sans doute de meilleures façons de procéder. Donc que chacun se sente parfaitement à l'aise pour critiquer (constructivement) cette proposition.
Faire une sauvegarde sur clé USB, rien de plus facile, un petit coup de rsync et c'est plié. Sauf que s'agissant d'un support qui a une probabilité non-négligeable d'être perdu ou volé, on ne va peut-être pas laisser traîner ses données en clair. Donc tout l'intérêt de ce tutoriel, c'est de partager la méthode qui permet de crypter les données. Donc voici la démarche que j'ai mise en oeuvre :
J'ai installé le paquet gocryptfs, qui va permettre d'encrypter la clé. J'ai monté ma clé sur /mnt puis j'ai initialisé le cryptage : sudo gocryptfs -init -xchacha /mnt. J'ai utilisé un mot de passe de 32 caractères qui j'ai mis bien au chaud dans Vaultwarden et que j'ai copié dans le répertoire où je garde tous mes scripts de backup : /home/eric/sauvegarde/.pass. Je l'ai laissé en clair car de toute façon si quelqu'un arrive à y avoir accès, il a aussi accès à tout mon système.
Lorsque l'initialisation du cryptage a été réalisée, elle a créé deux fichiers sur la clé : gocryptfs.diriv et gocryptfs.conf. La première ne m'intéresse pas outre mesure, mais la deuxième comporte la configuration du cryptage et notamment une version cryptée de la clé de cryptage. Donc j'ai déplacé ce fichier de la clé vers le répertoire des sauvegardes : sudo mv /mnt/gocryptfs.conf /home/eric/sauvegarde. Ceci étant fait, j'étais fin prêt à la première sauvegarde sur ma clé. J'ai créé le script suivant :
Code:
#!/bin/bash
mount -U <UUID> /mnt
mkdir /srv/copie-ext
gocryptfs -config /home/eric/sauvegarde/gocryptfs.conf -passfile /home/eric/sauvegarde/.pass /mnt /srv/copie-ext
rsync -artucv --delete-during --progress /srv/hdd/nas /srv/copie-ext
fusermount -u /srv/copie-ext
rm -r /srv/copie-ext
umount /mnt
Quelques explications :
La première ligne est le "shebang", qui indique que mon script est écrit en bash.
La seconde monte ma clé sur /mnt. J'ai récupéré l'UUID de la clé par un blkid.
La troisième crée un répertoire (/media/copie-ext) où je vais déposer les données pour qu'elles soient cryptées. En effet, l'outil gocryptfs permet d'avoir sur /mnt la vision des données cryptées et sur /media/copie-ext la vision en clair des données.
C'est ce que je vais faire avec la quatrième ligne :
  • -config /home/eric/sauvegarde/gocryptfs.conf : j'indique à gocryptfs où est le fichier de configuration de la clé, celui qui avait été créé sur la clé et que j'avais déplacé,
  • -passfile /home/eric/sauvegarde/.pass : j'indique le chemin d'accès au mot de passe,
  • /mnt /srv/copie-ext : j'indique que c'est la clé montée en /mnt qui doit recevoir du contenu crypté sur /srv/copie-ext.
La ligne suivante est un rsync classique, qui va déposer une copie incrémentale des données sources (/srv/hdd/nas) sur ma clé cryptée (/srv/copie-ext).
Lorsque cette copie est terminée, je démonte la version cryptée de ma clé avec la commande fusermount. A ce stade, le répertoire /srv/copie-ext est vide et je peux le supprimer et je démonte ma clé de manière traditionnelle.
J'ai désormais l'ensemble de mes données dans la poche, sous une forme sécurisée par un mot de passe de 32 caractères que je ne connais pas moi-même.

Pour retrouver un accès à mes données, je vais procéder sur n'importe quel ordinateur Linux disposant du paquet gocryptfs aux manipulations suivantes :

Je vais copier le fichier gocryptfs.conf sur /home/eric/sauvegarde (vous pouvez le remplacer par le répertoire de votre choix)
Code:
mount -U <UUID> /mnt
mkdir /srv/copie-ext
gocryptfs -config /home/eric/sauvegarde/gocryptfs.conf /mnt /srv/copie-ext
A l'invite de commande, je vais coller le mot de passe. A partir de ce moment-là, j'aurai accès à l'ensemble de mes données sur /srv/copie-ext.
Dans l'éventualité où j'aurais perdu l'accès à mon fichier gocryptfs.conf, je pourrais remplacer la dernière commande par
gocryptfs -masterkey=<clé> /mnt /srv/copie-ext, où <clé> sera la clé de type 12345678-90abcdef-12345678-90abcdef-12345678-90abcdef-12345678-90abcdef que nous avions mis au réfrigérateur plus haut. De la même manière, je pourrai naviguer dans mes données sur /srv/copie-ext.
 
Dernière édition par un modérateur:
  • J'aime
Réactions: Guibim
Je ne connais pas gocryptfs, mais j'aimerais savoir pourquoi tu déplaces le fichier gocryptfs.conf dans ta home ? Il faudrait peut être stocker le mot de passe hors de ton nas pour te permettre de récupérer tes données en cas de vol ou destruction de celui-ci ?
Est ce que tu fais des tests de restauration ?
 
Effectivement, le positionnement du fichier de configuration sur le NAS n'est pas idéal. Il faudrait le stocker sur un autre support, distinct de la clé. Il existe toutefois une solution de récupération en l'absence du fichier conf, mais ça devrait être une solution de dernier recours. Je ferai une mise à jour du tuto dans les prochains jours pour tenir compte de ce point.
 
  • J'aime
Réactions: EVO
Bon, comme je ne peux pas modifier le message initial, j'apporte ici les principaux éléments complémentaires. Lorsque vous déplacez le fichier gocryptfs.conf vers votre NAS, assurez-vous également d'en faire une copie vers un autre support sécurisé, auquel vous conserverez l'accès en cas de destruction du NAS. Pour ma part je l'ai copié dans mon coffre Bitwarden. Si vous perdez l'accès à votre NAS, la sauvegarde du fichier gocryptfs.conf vous permettra d'accéder à votre sauvegarde sur la clé USB en utilisant la commande gocryptfs -config /accès/à/votre/gocryptfs.conf /répertoire/de/montage/de/la/clé /répertoire/de/destination et en saisissant votre mot de passe.
Par ailleurs, lorsque vous créez l'espace crypté (sudo gocryptfs -init -xchacha /mnt), gocryptfs vous donne une clé du type 12345678-90abcdef-12345678-90abcdef-12345678-90abcdef-12345678-90abcdef. Assurez-vous également de copier cette clé à un endroit où elle restera accessible lorsque vous en aurez besoin : si vous perdez l'accès au fichier gocryptfs.conf et/ou à votre mot de passe, elle sera votre unique moyen d'accéder à votre sauvegarde via gocryptfs -masterkey=<clé> /répertoire/de/montage/de/la/clé /répertoire/de/destination.
 
@EVO J'ai l'impression que je ne peux pas éditer mon message d'origine. Est-il possible de me redonner les droits d'édition ? Sinon je vais préciser ici les évolutions à apporter à la démarche.
Salut,
Il faut voir cela avec @FX Cachem
Sinon tu peux aussi citer ton message d'origine pour reprendre la mise en page, et le modifier dans une réponse donc, puis me notifier pour que je fasse la fusion
 
  • J'aime
Réactions: FX Cachem et Eirikr70
bonjour

- faire une sauvegarde de quoi que ce soit sur clé usb est une mauvaise idée à la base
- procéder comme tu le fais empire les choses car tu réécris complètement les données à chaque fois. ( pas incremental) EDIT.. ha si.. gocryptfs travaillant sur chaque fichier sans toucher le fs.... mais qd même le point 1...

le nombre de réécriture n'est pas infini, et ça vaut particulièrement pour les ssd et clé usb.

voici un article qui étaye mon propos : https://www.clubic.com/actualite-51...s-usb-s-est-empiree-ces-dernieres-annees.html

( ne pas retenir la qualité d'écriture calamiteuse... https://www.projet-voltaire.fr/dive...eurs-de-francais-que-lon-commet-a-son-insu-4/)

perso, je fais des sauvegardes à froid sur plusieurs dd usb mécaniques, chiffrés avec veracrypt, montés dans une vm linux sur le nas ( suite absence support veracrypt natif) , et synchronisés avec rsync.
 
Dernière édition:
bonjour

- faire une sauvegarde de quoi que ce soit sur clé usb est une mauvaise idée à la base
- procéder comme tu le fais empire les choses car tu réécris complètement les données à chaque fois. ( pas incremental)

le nombre de réécriture n'est pas infini, et ça vaut particulièrement pour les ssd et clé usb.

voici un article qui étaye mon propos : https://www.clubic.com/actualite-51...s-usb-s-est-empiree-ces-dernieres-annees.html

( ne pas retenir la qualité d'écriture calamiteuse... https://www.projet-voltaire.fr/dive...eurs-de-francais-que-lon-commet-a-son-insu-4/)

perso, je fais des sauvegardes à froid sur plusieurs dd usb mécaniques, chiffrés avec veracrypt, montés dans une vm linux sur le nas ( suite absence support veracrypt natif) , et synchronisés avec rsync.
Salut @shaks2022 comme tu t'en doutes je ne suis pas certain d'être totalement d'accord avec toi. Concernant le support clé USB, il s'agit d'une sauvegarde froide : je ne vais pas le lancer tous les jours mais plutôt une fois par mois ; j'ai d'autres systèmes de sauvegardes régulières selon la nature des données (données/volumes, fichiers docker-compose.yml et environnements, bases de données, système) qui me serviront (et m'ont déjà servi) en cas de problème, dès lors que je n'ai pas perdu l'ensemble de mon système. La sauvegarde à froid vise à avoir un dernier recours si un missile a détruit mon logement (et que je suis encore vivant).
Concernant la réécriture complète, je crois que tu ne maîtrises pas bien le fonctionnement de rsync. Il opère une sauvegarde différentielle, c'est-à-dire qu'il ne va pas toucher les fichiers qui n'ont pas évolué depuis la dernière synchronisation, mais seulement modifier/écrire/effacer les évolutions qui ont eu lieu. De ce fait, tu réécris sur très peu de secteurs si tes données évoluent peu.
 
Bonjour à tous,
Je vous propose un micro-tutoriel pour partager la solution de sauvegarde froide que j'ai mise en œuvre sur une clé USB.
Quelques petits rappels :
  1. cette sauvegarde vient s'inscrire et "couronner" une stratégie de sauvegarde préexistante consistant à sauvegarder
    • les données (images, contenu, ...),
    • les bases de données (avec les aspects spécifiques liés aux sauvegardes de bases de données, qui font l'objet de processus dédiés liés à chaque base),
    • les traitements (souvent des fichiers docker-compose, des environnements et des configurations, ...),
    • et éventuellement le système associé,
  2. elle constitue l'ultime étape permettant d'avoir une copie de ses données hors site et hors de tout réseau.
Comme je suis tout sauf tech, il y a sans doute de meilleures façons de procéder. Donc que chacun se sente parfaitement à l'aise pour critiquer (constructivement) cette proposition.
Faire une sauvegarde sur clé USB, rien de plus facile, un petit coup de rsync et c'est plié. Sauf que s'agissant d'un support qui a une probabilité non-négligeable d'être perdu ou volé, on ne va peut-être pas laisser traîner ses données en clair. Donc tout l'intérêt de ce tutoriel, c'est de partager la méthode qui permet de crypter les données. Donc voici la démarche que j'ai mise en œuvre :
J'ai installé le paquet gocryptfs, qui va permettre d'encrypter la clé. J'ai monté ma clé sur /mnt puis j'ai initialisé le cryptage : sudo gocryptfs -init -xchacha /mnt. J'ai utilisé un mot de passe de 32 caractères qui j'ai mis bien au chaud dans Vaultwarden et que j'ai copié dans le répertoire où je garde tous mes scripts de backup : /home/eric/sauvegarde/.pass. Je l'ai laissé en clair car de toute façon si quelqu'un arrive à y avoir accès, il a aussi accès à tout mon système. Lors de cet encryptage, gocryptfs m'a restitué une clé de type 12345678-90abcdef-12345678-90abcdef-12345678-90abcdef-12345678-90abcdef. Je la copie sur un support auquel je pourrai avoir accès en dernier recours ; nous y reviendrons à la fin.
Lorsque l'initialisation du cryptage a été réalisée, elle a créé deux fichiers sur la clé : gocryptfs.diriv et gocryptfs.conf. La première ne m'intéresse pas outre mesure, mais la deuxième comporte la configuration du cryptage et notamment une version cryptée de la clé de cryptage. Donc j'ai déplacé ce fichier de la clé vers le répertoire des sauvegardes : sudo mv /mnt/gocryptfs.conf /home/eric/sauvegarde afin que si la clé arrive entre les mains d'une personne mal intentionnée il ne puisse pas y accéder. Je la copie également sur un support auquel je garderai l'accès même si mon NAS est détruit, puisqu'il s'agit d'un élément majeur de mon backup ; pour ma part, je l'ai insérée dans mon coffre Bitwarden. Ceci étant fait, j'étais fin prêt à la première sauvegarde sur ma clé. J'ai créé le script suivant :
Code:
#!/bin/bash
mount -U <UUID> /mnt
mkdir /srv/copie-ext
gocryptfs -config /home/eric/sauvegarde/gocryptfs.conf -passfile /home/eric/sauvegarde/.pass /mnt /srv/copie-ext
rsync -artucv --delete-during --progress /srv/hdd/nas /srv/copie-ext
fusermount -u /srv/copie-ext
rm -r /srv/copie-ext
umount /mnt
Quelques explications :
La première ligne est le "shebang", qui indique que mon script est écrit en bash.
La seconde monte ma clé sur /mnt. J'ai récupéré l'UUID de la clé par un blkid.
La troisième crée un répertoire (/media/copie-ext) où je vais déposer les données pour qu'elles soient cryptées. En effet, l'outil gocryptfs permet d'avoir sur /mnt la vision des données cryptées et sur /media/copie-ext la vision en clair des données.
C'est ce que je vais faire avec la quatrième ligne :
  • -config /home/eric/sauvegarde/gocryptfs.conf : j'indique à gocryptfs où est le fichier de configuration de la clé, celui qui avait été créé sur la clé et que j'avais déplacé,
  • -passfile /home/eric/sauvegarde/.pass : j'indique le chemin d'accès au mot de passe,
  • /mnt /srv/copie-ext : j'indique que c'est la clé montée en /mnt qui doit recevoir du contenu crypté sur /srv/copie-ext.
La ligne suivante est un rsync classique, qui va déposer une copie incrémentale des données sources (/srv/hdd/nas) sur ma clé cryptée (/srv/copie-ext).
Lorsque cette copie est terminée, je démonte la version cryptée de ma clé avec la commande fusermount. A ce stade, le répertoire /srv/copie-ext est vide et je peux le supprimer et je démonte ma clé de manière traditionnelle.
J'ai désormais l'ensemble de mes données dans la poche, sous une forme sécurisée par un mot de passe de 32 caractères que je ne connais pas moi-même.
Pour retrouver un accès à mes données, je vais procéder sur n'importe quel ordinateur Linux disposant du paquet gocryptfs aux manipulations suivantes :
Je vais copier le fichier gocryptfs.conf sur /home/eric/sauvegarde (vous pouvez le remplacer par le répertoire de votre choix)
Code:
mount -U <UUID> /mnt
mkdir /srv/copie-ext
gocryptfs -config /home/eric/sauvegarde/gocryptfs.conf /mnt /srv/copie-ext
A l'invite de commande, je vais coller le mot de passe. A partir de ce moment-là, j'aurai accès à l'ensemble de mes données sur /srv/copie-ext.
Dans l'éventualité où j'aurais perdu l'accès à mon fichier gocryptfs.conf, je pourrais remplacer la dernière commande par
gocryptfs -masterkey=<clé> /mnt /srv/copie-ext, où <clé> sera la clé de type 12345678-90abcdef-12345678-90abcdef-12345678-90abcdef-12345678-90abcdef que nous avions mis au réfrigérateur plus haut. De la même manière, je pourrai naviguer dans mes données sur /srv/copie-ext.
Message automatiquement fusionné :

@EVO Le message ci-dessus peut être fusionné. Merci de ton aide.
 
  • J'aime
Réactions: EVO
Salut @shaks2022 comme tu t'en doutes je ne suis pas certain d'être totalement d'accord avec toi. Concernant le support clé USB, il s'agit d'une sauvegarde froide : je ne vais pas le lancer tous les jours mais plutôt une fois par mois ; j'ai d'autres systèmes de sauvegardes régulières selon la nature des données (données/volumes, fichiers docker-compose.yml et environnements, bases de données, système) qui me serviront (et m'ont déjà servi) en cas de problème, dès lors que je n'ai pas perdu l'ensemble de mon système. La sauvegarde à froid vise à avoir un dernier recours si un missile a détruit mon logement (et que je suis encore vivant).
Concernant la réécriture complète, je crois que tu ne maîtrises pas bien le fonctionnement de rsync. Il opère une sauvegarde différentielle, c'est-à-dire qu'il ne va pas toucher les fichiers qui n'ont pas évolué depuis la dernière synchronisation, mais seulement modifier/écrire/effacer les évolutions qui ont eu lieu. De ce fait, tu réécris sur très peu de secteurs si tes données évoluent peu.
si, quand même, pour rsync ça va . par contre, c'est gocryptfs que je connais pas.... interessant d'ailleurs, mais il faut bien comprendre qu'on ne chiffre pas le nom des fichiers (si j'ai bien compris) , ce qui peut poser soucis.
Et même avec une écriture incrementale, la clé usb n'est pas un support fiable pour quoi que ce soit de ce genre... seulement ok pour aller imprimer 3 pages à la poste...
En tout cas, je ne conseille pas : mes 1ers dd mécaniques usb en 2.5" fonctionnent toujours ( 40Go pour le 1er.. imagine de quand il date... ) alors que je ne compte plus les clés usb qui ont finies à la poubelle...
Mais ça ne remet pas tes tutos en question.. faut juste remplacer la clé usb par un dd usb et le tour est joué.
 
si, quand même, pour rsync ça va . par contre, c'est gocryptfs que je connais pas.... interessant d'ailleurs, mais il faut bien comprendre qu'on ne chiffre pas le nom des fichiers (si j'ai bien compris) , ce qui peut poser soucis.
Et même avec une écriture incrementale, la clé usb n'est pas un support fiable pour quoi que ce soit de ce genre... seulement ok pour aller imprimer 3 pages à la poste...
En tout cas, je ne conseille pas : mes 1ers dd mécaniques usb en 2.5" fonctionnent toujours ( 40Go pour le 1er.. imagine de quand il date... ) alors que je ne compte plus les clés usb qui ont finies à la poubelle...
Mais ça ne remet pas tes tutos en question.. faut juste remplacer la clé usb par un dd usb et le tour est joué.
Si, les noms de fichiers sont aussi cryptés. C'est notamment à ça que sert le fichier gocryptfs.diriv.
Pour ce qui est de la nature du support, on peut utiliser le support que l'on veut effectivement. L'intérêt de la démarche proposée ici est de pouvoir laisser "traîner" son support "n'importe où" sans risque d'accès aux données dès lors qu'on a choisi un mot de passe suffisamment fort. Un disque dur mécanique peut être utilisé, mais il est généralement un peu lourd dans la poche avec le porte-clés ;)