Container Verschlüsselung unter OpenBSD 5.9

Auf meinem hauptsächlich verwendeten System (einem MacBook Pro) gibt es die Möglichkeit AES verschlüsselte Images zu erstellen… natürlich würde es rein zur ‚entfernten‘ Sicherung ausreichen, dieses Image im ganzen auf ein entferntes System zu kopieren. Dadurch macht man sich aber davon abhängig, dass im Falle eines Zurückspielens der Sicherung, das System auf das sie geladen werden soll, diese auch wieder lesen kann.
Was weiss ich jetzt schon, ob der nächste Rechner wieder ein Mac wird?

Sinniger für eine Archivierung ist, einen verschlüsselten Container auf dem Sicherungssystem an zu legen und die Daten aus dem lokalen verschlüsselten Image, verschlüsselt in diesen zu kopieren.

Bei OpenBSD werden solche Images mit Hilfe von so genannten ‚pseudo-devices‘ angelegt, die eigentlich als Festplatte für Virtuelle Maschinen gedacht waren bzw. sind.
Die meisten der benötigten Befehle benötigen ‚root‘ Rechte, deshalb sollte doas für den durchführenden User entsprechend eingerichtet sein.

Als erstes wird eine Datei ausreichender Grösse benötigt.

Man kann diese recht einfach mit ‚disk dump‘ oder kurz dd erstellen.

dd if=/dev/zero of=encrypted.bin bs=1m count=128

Da encrypted.bin ja eine Virtuelle Festplatte werden soll, kann man auch gleich einen ‚mountpoint‘ dafür erstellen… früher oder später braucht man ihn eh.

mkdir encrypted

Erst einmal können wir prüfen welche Virtuellen Festplatten „Steckplätze“ noch frei sind. OpenBSD hat von Haus aus 4 „Virtual Node Devices“ im Kernel einkompiliert.
Für Tätigkeiten an den „Steckplätzen“ verwendet man das Programm vnconfig mit root Rechten.

doas vnconfig -l

Beim ersten verwenden sollte eigentlich folgende Ausgabe herauskommen:

vnd0: not in use
vnd1: not in use
vnd2: not in use
vnd3: not in use

Ich binde es auf vnd1 ein, grundsätzlich muss es aber nur ein freier Platz sein:

% doas vnconfig vnd1 encrypted.bin
% doas vnconfig -l
vnd0: not in use
vnd1: covering encrypted.bin on wd0h, inode 39159347
vnd2: not in use
vnd3: not in use

Jetzt machen wir es zu einer „Festplatte“ indem wir sie erst mit fdisk grob partitionieren:

% doas fdisk -i vnd1
Warning CHS values out of bounds only saving LBA values
Do you wish to write new MBR and partition table? [n] y
Warning CHS values out of bounds only saving LBA values
Writing MBR at offset 0.

Und dann auf a labeln:

% doas disklabel -E vnd1
Label editor (enter '?' for help at any prompt)
> a
partition: [a]
offset: [128]
size: [261972]
FS type: [4.2BSD] RAID
> p
OpenBSD area: 128-262100; size: 261972; free: 0
#                size           offset  fstype [fsize bsize  cpg]
  a:           261972              128    RAID
  c:           262144                0  unused
> w
> q
No label changes.

Mit bioctl erstellen wir jetzt das verschlüsselte RAID Device. Nach diesem commando kann man es bereits wie eine normale „Festplatte“ verwenden:

% doas bioctl -c C -l /dev/vnd1a softraid0
New passphrase:
Re-type passphrase:
softraid0: CRYPTO volume attached as sd0
% doas fdisk -i sd0
Do you wish to write new MBR and partition table? [n] y
Writing MBR at offset 0.
% doas disklabel -E sd0
Label editor (enter '?' for help at any prompt)
> a
partition: [a]
offset: [64]
size: [256976]
FS type: [4.2BSD]
Rounding size to bsize (32 sectors): 256960
> p
OpenBSD area: 64-257040; size: 256976; free: 16
#                size           offset  fstype [fsize bsize  cpg]
  a:           256960               64  4.2BSD   2048 16384    1
  c:           261444                0  unused
> w
> q
No label changes.
% doas newfs sd0a
newfs: reduced number of fragments per cylinder group from 16056 to 15984 to enlarge last cylinder group
/dev/rsd0a: 125.5MB in 256960 sectors of 512 bytes
5 cylinder groups of 31.22MB, 1998 blocks, 4096 inodes each
super-block backups (for fsck -b #) at:
 32, 63968, 127904, 191840, 255776,
% doas mount /dev/sd0a encrypted

Sieht ja alles schon recht gut aus… bloss die Rechte des mounts passen noch nicht.

drwxr-xr-x   2 root     wheel            512 May  8 20:47 encrypted

Ist aber kein grösseres Problem, diese müssen nur einmalig auf den richtigen Benutzer gesetzt werden, und ggf noch den Zugang beschränken das darf dann allerdings bereits der User selbst machen.

% doas chown sierrax:sierrax encrypted
% chmod 700 encrypted

Um das ganze dann für die Lagerung zu zumachen wird das Device per doas umount encrypted und mit doas bioctl -d sd0 das special device entfernt. Es braucht auch nicht als in der vnd liste zu bleiben, sondern kann mit doas vnconfig -u vnd1 daraus entfernt werden. Sobald man es wieder braucht, muss man dann halt einen Schritt mehr machen.
Die Schritte könnten dann so, oder so ähnlich ausschauen.

% doas vnconfig vnd3 encrypted.bin
% doas bioctl -c C -l /dev/vnd3a softraid0
Passphrase:
softraid0: CRYPTO volume attached as sd0
% doas mount /dev/sd0a encrypted
Dieser Beitrag wurde unter Cryptography, OpenBSD, Security veröffentlicht. Setze ein Lesezeichen auf den Permalink.

1 Antwort zu Container Verschlüsselung unter OpenBSD 5.9

  1. Pingback: Wenn 4 vnd nicht reichen! – www.sx-lab2.net

Kommentare sind geschlossen.