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.
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.
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.
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:
dd if=/dev/random of=/dev/zvol/zroot/gelitest.eli bs=1m newfs /dev/zvol/zroot/gelitest.eli
6. Einbinden der verschlüsselten Partition
Einfaches mounten der Partition - das Kennwort wird jetzt nicht benötigt.
mount /dev/zvol/zroot/gelitest.eli /mnt
7. Abmelden der Partition
Zum Aushängen muss auch geli abgemeldet werden:
umount /mnt geli detach /dev/zvol/zroot/gelitest
Erneutes Anmelden
Wie im Prinzip oben beschrieben lässt sich die Partition einhängen mit:
geli attach -k /root/z01.key /dev/zvol/zroot/gelitest [Eingabe der Passphrase] 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:
# mount /dev/zvol/zroot/gelitest /mnt mount: /dev/zvol/zroot/gelitest : Invalid argument
Auch ein falscher Schlüssel führt zu einer Fehlermeldung:
# geli attach -k /root/z02.key /dev/zvol/zroot/gelitest Enter passphrase: 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.htmlLöschen der Testpartition
Alle Spuren lassen sich nach Abmelden mit
zfs destroy zroot/gelitest
beseitigen.