Skip to content

Monter une partition chiffrée avec luks sur raspberry pi

Auteur : Philippe Le Van - @plv@framapiaf.org

Date : 12 novembre 2022

Introduction

Je backupe un serveur perso avec un raspberry pi. Les données sont enregistrées sur un disque USB formaté en ext4 et chiffré avec luks.

Le disque de backup crypté contient tout le contenu important de mon serveur, ainsi qu'une clé privée qui donne un accès en lecture à tout le disque de mon serveur perso. C'est donc important de chiffrer ce disque.

Le backup sur fait dans le répertoire /diskusb qui est le disk usb monté.

Note

  • Mon raspberry pi 3 consomme 3 W quand il ne fait pas le backup et 7 W pendant le backup
  • Le disque USB se met en veille automatiquement quand on ne l'utilise pas et il redémarre en 3 ou 4 secondes. Ca n'est pas gênant pour mes backups. Ce système permet de gagner pas mal en consommation électrique.

Préparer le disque USB

Danger

Faites très attention de formater le bon disque, sinon vous risques de perdre des données !

J'utilise ubuntu son mon PC perso. Avec ubuntu :

  • je branche le disque USB (pré-formaté en exFat par le constructeur)
  • dans l'explorateur de fichier, je fais "clic droit" sur le disque, puis formater, choisir ext4 et cocher "chiffrer le disque"
  • Choisir un code de chiffrement du disque

Configurer Raspbian sur le Raspberry Pi pour qu'il connaisse Luks

Warning

Il faut avoir au moins une version buster de raspbian pour que la version de Luks soit au moins la version 2

1
2
3
4
sudo apt install busybox cryptsetup initramfs-tools

# vérifier la version de luks, il nous faut au moins une version 2
cryptsetup --version

Monter la partition

Trouver l'UUID de la partition

1
sudo blkid

Chez moi ça donne ça

1
2
3
4
/dev/mmcblk0p1: LABEL="boot" UUID="93xx-xxFD" TYPE="vfat" PARTUUID="14088xxx-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="29075e46-xxxx-xxxx-a9e7-55ac02d6e6cc" TYPE="ext4" PARTUUID="14088xxx-02"
/dev/mmcblk0: PTUUID="14088xxx" PTTYPE="dos"
/dev/sda1: UUID="076c02aa-xxxx-xxxx-94b8-817979225e14" TYPE="crypto_LUKS" PARTUUID="68e3fd00-cd1c-xxxx-xxxx-95393c055499"

Modifier le /etc/fstab

1
2
3
4
vi /etc/fstab

# ajouter la ligne suivante on verra après d'où vient le /dev/mapper/diskusb-mapper
/dev/mapper/diskusb-mapper /diskusb ext4 defaults,noauto 0 0

Déchiffrer le disque

1
2
3
4
5
# cette commande va créer un device /dev/mapper/diskusb-mapper qu'on pourra
# ensuite monter
cryptsetup open /dev/sda1 diskusb-mapper

# ici il faut saisir le mot de passe du disque

Monter le disque

1
mount /diskusb

Pas de montage du disque au démarrage

Pourquoi ne pas monter le disque au démarrage ?

Dans notre cas, nous n'allons pas monter le disque au boot du raspberry pour 2 raisons

  1. une raison de sécurité : si quelqu'un arrive chez moi et pique le disque, il piquera le raspberry avec... Autant qu'il ne puisse pas lire les données.
  2. Vu les tutos que j'ai lu en diagonal, ça me parait bien compliqué pour créer un trou de sécurité important.

Conséquence : mot de passe à chaque reboot

La conséquence, c'est qu'il faut retaper le passwd du disque à chaque reboot (ou panne de courant, ...)

Donc je dois faire les opérations à chaque reboot et bien superviser mes backups. En cas de panne de courant, le disque ne remontera pas tout seul.

1
2
cryptsetup open /dev/sda1 diskusb-mapper
mount /diskusb