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
# get partition's letter
s="$(disklabel ${disk} | awk -F':' '/RAID/ { gsub(/[[:space:]]*/, "", $1); printf "%s",$1 }' )"
slide="${duid}.$s"
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
s="$(disklabel ${device} | awk -F':' '/'4.2BSD/ { gsub(/[[:space:]]*/, "", $1); printf "%s",$1 }' )"
partition="${disk}$s"
slide="${duid}.$s"
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
- source - en anglais