Verschlüsseln einer einzigen Partition unter zfs mit geli

Ist die Wahl auf zfs gefallen, kann man unter FreeBSD mit Hilfe von geli auch einzelne Partitionen verschlüsseln.

Allgemeines

Die Option encrypt von zfs wird erst mit Einzug von der zfs-Version 30 gültig. Im folgenden soll das Prinzip gezeigt werden, wie man mit Hilfe von geli zu einer verschlüsselten Partition gelangt. Der Sinn ist es, dies später auf externe Laufwerke zu übertragen.

1. Partition mit zfs erzeugen

Zum Testen ein 4 GB große Partition mit der Bezeichnung gelitest.

zfs create -V 4g zpool/gelitest

2. Schlüssel für geli erzeugen

Der Schlüssel wir mit folgendem einfachen Befehl erzeugt und erst einmal im home-Verzeichnis von root abgelegt.

  1. dd if=/dev/random of=/root/z01.key bs=64 count=1

3. Initiliaisieren

Mit dem erzeugten Schlüssel kann nun die Partition initialisiert werden. Nach Eingabe des folgenden Befehls wird nach einem Passwort gefragt.

  1. geli init -s 4096 -K /root/z01.key /dev/zvol/zroot/gelitest

Anmerkung: Mit der Option -P (?) wird kein Kennwort benötigt; die Verschlüsselung läuft nur über den erzeugten Schlüssel.

4. Partition mit geli einhängen

Mit dem folgenden Befehl wird die Partition nach eingegeben Kennwort mit geli einghängt.

  1. geli attach -k /root/z01.key /dev/zvol/zroot/gelitest

5. Dateisystem anlegen

Zuerst werden alle Daten auf der Partition mit zufälligen Daten überschrieben, dann wird das Dateisystem angelegt:

  1. dd if=/dev/random of=/dev/zvol/zroot/gelitest.eli bs=1m
  2. newfs /dev/zvol/zroot/gelitest.eli

6. Einbinden der verschlüsselten Partition

Einfaches mounten der Partition - das Kennwort wird jetzt nicht benötigt.

  1. mount /dev/zvol/zroot/gelitest.eli /mnt

7. Abmelden der Partition

Zum Aushängen muss auch geli abgemeldet werden:

  1. umount /mnt
  2. geli detach /dev/zvol/zroot/gelitest

Erneutes Anmelden

Wie im Prinzip oben beschrieben lässt sich die Partition einhängen mit:

  1. geli attach -k /root/z01.key /dev/zvol/zroot/gelitest
  2. [Eingabe der Passphrase]
  3. mount /dev/zvol/zroot/gelitest.eli /mnt

Erst mit geli attach ... wird das Device /dev/zvol/zroot/gelitest.eli erzeugt. Das vorher existierende Device /dev/zvol/zroot/gelitest lässt sich natürlich nicht einbinden:

  1. # mount /dev/zvol/zroot/gelitest /mnt
  2. mount: /dev/zvol/zroot/gelitest : Invalid argument

Auch ein falscher Schlüssel führt zu einer Fehlermeldung:

  1. # geli attach -k /root/z02.key /dev/zvol/zroot/gelitest
  2. Enter passphrase:
  3. geli: Wrong key for zvol/zroot/gelitest.

Einfacher lässt sich das über Scripte steuern.

http://www.freebsd.org/doc/de/books/handbook/disks-encrypting.html

Löschen der Testpartition

Alle Spuren lassen sich nach Abmelden mit

  1. zfs destroy zroot/gelitest

beseitigen.