{
  "$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"
}