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