Cryptez vos sauvegardes grâce au Raspberry Pi

Raspberry Pi

Avez-vous déjà imaginé perdre l’intégralité de vos données : photos, vidéos, musiques soigneusement classées, documents importants, et j’en passe ? Moi non. C’est pourquoi j’ai réfléchi à une stratégie de sauvegarde qui couvre les différents risques auxquels sont exposées mes données. Dans cet article, je vous explique comment j’ai mis en place cette stratégie en transformant mon Raspberry Pi en serveur de sauvegarde autonome et sécurisé. On va parler de cryptage des données et taper de la ligne de commande, je suis sûr que vous allez adorer.

Sauvegardez vos données !

Vous n’en avez peut-être pas conscience mais vos données sont exposées à de nombreux risques, voici quelques exemples : problème matériel (défaillance d’un disque, surtension), vol, sinistre (dégât des eaux, incendie), erreur humaine (suppression accidentelle de fichiers), virus. Je ne veux pas vous faire peur mais sans sauvegarde, si un de ces événements se produit, il y a de fortes chances pour que vos données soient totalement perdues. Dans le meilleur des cas, il faudra débourser plusieurs centaines d’euros pour n’en récupérer qu’une partie. Vous comprenez maintenant l’importance d’avoir une stratégie de sauvegarde ?

Si vous ne voulez pas vous embêter et que vous n’avez pas peur de confier vos précieuses données à des sociétés, américaines dans la plupart des cas, vous pouvez opter pour un service de sauvegarde dans le Cloud très simple à mettre en œuvre (crashplan est la référence dans le domaine). Sinon, vous pouvez continuer à lire cet article !

Ma stratégie de sauvegarde

Toutes mes données sont stockées sur un NAS Synology équipé de deux disques de 2 To configurés en RAID 0 (agrégation). J’ai choisi d’effectuer des sauvegardes de l’intégralité de mes données sur deux disques durs. Un disque dur est utilisé pour les sauvegardes quotidiennes pendant que l’autre disque dur est entreposé au bureau. Une fois par mois, j’inverse les deux disques. Celui qui est stocké au bureau fait donc office de sauvegarde mensuelle. De cette manière, j’ai toujours une sauvegarde à l’extérieur de mon domicile.

Ma stratégie de sauvegarde

La sauvegarde quotidienne couvre le risque de défaillance d’un disque et la sauvegarde mensuelle couvre tous les autres. Cela signifie qu’en cas de défaillance d’un disque, j’accepte de perdre les données d’une journée au maximum et dans tous les autres cas, les données d’un mois maximum. C’est mon choix !

Transformez votre Raspberry Pi en serveur de sauvegarde

Vous devez vous demander ce que le Raspberry Pi vient faire là-dedans. En fait, j’ai identifié un dernier risque : le vol du disque qui est entreposé à l’extérieur de mon domicile et l’accès à mes données personnelles par une personne mal intentionnée. La seule solution que j’ai trouvée pour couvrir ce risque est de crypter mes disques de sauvegarde. Mon NAS ne gérant pas cette fonctionnalité en natif, je me suis dit que j’allais utiliser mon Raspberry Pi comme serveur de sauvegarde. Dans cette partie, je vous indique comment j’ai mis en place ce serveur afin que vous puissiez vous aussi avoir une copie sécurisée de vos données.

Je suppose que vous avez déjà installé et configuré Raspbian sur votre nano-ordinateur. Si ce n’est pas le cas, je vous invite à suivre l’excellent tutoriel de Raspbian France. Ouvrez la console (soit directement sur Raspbian, soit en SSH, c’est vous qui voyez), c’est ici que tout va se passer !

Pour partir sur de bonnes bases, nous allons mettre à jour les paquets déjà installés :

sudo apt-get update && sudo apt-get upgrade

Cryptage du disque

Pour crypter le disque dur, nous allons créer un volume crypté sur une des partitions du disque (s’il n’y en a pas, nous allons en créer une). Ensuite, nous allons installer un système de fichier sur ce volume crypté. Pour que vous compreniez un peu mieux l’architecture que l’on va mettre en place, je vous ai fait un petit schéma :

Architecture du disque dur crypté

Installation de cryptsetup

Le programme qui va nous permettre de créer et d’ouvrir un volume crypté s’appelle cryptsetup. Pour l’installer, utilisez la commande suivante :

sudo apt-get install cryptsetup

Création d’une partition

Afin d’obtenir la liste des périphériques de stockage connectés, tapez la commande :

sudo lsblk

Le résultat devrait ressembler à ça :

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 465,8G  0 disk
└─sda1        8:1    0 465,8G  0 part
mmcblk0     179:0    0  14,9G  0 disk
├─mmcblk0p1 179:1    0    63M  0 part /boot
└─mmcblk0p2 179:2    0  14,8G  0 part /

Identifiez votre disque en vous fiant à sa taille. Dans cet exemple, j’ai connecté un disque de 500Go, il porte l’identifiant « sda ». Vous pouvez voir que sous la ligne du disque, il y a une ligne « sda1 » qui fait la même taille que le disque. Cela signifie que mon disque a déjà une partition qui occupe tout l’espace disponible. Si vous êtes dans ce cas, vous pouvez passer à l’étape suivante.

Si aucune ligne n’apparaît sous celle du disque, cela signifie que votre disque n’a pas encore de partition. Nous allons donc en créer une :

sudo parted /dev/sda

L’utilitaire de partitionnement se lance. Pour créer la table des partitions, entrez :

mklabel gpt

Vérifiez les informations du disque en tapant :

print

Voici le résultat de cette commande avec mon disque dur de 500Go :

Model: SAMSUNG HD503HI (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start  End  Size  File system  Name  Flag

Repérez la capacité du disque (ici 500GB) puis entrez la commande suivante en remplaçant « 500GB » par la valeur relevée :

mkpart primary 0GB 500GB

Vous pouvez maintenant fermer l’utilitaire en tapant :

quit

Cryptage de la partition

Pour créer un volume crypté sur une partition de votre disque, entrez la commande suivante en remplaçant « sda1 » par l’identifiant de votre partition :

sudo cryptsetup luksFormat /dev/sda1

Un message d’avertissement s’affiche et vous demande d’écrire « YES » pour montrer que vous êtes un grand garçon et que vous savez ce que vous faites. Vous devrez ensuite saisir deux fois une phrase secrète de votre choix (il s’agit en fait du mot de passe que vous utiliserez pour décrypter le volume donc tachez de vous en rappeler).

Ouverture du volume crypté

Pour ouvrir le volume crypté, vous devez utiliser la commande :

sudo cryptsetup luksOpen /dev/sda1 EncryptedBackup

L’utilitaire vous demande de saisir votre phrase secrète et ouvre le volume crypté. Ce dernier est alors accessible dans le répertoire « /dev/mapper/EncryptedBackup ».

Création du système de fichier

Nous allons maintenant créer un système de fichier ext4 sur le volume crypté :

sudo mkfs.ext4 /dev/mapper/EncryptedBackup

Montage du système de fichier

Il est temps de créer le dossier dans lequel les fichiers du disque seront accessibles et de monter le système de fichier dans ce dossier :

sudo mkdir /mnt/Backup
sudo chmod -R 750 /mnt/Backup
sudo mount /dev/mapper/EncryptedBackup /mnt/Backup

Vérifications et fermeture du volume crypté

Vous pouvez vérifier que le système de fichier est correctement monté grâce à cette commande :

sudo df -hT

La liste de tous les systèmes de fichier montés est affichée :

Sys. de fichiers            Type     Taille Utilisé Dispo Uti% Monté sur
/dev/root                   ext4        15G    3,4G   11G  25% /
devtmpfs                    devtmpfs   459M       0  459M   0% /dev
tmpfs                       tmpfs      463M       0  463M   0% /dev/shm
tmpfs                       tmpfs      463M    6,3M  457M   2% /run
tmpfs                       tmpfs      5,0M    4,0K  5,0M   1% /run/lock
tmpfs                       tmpfs      463M       0  463M   0% /sys/fs/cgroup
/dev/mmcblk0p1              vfat        63M     21M   43M  33% /boot
tmpfs                       tmpfs       93M       0   93M   0% /run/user/1000
/dev/mapper/EncryptedBackup ext4       459G     70M  435G   1% /mnt/Backup

Sur la dernière ligne, vous pouvez voir que notre volume crypté est bien monté.

Vous pouvez aussi utiliser cette commande :

sudo cryptsetup -v status EncryptedBackup

Toutes les informations sur le volume crypté sont alors affichées :

/dev/mapper/EncryptedBackup is active and is in use.
  type:    LUKS1
  cipher:  aes-xts-plain64
  keysize: 256 bits
  device:  /dev/sda1
  offset:  4096 sectors
  size:    976764928 sectors
  mode:    read/write
Opération réussie.

Vous pouvez voir le type de volume, sa taille ainsi que l’algorithme de cryptage utilisé.

Démontez ensuite le système de fichier et fermez le volume crypté :

sudo umount /mnt/Backup
sudo cryptsetup luksClose EncryptedBackup

Création d’une clé de décryptage

La clé de décryptage permettra d’ouvrir le volume crypté sans avoir à taper la phrase secrète. Pour la créer, entrez ces commandes :

sudo dd if=/dev/urandom of=/root/BackupKeyFile bs=1024 count=4
sudo chmod 0400 /root/BackupKeyFile
sudo cryptsetup luksAddKey /dev/sda1 /root/BackupKeyFile

Décryptage avec la clé

Vous pouvez effectuer un test de décryptage du volume avec la clé fraîchement créée :

sudo cryptsetup luksOpen -–key-file /root/BackupKeyFile /dev/sda1 EncryptedBackup

Décryptage automatique

À présent, nous allons faire en sorte que le volume crypté soit automatiquement ouvert au démarrage du Raspberry Pi. Pour cela, nous allons avoir besoin de l’identifiant unique de la partition. Pour l’obtenir, il suffit d’utiliser la commande :

ls -l /dev/disk/by-uuid

La liste des identifiants uniques est affichée :

total 0
lrwxrwxrwx 1 root root 15 juil. 16 09:05 2D2D-CD16 -> ../../mmcblk0p1
lrwxrwxrwx 1 root root 15 juil. 16 09:05 2f840c69-cecb-4b10-87e4-01b9d28c231c -> ../../mmcblk0p2
lrwxrwxrwx 1 root root 10 juil. 22 07:04 61b671e5-d3ea-43dc-8067-65096f1061bb -> ../../sda1
lrwxrwxrwx 1 root root 10 juil. 22 07:04 6e775313-19db-4a67-a1a0-dba4caf005fb -> ../../dm-0

Identifiez celui qui correspond à votre partition (sda1 dans mon cas).

Il faut ensuite indiquer à cryptsetup que si la partition avec l’identifiant unique que vous venez de relever est présente au démarrage du système, il faut la décrypter avec la clé créée à l’étape précédente. Pour cela, vous devez éditer le fichier « /etc/crypttab » :

sudo nano /etc/crypttab

Ajoutez la ligne suivante en remplaçant « UUID » par l’identifiant unique de votre partition :

EncryptedBackup /dev/disk/by-uuid/UUID /root/BackupKeyFile luks

Pour enregistrer les modifications, vous devez faire CTRL + X, appuyer sur la touche « o » puis valider la destination qui est proposée en appuyant sur entrée.

Montage automatique du système de fichiers

Notre volume crypté sera maintenant ouvert au démarrage du système, il ne reste donc qu’à monter automatiquement le système de fichier dans le répertoire « /mnt/Backup ». Pour cela, il faut modifier le fichier « /ect/fstab » en tapant :

sudo nano /etc/fstab

Ajoutez la ligne suivante puis enregistrez vos modifications :

/dev/mapper/EncryptedBackup /mnt/Backup ext4 defaults,nofail 0 2

Délai de démarrage du système

J’ai remarqué que quelques fois, le système finit de démarrer avant que le disque dur USB ne soit initialisé. Dans ce cas, le volume n’est pas monté automatiquement car le disque n’est pas détecté au moment où cryptsetup se lance. Pour pallier à ce problème, nous allons retarder le lancement du système de 15 secondes. Ouvrez le fichier « /boot/cmdline.txt » grâce à la commande :

sudo nano /boot/cmdline.txt

Ce fichier ne contient qu’une seule ligne de texte. Ajoutez un espace puis entrez ce texte avant d’enregistrer vos modifications :

rootdelay=15

Mise en veille du disque

Selon le boîtier du disque dur que vous utilisez, il se peut que votre disque ne se mette jamais en veille. Pour forcer la mise en veille du disque et éviter son usure prématurée, vous pouvez installer l’utilitaire hdparm grâce à la commande suivante :

sudo apt-get install hdparm

Il faut ensuite configurer le délai de mise en veille en éditant le fichier « /etc/hdparm.conf » :

sudo nano /etc/hdparm.conf

Ajoutez ces lignes en bas du fichier en remplaçant 120 par le délai de mise en veille souhaité (c’est en secondes) puis enregistrez :

/dev/sda {
    write_cache = on
    spindown_time = 120
}

Redémarrage du système

Redémarrez votre Raspberry grâce à la commande :

sudo reboot

Une fois que le système est démarré, vérifiez que le disque a bien été automatiquement décrypté avec la commande vue plus haut :

sudo df -hT

Sauvegardez sur le disque

Le temps est venu de créer un utilisateur spécifique pour effectuer vos sauvegardes. Sur la version lite de Raspbian, vous pouvez utiliser « backup » comme login. Ceux qui utilisent la version classique doivent utiliser un autre login car « backup » existe déjà sur le système et je ne sais pas à quoi il sert. Dans ce cas, remplacez « backup » par le login choisi dans toutes les commandes que vous taperez.

Créez l’utilisateur :

sudo useradd backup -m -G users

Spécifiez son mot de passe :

sudo passwd backup

La dernière étape consiste à spécifier que le propriétaire du dossier où est monté notre système de fichier est l’utilisateur que nous venons de créer :

sudo chown backup:users /mnt/Backup

Sauvegardez vos données depuis un NAS

La plupart des NAS sont capables d’effectuer des sauvegardes distantes, soit sur un autre NAS, soit sur un serveur compatible rsync. C’est cette deuxième option qui nous intéresse car il est possible d’installer rsync sur le Raspberry Pi ! Si vous avez choisi la version normale de Raspbian, rsync est déjà installé, sinon, vous devez l’installer en tapant :

sudo apt-get install rsync

Vous pouvez maintenant utiliser votre Raspberry Pi comme destination de sauvegarde sur votre NAS. Par exemple, sur DSM (le système d’exploitation des NAS Synology), il faut :

  • Se connecter à l’interface d’administration
  • Ouvrir Hyper Backup
  • Cliquer sur « Ajouter »
  • Sélectionner « Copie de données distantes »
  • Renseigner les informations suivantes :
    • Type de serveur : Serveur compatible rsync
    • Nom ou adresse IP du serveur : Adresse IP du Raspberry
    • Chiffrement du transfert : Activé
    • Port : 22
    • Nom d’utilisateur : backup
    • Mot de passe : Mot de passe spécifié pour l’utilisateur backup
    • Module de sauvegarde : /mnt/Backup
  • Choisir les paramètres de sauvegarde (dossiers à sauvegarder, fréquence, …)

That’s all !

Sauvegardez vos données depuis n’importe quel PC

Vous pouvez aussi sauvegarder vos données depuis n’importe quel ordinateur connecté au même réseau que le Raspberry Pi. Pour cela, nous allons créer un partage réseau qui sera accessible depuis tous vos PC sous Windows.

L’utilitaire qui permet de créer des partages réseau Windows sur un système Unix s’appelle samba. Pour l’installer, tapez :

sudo apt-get install samba samba-common-bin

Créez l’utilisateur samba en tapant :

sudo smbpasswd -a backup

L’utilitaire vous demande ensuite d’entrer un mot de passe et de le confirmer, entrez celui que vous avez fourni lors de la création de l’utilisateur.

Ouvrez le fichier de configuration de samba en édition en tapant les commandes suivantes (la première commande permet de sauvegarder le fichier de configuration d’origine) :

sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.old
sudo nano /etc/samba/smb.conf

Entrez la configuration suivante :

[global]
workgroup = WORKGROUP  
server string = %h server  
security = user

[Backup]
comment = Disque dur de sauvegarde
path = "/mnt/Backup"  
browseable = yes
read only = no  
writable = yes  
valid users = backup 
create mask = 0750  
directory mask = 0750

Enregistrez le fichier puis redémarrez le service samba pour que la nouvelle configuration soit prise en compte :

sudo /etc/init.d/samba restart  

Vous pouvez maintenant accéder au contenu du disque de sauvegarde en tapant « \\IP_RASPBERRY\Backup » dans la barre d’adresse de l’explorateur de fichier de Windows (en remplaçant « IP_RASPBERRY » par l’adresse IP de votre Raspberry PI). Quand les informations de connexion vous sont demandées, renseignez le login et le mot de passe de l’utilisateur que vous avez créé.

Pour sauvegarder vos données sur ce répertoire partagé, vous pouvez utiliser le logiciel SyncBack. C’est un freeware qui permet de sauvegarder, restaurer et synchroniser des fichiers. Il permet même de planifier vos tâches de sauvegarde automatiques !

J’espère que cet article vous a plu et qu’à partir de maintenant vous aurez le réflexe de sauvegarder régulièrement vos données. Allez, je retourne profiter de mes vacances et réfléchir à de nouveaux projets pour la rentrée. À bientôt !

Commentaires

Il n'y a pas encore de commentaire mais vous pouvez en laisser un grâce au formulaire ci-dessous !


Vous avez aimé cet article ? Dites-le !