Crypter un disque sous Raspberry Pi
Principe
Utiliser une application qui va permettre de crypter de façon transparente les données d'une partition Linux. Une fois installée, vous pourrez donc utiliser cette partition comme n'importe quelle autre partition.
Cette application devra permettre de protéger vos données en cas de vol de votre disque, le voleur ne pouvant pas accéder à vos données sans les informations de décryptage !
Partir d'un disque vierge ou d'un disque déjà partitionné, mais dans ce second cas, les données de la partition à crypter seront déjà sauvées !
En effet, la solution consiste à crypter une partition complète d'un disque. Or, il n'est pas possible de faire ces opérations avec de données déjà présentes et qui doivent être conservées sur cette partition avec la solution proposée ici. Elles seront forcément effacées.
Evidement, il faudra être root pour pouvoir effectuer ces opérations (Utilisez su ou sudo par exemple).
La première étape sera de créer une partition à crypter
Sur un disque vierge, il faut créer la ou les partitions:
Pour un partitionnement déjà existant, il faudra juste vérifier les partitions déjà existantes et réajuster si nécessaire (pensez à sauver vos données avant !!!)
Il existe différentes solutions pour partitionner un disque. Le plus simple étant d'utiliser de l'utilitaire cfdisk:
cfdisk /dev/sda
Pensez à sauver vos modifications du disque avant de quitter !
Avec sda comme exemple, à remplacer par votre disque !!!
Rappel: fdisk -l permet de lister les diques présents.
Ensuite, installer cryptsetup
cryptsetup sera la solution utilisée pour crypter vos données...
Pour installer l'utilitaire, tapez
apt-get install cryptsetup
Formatter la partition à crypter
Il s'agit maintenant de préparer une partition pour le cryptage
cryptsetup luksFormat /dev/sda1
Ici, j'indique sda1, là aussi, à remplacer par la partition vous convenant (sda1, sda2, sdb1, ...)
L'utilitaire demande une confirmation, car vous allez perdre toutes vos données !
WARNING!
========
Cette action écrasera définitivement les données sur /dev/sda1.
Are you sure? (Type 'yes' in capital letters):
Répondez YES en majuscule
Puis il faudra saisir une phrase qui sera utilisée pour crypter/décrypter le contenu de la partition:
Saisissez la phrase secrète pour /dev/sda1 :
Vérifiez la phrase secrète :
Maintenant que le container est fait, il faut de nouveau formater mais pour obtenir un filesystem dans la partition cryptée...
Il faut d'abord ouvrir l'accès à la partition cryptée
cryptsetup luksOpen /dev/sda1 unNom
Où vous mettez ce que vous voulez comme nom à la place de unNom. Ce nom sera utilisé pour accéder à la partition cryptée. Partition qui sera accessible dans le répertoire « /dev/mapper/unNom
Il est maintenant possible d'accéder à la partition crypté en utilisant les commandes classiques d'Unix
Comme par exemple formater afin d'obtenir un système de fichier Linux de type ext4:
mkfs.ext4 /dev/mapper/unNom
Montage du système de fichier
La partition est maintenant cryptée et un file system de type linux ext4 existe dessus. Vous pouvez maintenant monter tout cela pour pouvoir l'utiliser !
Les montages de disques se font traditionnellement sous /mnt, il suffit d'y créer un sous-répertoire qui va recevoir le montage disque:
mkdir /mnt/unNomMontage
unNomMontage pourra être identique à unNom ou être complétement différent, suivant vos préférences !
Vous pouvez ensuite positionner vos droits, par exemple
chmod -R 750 /mnt/unNomMontage
Il ne reste plus qu'à monter votre nouveau disque Linux Ext4 crypté:
mount /dev/mapper/unNom /mnt/unNomMontage
Visualiser les diques
La commande df permet de visualiser l'ensemble des disues, les disques cryptés y seront aussi visibles (J'ai bien dit que l'utilisation d'un disque crypté était transparent !)
df ou df -hT par exemple...
Démontage et fermeture accès disque
Lorsque vous avez terminé d'utiliser votre dique crypté, vous pouvez le démonter, mais ce ne sera pas tout, il faudra aussi arrêter l'utilitaire de cryptage (avec l'ouverture via open et cette commande, c'est la différence avec un disque normal):
umount /mnt/unNomMontage
cryptsetup luksClose unNom
Montage automatique d'un file system crypté
ATTENTION, faille de sécuritée avec la solution proposée !
La solution consistant à monter automatiquement le disque implique l'utilisation de fichiers clés qui sont présents sur le disque système...
Donc si le raspberry est volé, rien n'empêchera de récupérer ces fichiers pour les réutiliser ?
Il est impératif de demander le mot de passe de l'utilisateur par défaut sur la console (cf. raspi-config) !
Création clé de cryptage
dd if=/dev/urandom of=/chemin_a_definir/mon_key_file bs=1024 count=4
chmod 0400 /chemin_a_definir/mon_key_file
cryptsetup luksAddKey /dev/sda1 /chemin_a_definir/mon_key_file
Entrez une phrase secrète existante :
Tester la clé de cryptage:
cryptsetup luksOpen -d /chemin_a_definir/mon_key_file /dev/sda1 unNom
Décryptage automatique
Pour un décryptage automatique, il faut indiquer à cryptsetup l'UUID de la partition concernée. On peut retrouver cette information en tapant:
blkid ou en fouillant directement dans le répertoire en tapant ls -l /dev/disk/by-uuid
Une fois l'information récupérée, il suffit de maj le fichier /etc/crypttab en rapprochant pour l'UUID le nom du fichier contenant la clé :
nano /etc/crypttab
unNom /dev/disk/by-uuid/UUID /chemin_a_definir/mon_key_file luks
Avec UUID, le numéro précédemment récupéré !
Il reste à indiquer au système le montage à faire avec cette partition cryptée:
Cela passe par le fichier fstab...
nano /etc/fstab
/dev/mapper/unNom /mnt/unNomMontage ext4 defaults,nofail 0 2