ZFS Dateisystem verschlüsseln
Ab der ZFS Version 30 gibt es endlich die Möglichkeit sein ZFS Dateisystem zu verschlüsseln. Diese mit AES-128, 192 oder auch 256. Bei Schlüsseln größer 128 Bit macht es natürlich Sinn eine Hardwarebeschleunigung zu haben. SPARC User haben mit z.B.: T2 oder T3 gewonnen, Intel User mit z.B.: der 5600 CPU also den meisten großen Xeon CPUs.
Davon mal abgesehen… Sollte ein AES-128 Schlüssen mehr als ausreichen 🙂 Ich habe da etwas gelesen:
Für den normalen „Notebook-, Workstation- oder Serverklau“ sollte es reichen!
Wie geht es nun? Tja, so wie bei zfs fast immer. Extrem einfach:
$ zfs create -o encryption=on rpool/export/home/kernel/DatenSafe Enter passphrase for 'rpool/export/home/kernel/DatenSafe': Enter again:
Schon habe ich in meinem Homeverzeichnis einen DatenSafe. Natürlich sollte man das Kennwort nicht vergessen (wie immer) sonst hat man ein echtes Problem an seine Daten zu kommen! Starte ich mein System nun neu, kann das ZFS Dateisystem mangels fehlendem Kennwort nicht eingebunden werden. Dieses müsste ich also nachholen wenn ich auf dieses zugreifen möchte:
$ zfs mount rpool/export/home/kernel/DatenSafe Enter passphrase for 'rpool/export/home/kernel/DatenSafe':
Es geht natürlich auch bequemer. Man könnte beim anlegen des ZFS Dateisystems sagen, der Schlüssel solle bitte als Datei auf dem USB-Stick liegen:
$ zfs create -o encryption=on -o keysource=raw,file:///media/usb-stick/schluessel rpool/export/home/kernel/DatenSafe
Dann müsste man immer diesen USB-Stick von dem eigentlichen System fern halten, damit nicht beides gleichzeitig abhanden kommt. Wäre dann ja so wie die PIN-Nummer auf der EC-Karte zu notieren! Dann müsste man den USB-Stick oder besser den Schlüssel kopieren und diesen zusätzlich sicher ablegen. Der Stick könnte ja mal kaputt gehen oder „verschwinden“. Hier müsste also die Lagerstelle der Sicherungskopie zusätzlich sicher sein. Ein Kennwort im Kopf ist da vielleicht doch besser. Kommt halt wieder darauf an 🙂
Unter Solaris 11 gibt es dieses natürlich auch in „schön“. Es gibt ein PAM Module! Damit kann man extrem einfach verschlüsselte Benutzerverzeichnisse realisieren.
Grob kann man es sich wie folgt vorstellen. Das PAM Module ermöglicht einen Abgleich zwischen dem Unix-Kennwort und dem Encryption Key des ZFS Dateisystems des Benutzerverzeichnisses. Zusätzlich wird beim ersten Login des Benutzers gleich das verschlüsselte Benutzerverzeichnis angelegt. Der Benutzer meldet sich also einfach am System an und das Filesystem wird gleichzeitig entschlüsselt und eingehangen.
Das PAM Module arbeitet dabei Hand in Hand mit ssh, dgm und natürlich dem normalen Konsolenlogin.
Eine erste Konfiguration könnte so aussehen:
Damit PAM diese Fähigkeit nutzt müssen wir dieses noch mitteilen. Dazu muss folgendes in der Konfigurationsdatei /etc/pam.conf ergänzt werden:
login auth required pam_zfs_key.so.1 create other password required pam_zfs_key.so.1 sshd-kbdint auth requisite pam_authtok_get.so.1 sshd-kbdint auth required pam_unix_cred.so.1 sshd-kbdint auth required pam_unix_auth.so.1 sshd-kbdint auth required pam_zfs_key.so.1 create sshd-kbdint auth required pam_unix_auth.so.1 gdm auth requisite pam_authtok_get.so.1 gdm auth required pam_unix_cred.so.1 gdm auth required pam_unix_auth.so.1 gdm auth required pam_zfs_key.so.1 create gdm auth required pam_unix_auth.so.1
Schon lässt sich ein neuer Benutzer anlegen. Diesem verpassen wir gleich ein initiales Kennwort:
$ useradd sebastian $ passwd sebastian
Damit der Benutzer beim ersten Login sein Kennwort ändert, mit welchem das Homedirectory angelegt bzw. verschlüsselt wird, geben wir noch folgendes mit:
$ passwd -f sebastian
Wenn sich nun der User: „sebastian“ anmeldet passiert folgendes:
errorlap console login: sebastian Password: Choose a new password. New Password: Re-enter new Password: login: password successfully changed for sebastian Creating home directory with encryption=on. Your login password will be used as the wrapping key. Last login: Tue Apr 10 21:56:42 on console Oracle Corporation SunOS 5.11 11.0 November 2011 $
Schon ist der Benutzer sebastian angemeldet, hat ein encrypted homedirectory und ein Kennwort welches nur er kennt. Damit sind die Daten auf dem ~Notebook~ nun so sicher wie das Kennwort vom User Sebastian.
Mal schauen?
$ zfs get encryption,keysource rpool/export/home/sebastian NAME PROPERTY VALUE SOURCE rpool/export/home/sebastian encryption on local rpool/export/home/sebastian keysource passphrase,prompt local
Ich habe bereits einen User inkl. Daten. Ein ZFS Dateisystem lässt sich bisher nicht im Nachhinein verschlüssel. Aus diesem Grund muss die Option der Verschlüsselung beim erstellen des ZFS Filesystems angegeben werden. Ich könnte jetzt meine Daten sichern, den Benutzer löschen, den Benutzer neu anlegen und meine Daten zurücksichern… Leider bin ich faul und habe keinen Bock alle Rollen und Gruppenzugehörigkeiten neu anzulegen. Also habe ich folgendes gemacht:
Ich habe mir einen anderen User gegriffen der das Recht hat in die ROOT-Rolle zu wechseln. Mit diesem User habe ich dann das Homedirectory meines User umbenannt. Dieses musste ich aber erzwingen.
$ zfs rename -f rpool/export/home/kernel rpool/export/home/wurst
Dann soll beim nächsten Login direkt ein neues Kennwort gesetzt werden:
$ passwd -f kernel
Nach dem Login habe ich ein neues und verschlüseltes Benutzerverzeichnis. In dieses kopiere ich nun einfach wieder meine Daten aus /home/wurst und schon ist alles wie zuvor. Nur halt verschlüsselt! Natürlich liegen die Daten nun noch unverschlüsselt auf der Platte und in alten Snapshots. Dieses muss ich alles löschen. Da die Daten damit noch immer nicht zu 100% von der Platte verschwunden sind könnte man sie noch mit etwas Mühe von der Platte herunterknibbeln. Dieses muss man im Hinterkopf behalten. Die Daten werden erst langsam und Stück für Stück überschrieben. Ein wirklich sicherer Weg ist dieses also nicht!
Natürlich habe ich auch noch etwas für die Bilderliebhaber. So schaut der ganze Vorgang am Gnome Display Manager aus. Vom ersten Login des Users, über Kennwortänderung bis hin zur Bestätigung des angelegten und verschlüsselten Benutzerverzeichnis. Wie man sehen kann ist es sogar für den einfallslosen, mausschubsenden Anwender zu bewältigen. Fragt sich nur welcher dieser Anwender an einem Solaris Desktop arbeiten O_o???
Schreibe einen Kommentar