%
Puffy image/svg+xml Puffy 2019-06-14 Stéphane HUC OpenBSD Team Inkscape Puffy OpenBSD https://www.openbsd.org/art4.html English "Puffy", it's a symbol of OpenBSD

OpenBSD : monter un disque dur chiffré automatiquement

Article publié, le et modifié le
3 minutes de lecture

Cet article contient 525 mots.
Source brute de l'article :
Commit version : 698e16e

Description

Non, je ne vais pas vous apprendre à créer un disque dur chiffré sous OpenBSD - la FAQ officielle (en anglais), ou la version traduite (en Français), vous l’apprendra mieux que moi-même !

Convention et étapes de base

Vous vous êtes assuré que le disque dur est connecté… électriquement, et soit en USB, en SATA, etc… Admettons que celui-ci soit reconnu par le système en tant que sd0.

L’étape 0 - de base - est d’enregistrer la passphrase dans un fichier, et de lui donner les droits nécessaires au bon fonctionnement de bioctl : 0600.

Par convention, nous appellerons ce fichier /root/crypt_passwd.

disk="sd0"
file_passwd="/root/crypt_passwd"
file_tmp="/tmp/raid.info"

Une méthode plus sûre est l’usage d’une clé USB dédié au déchiffrement. À savoir qu’il est possible d’utiliser une seule et même clé pour le chiffrement de plusieurs disques, une partition par chiffrement.

duid

La première étape est d’obtenir le duid - c’est l’identifiant du disk, fourni par disklabel - relatif à notre périphérique sd0.

duid="$(disklabel ${disk0} | awk -F':' '/duid/ { gsub(/[[:space:]]*/, "", $2) ; printf "%s",$2 }')"

Que fait awk dans les détails ?
Il recherche la ligne comportant la mention duid, et supprime tout espace, pour enfin afficher le résultat recherché, sans retour à la ligne !

numéro partition RAID

Obtenons la lettre de partition relative à la partition RAID - en réalité, la partition chiffrée par bioctl.

Code : sh

identifiant disque

Attachons le périphérique chiffré à un périphérique softraid0 :

bioctl -c C -l ${slide} -p ${file_passwd} softraid0 > ${file_tmp}

Le fichier temporaire contiendra très certainement une mention, telle que la suivante : softraid0: CRYPTO volume attached as sd2 - néanmoins cela dépend du fait d’avoir d’autres périphériques connectés, soit sur les ports SATA, USB, etc…

De toute façon, quelque soit l’écriture restituée dans le fichier temporaire, nous récupérerons l’identifiant du périphérique attaché, de manière "dynamique".

device="$(awk '/CRYPTO/ { printf "%s",$6 }' ${file_tmp})"

Dans cet exemple, la valeur obtenue sera sd2.

Maintenant, obtenons à nouveau la lettre de partition, mais cette fois-ci du périphérique attaché, pour construire les variables nécessaires :

Code : sh

mount

mkdir -p /mnt/${device}
mount -o noatime,nodev,noexec,nosuid,rw,softdep /dev/${partition} /mnt/${device}

Voilà, normalement nous avons accès au périphérique chiffré attaché et monté !

Il n’y a plus qu’à le remplir…

FS check

Si le montage ne se fait pas correctement, exécutons une vérification du système de fichier :

fsck -y /dev/${partition}

Si c’est OK, essayez de remonter la partition vers le répertoire choisi, avec la commande mount ci-dessus.

umount

Le démontage et le détachement du périphérique se fait très simplement :

umount -f /mnt/${device} bioctl -d ${device}

Pense-bête pour supprimer le fichier temporaire qui n’est plus nécessaire :

rm -fP "${file_tmp}"

TL;DR

Voici le script complet, dont je me sers, pour monter et démonter automatique un périphérique chiffré avec bioctl dès le démarrage du système OpenBSD.

Il faut l’utiliser ainsi :

  • pour monter le périphérique : ./mount_crypt_hd mount - créez le fichier /etc/rc.local et appelez le script de la manière à le monter…
  • pour démonter le périphérique proprement : ./mount_crypt_hd umount - créez le fichier /etc/rc.shutdown et appelez le script de la manière à le démonter…

Fichier : mount_crypt_hd

Remerciement