Monter automatiquement un disque chiffré sur OpenBSD au boot

Ce que je veux faire

J'ai récemment changé mon desktop de xubuntu à OpenBSD car suite à l'achat d'un clavier mécanique, je l'utilise plus sérieusement. Je compte utiliser un disque de 500 Go pour le système et un disque d'1 To pour les données. Bien évidemment les deux disques sont chiffrés avec softraid.

Mon but est que le deuxième disque soit monté automatiquement au boot, sans même me demander la phrase de passe.

On formate le disque

On commence par chiffrer le nouveau disque. On suppose que c'est wd1. Je suppose que les commandes données sont connues :

$ fdisk -e wd1
$ disklabel -E wd1 # on créé juste la partition p en RAID
$ bioctl -c C -l /dev/wd1p softraid0

à ce moment là, le disque chiffré va être monté sur (supposons) sd1.

$ dd if=/dev/zero of=/dev/rsd1c bs=1m count=1
$ fdisk -e sd1 # on créé la partition a
$ disklabel -E sd1

Mais ça c'est dans la FAQ sinon.

L'automount.

la phrase de passe

On commence par mettre la phrase de passe dans un fichier sur le disque. On s'en fiche car 1) le disque est chiffré 2) c'est pas des données vraiment confidentielles (on a rien à cacher, n'est ce pas ?).

$ echo "92915934093122c04f4711291f8fae282ef56022" > /etc/passphrase

Ensuite on utilise chown(8) et chmod(8) pour arriver à

-rw-------  1 root  wheel    123 Nov  8 17:59 /etc/passphrase

(sinon de toute façon, bioctl va râler).

Identifions les disques

À partir de maintenant, on va utiliser des DUIDs et non plus le device car les disques et les volumes créés par softraid peuvent changer, mais pas les DUIDs.

Il y a deux volumes, le physique /dev/wd1 et le logique /dev/sd1. Les deux ont bien évidemment chacun leur propre DUID.

Pour trouver le DUID d'un disque, c'est dans disklabel(8) :

$ disklabel wd1 | grep duid
duid: 4d498d4248c8d056
$ disklabel sd1 | grep duid
duid: 384c27964f6e987d

On choisit comment on va le monter

On indique dans /etc/fstab comment on veut le monter. Dans mon cas à la fin du fichier c'est :

$ tail -n 1 /etc/fstab
b1e264fc29000110.a /dataporn ffs rw,nodev,nosuid,softdep,noauto 0 0

On voit au début de la ligne le DUID suivi de la lettre "a" car j'ai utilisé (à tort, c'est réservé pour / normalement) la partition "a" pour mes données. Par contre attention, c'est le DUID du volume monté par softraid, pas celui du volume physique.

Je vous laisse lire les mans de mount(8) et de fstab(5) si vous ne comprenez pas les options. On termine par "0 0" pour dire ne pas tenter de le fsck pour la même raison qu'on le met en noauto, car au boot le volume n'a pas encore été monté donc pour le système il n'existe pas (vous pouvez essayer, je l'ai fait :p).

On déchiffre et on monte le disque

On va donc utiliser le fichier /etc/rc.local pour déchiffrer et monter le disque et il puisera les informations dans /etc/fstab pour monter le volume au bon endroit.

La différence entre -current et -stable est que le script /etc/rc.local n'est plus dans /etc mais dans /etc/examples.

On rajoute dans ce fichier les lignes :

bioctl -c C -l 4d498d4248c8d056.p -p /etc/passphrase  softraid0
echo "check /dataporn"; fsck -p /dataporn; mount -s /dataporn

Cette fois, c'est le DUID du volume physique. On monte le volume chiffré puis on lance un petit fsck (comme le fait le système au boot) et enfin, on monte le volume suivant /etc/fstab.

On peut lancer les commandes à la main pour vérifier que ça se passe bien puis on reboot pour tester et ça devrait marcher.

Les bisous

Merci à semarie et landry@ pour l'aide et les conseils.

By Vigdis in
Tags : #OpenBSD, #softraid, #opsec,
linkedin email