{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreih527epf3g2kv4jxz7p3vhrvvfmkg4t5nm6nfxxd4ynzbfy4df2aa",
"uri": "at://did:plc:nkxz2ojdvmieg2nhphvputvp/app.bsky.feed.post/3mmoafpbxad22"
},
"coverImage": {
"$type": "blob",
"ref": {
"$link": "bafkreiba3cs2vngwf27ynrut3cbl6ccwmka5ephkwxx3ipr7lzyy7fr4ky"
},
"mimeType": "image/png",
"size": 799899
},
"description": "Native ZFS-Encryption auf FreeBSD 13 mit AES-256-GCM eingerichtet und getestet. Passphrase-Handling, Mount/Unmount. Limitierung: Verschlüsselung lässt sich nicht nachträglich aktivieren. Ansonsten unkompliziert und zuverlässig.",
"path": "/2019/04/19/freebsd-und-native-zfs-encryption/",
"publishedAt": "2026-05-25T10:10:29.000Z",
"site": "https://www.kernel-error.de",
"tags": [
"Encryption",
"FreeBSD",
"Hardening",
"InfoSec",
"Storage",
"Sysadmin",
"ZFS",
"ZFS-Dataset nachträglich verschlüsseln",
"ZFS-Überblick",
"ZFS Encryption unter Solaris",
"Einfach melden."
],
"textContent": "Seit FreeBSD 13 steht native ZFS Encryption zur Verfügung. Datasets lassen sich mit AES-256-GCM verschlüsseln, ohne dass der gesamte Pool verschlüsselt sein muss. Die Verschlüsselung greift pro Dataset und vererbt sich auf Kind-Datasets.\n\n### Verschlüsseltes Dataset anlegen\n\nEin neues Dataset mit Passphrase-Abfrage:\n\n\n zfs create -o encryption=aes-256-gcm -o keyformat=passphrase usbpool/test01\n Enter passphrase:\n Re-enter passphrase:\n\nDas Dataset wird sofort gemountet und ist einsatzbereit. Alles was hineingeschrieben wird, liegt verschlüsselt auf der Platte:\n\n\n zfs list usbpool/test01\n NAME USED AVAIL REFER MOUNTPOINT\n usbpool/test01 99K 899G 99K /usbpool/test01\n\n zfs get encryption usbpool/test01\n NAME PROPERTY VALUE SOURCE\n usbpool/test01 encryption aes-256-gcm -\n\n### Nach einem Reboot\n\nBei einem Passphrase-geschützten Dataset hat ZFS nach einem Reboot den Schlüssel nicht mehr. Das Dataset existiert, ist aber nicht gemountet:\n\n\n zfs get mounted usbpool/test01\n NAME PROPERTY VALUE SOURCE\n usbpool/test01 mounted no -\n\nMit `zfs mount -l` wird der Schlüssel geladen und das Dataset eingehängt:\n\n\n zfs mount -l usbpool/test01\n Enter passphrase for 'usbpool/test01':\n\n zfs get mounted usbpool/test01\n NAME PROPERTY VALUE SOURCE\n usbpool/test01 mounted yes -\n\n### Keyfile statt Passphrase\n\nStatt einer Passphrase-Abfrage kann der Schlüssel auch in einer Datei liegen. Praktisch für Server die ohne Interaktion booten sollen:\n\n\n zfs create -o encryption=aes-256-gcm \\\n -o keyformat=passphrase \\\n -o keylocation=file:///root/keys/pool.key \\\n zroot/encrypted-data\n\nDie Key-Datei enthält das Passphrase als Text. Wichtig: Die Datei muss beim Boot erreichbar sein, also auf einem unverschlüsselten Dataset liegen. Berechtigungen auf `0400` setzen.\n\n### Bestehende Datasets verschlüsseln\n\nVerschlüsselung lässt sich nicht nachträglich auf ein bestehendes Dataset aktivieren. Man muss die Daten per `zfs send | zfs receive` in ein neues, verschlüsseltes Dataset migrieren. Die komplette Anleitung dafür steht im Beitrag ZFS-Dataset nachträglich verschlüsseln.\n\nEine Übersicht über alle ZFS-Funktionen gibt es im ZFS-Überblick. Wer sich für ZFS Encryption unter Solaris/OpenIndiana interessiert, findet die Anleitung unter ZFS Encryption unter Solaris. Fragen? Einfach melden.",
"title": "FreeBSD: Native ZFS Encryption einrichten und nutzen"
}