--- categories: ['OpenBSD','Système','Base'] date: 2018-10-03T23:41:58+01:00 description: "Comment monter automatiquement un disque dur FFS chiffré sous OpenBSD ?" draft: false tags: ['OpenBSD','mount'] title: "OpenBSD : monter un disque dur chiffré automatiquement" translationKey: 'openbsd-mount-hd-crypted' --- ## Description Non, je ne vais pas vous apprendre à créer un disque dur chiffré sous OpenBSD - la [FAQ officielle][1] *(en anglais)*, ou la [version traduite][2] *(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`. ```cfg 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 "sys-openbsd-mount-crypt-hd-slide" 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 "sys-openbsd-mount-crypt-hd-id" sh >}} ### mount ```sh 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… {{< file "sys-openbsd-mount-crypt-hd" sh "mount_crypt_hd" >}} ## Remerciement * *[source](http://www.vincentdelft.be/post/post_20160719) - en anglais* ---- [1]: https://www.openbsd.org/faq/faq14.html#softraidFDE [2]: https://wiki.openbsd.fr.eu.org/doku.php/openbsd.org/faq/faq14#chiffrement-integral-d-un-disque