Sauvegarder des données cryptées sur Amazon S3
ATTENTION : je vous présente ici une solution de sauvegarde ; effectuez plusieurs tests avant de valider le système et de lui faire aveuglément confiance
Bonjour à vous,
cela faisait longtemps que je n’avais pas écrit sur Ubuntu. Cela ne change rien au fait qu’il s’agit toujours de ma distribution Linux que j’utilise au quotidien et que j’apprécie toujours autant.
Il y a très longtemps, je vous avais présenté ma méthode de sauvegarde.
J’ai gardé la même méthode quelques temps puis j’ai récupéré un serveur. Là, j’ai opté pour une version plus simple avec copie de mes fichiers tels quels sur le serveur si et seulement si ils étaient modifiés depuis la dernière sauvegarde (via l’outil rsync).
Mais voilà, quelle que soit la solution retenue, que se passait-il si un incendie se déclare ? Ou si des voleurs viennent me rendre visite ?
Là, à moins de très bien cacher le disque dur de sauvegarde (le serveur, ce n’est même pas la peine d’essayer) dans une boîte ignifugée, c’est peine perdue…
Une solution serait donc de sauvegarder le tout en ligne mais je me suis retrouvé face à deux problèmes :
- le coût d’une telle solution
- la confidentialité des données
Pour le premier problème, j’ai décidé de tenter ma chance avec le système Amazon S3. Pour 20 Go de données, il faut compter 2 euros par mois (plus les frais de transfert qui sont tout aussi faibles)
Il ne s’agit pas là d’une bête de course mais pour des sauvegardes, nous n’en avons pas vraiment besoin.
La sauvegarde sur Amazon
Après venait le problème sur comment envoyer mes données.
Sous Ubuntu, l’outil s3cmd fonctionne très bien !
Commençons par l’installer :
sudo apt-get install s3cmd
Puis configurons-le :
s3cmd --configure
Vous allez devoir entrer les clés d’identification fournies par Amazon et répondre à quelques questions ; rien de bien sorcier en soi… (répondez YES pour l’utilisation de https ; cela ralentira les transferts mais augmentera la sécurité)
Ensuite, nous allons créer un bucket sur notre compte Amazon. Qu’est-ce ? En termes simples : un dossier (bucket = seau en anglais)…
Et oui, certains prennent parfois un malin plaisir à utiliser des nouveaux mots pour des concepts existants.
s3cmd cb s3://mon_nouvea_seau
Petite particularité : les buckets doivent être uniques pour tout le système S3 ; ce n’est même pas la peine d’essayer d’en créer un qui s’appelle test par exemple.
Astuce lue : préfixer le nom que vous vouliez donner par votre pseudo ou un nom quelconque ; par exemple, dans mon cas, au lieu de test, nous aurions szdavid.test.
Pour vérifier qu’il est bien créé:
s3cmd ls
Maintenant, synchronisons notre premier dossier pour tester :
s3cmd sync /home/mon/dossier/a/sauvegarder s3://mon_nouvea_seau/
Lors du premier lancement, le programme enverra tout le dossier mais, lors des lancements suivants, seules les modifications seront transmises (cela permet d’économiser du temps – le transfert – et de l’argent – les coûts Amazon du trafic)
Pour restaurer dans un autre dossier ? Exactement la même logique !
s3cmd sync s3://mon_nouvea_seau/ /home/mon/dossier/ou/restaurer
Mais où est la sécurité là-dedans ? ? ?
Pour l’instant, je ne faisais que vous présenter l’étape de synchronisation pour que vous voyiez le principe général…
Sécurisons un peu le process
Pour la suite, nous allons utiliser encfs.
Cet outil permet de chiffrer un dossier spécifique. Une fois ce dossier créé, vous pouvez l’ouvrir en clair et l’utiliser comme un dossier classique.
Mas nous sommes dans le cas contraire : le dossier en clair existe déjà, c’est celui que vous voulez sauvegarder.
Pas de problème, ça va fonctionner sur le même principe.
Au final, nous demanderons à s3cmd de sauvegarder le dossier crypté et non pas le dossier clair.
Nous souhaitons sauvegarder le dossier ~/test/.
Créons un dossier qui contiendra les données chiffrées :
mkdir ~/test_enc
encfs --reverse /chemin/complet/vers/test /chemin/complet/vers/test_enc
Il est très important que vous donniez le chemin complet et non pas les raccourcis du style ~/test
~ signifie /home/votre_nom_d’utilisateur.
Sélectionnez le mode standard puis rentrez le mot de passe de votre choix.
Ne l’oubliez pas surtout pas !
Un fichier de configuration va être créé.
Il est impératif de le sauvegarder !
Si vous le perdez, tout comme si vous oubliez le mot de passe, vous perdrez vos données et, surtout, vos sauvegardes.
Nous allons le sauvegarder sur Amazon S3 (nous avons de l’espace à disposition, autant en profiter) :
s3cmd put ~/test/.encfs6.xml s3://mon_nouvea_seau/test.xml
A présent, synchronisons comme nous l’avions fait auparavant avec notre dossier /home/mon/dossier/a/sauvegarder
s3cmd --delete-removed sync test_enc/ s3://mon_nouvea_seau/test
Une fois que c’est fini, nous allons démonter le dossier chiffré :
fusermount -u test_enc/
Maintenant, tout cela est terminé.
La restauration
C’est bien beau d’avoir sa sauvegarde protégée à distance mais, et maintenant, que faisons nous pour récupérer nos données ?
Nous allons d’abord créer deux répertoires, un qui recevra les données cryptées, l’autre les données en clair :
mkdir test
mkdir test_enc
Nous récupérons le fichier XML que je vous ai fait sauvegarder auparavant :
s3cmd get s3://mon_nouveau_seau/test.xml test/.encfs6.xml
Ensuite, nous récupérons tous les fichiers cryptés :
s3cmd sync s3://mon_nouveau_seau/test test_enc/
maintenant, faites voir un
ls test
Vous avez récupéré vos fichier ?
C’est beau, n’est-ce pas ?
N’oubliez pas de libérer le dossier crypté :
fusermount -u Music_enc/
Automatisation peu pratique
Mon gros souci avec ce système est que, à moins de stocker quelque part en clair le mot de passe, l’automatisation du processus n’est vraiment pas simple du tout…
Pour résoudre cela, j’ai finalement opté pour le logiciel Jungle Disk, payant mais qui permet tout cela très bien.
