1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Frage best practise unverschlüsseltes ZFS mit Geli auf einzelnem Volume?

Dieses Thema im Forum "FreeBSD - Allgemein" wurde erstellt von Binfort, 8 Juni 2017.

  1. Binfort

    Binfort Member

    Registriert seit:
    2 März 2006
    Beiträge:
    181
    Ort:
    HH
    Moin!

    Das gewünschte Setup:
    • FreeBSD 11 mit ZFS
    • Hostsystem unverschlüsselt
    • Jails auf ZFS Volume mit Geli verschlüsselt
    • inkrementelles Backup der Jails
    Lösungsansatz:
    Code:
    zfs create -V 100G zroot/jails
    geli init -s 4096 -K jails.key /dev/zvol/zroot/jails
    geli attach -k jails.key /dev/zvol/zroot/jails
    Das Volume kann jetzt einen weiteren Zpool erhalten, allerdings machten die Backups mit zfs send/recv Probleme. Im eng Forum fand sich außerdem ein Hinweis auf Dead Locks bei Zpools innerhalb Zvols. Also:
    Code:
    newfs -O2 -U -f 4096 /dev/zvol/zroot/jails.eli
    mount /dev/zvol/zroot/jails.eli /data/jails
    So würde die Dead Lock Problematik umgangen. Die Backups mit zfs send/recv funktionieren zwar, jedoch nicht inkrementell. Da zfs snap vom eigentlichen Volume erstellt wird, kann das doch gar nicht gehen, oder? Nächster Versuch:
    Code:
    dump -0 -Lauf lvl0_jails /data/jails
    dump -1 -Lauf lvl1_jails /data/jails
    Das funktioniert dann und das Setup wäre erreicht. Ein paar Schritte verstehen sich von selbst und wurden übersprungen.

    Wäre dies eine denkbare Herangehensweise für einen produktiven Server? Was würdet ihr anders lösen oder wo seht ihr Probleme?

    Mir gefällt die Flexibilität des ZFS im Unterbau, sollte es in Zukunft eine andere Lösung geben, könnte ich das Volume auch flott umkonfigurieren bzw. die Jails in verschlüsselte FS Datasets stecken.

    Alternativ kann meine Anforderung natürlich auch herkömmlich mit GPT Partitionen erfüllt werden.
     
  2. Crest

    Crest rm -rf /*

    Registriert seit:
    25 Juni 2008
    Beiträge:
    1.549
    Ort:
    /dev/random
    Also ein einfacher Lösungsansatz wäre es GELI durch PEFS zu ersetzen. Hier sieht ZFS den Plaintext der Jails nicht, weil das PEFS Overlay FS diesen Verschlüsselt, allerdings bietet PEFS eine recht hohe Angriffsfläche und leaked per Design mehr Metadaten über Seitenkanäle.

    Sofern der Host nur die Jails starten soll und du etwas Speicherplatz über hast kannst du zwei ZFS Pools verwenden. Am einfachsten ist dies aufzusetzen indem du den Installer verarscht und pro Platte einen kleinen GEOM NOP Provider einrichtest. Anschließend kannst du mit dem ZFS Installer auf die GEOM NOP Provider installieren. Nach der Installation vergrößerst du die Partitionstabellen und legst Partitionen für den GELI verschlüsselten ZFS Pool in dem jetzt nutzbaren freien Speicher an. Der zweite Pool ist jetzt GELI Verschlüsselt, allerdings enthalten ZFS Replicationstreams dieses Pools natürlich den Klartext. Du kannst sie also nicht auf weniger vertrauenswürdigen Systemen ablegen/einspielen. Es gibt allerdings Backupsoftware, die ihren Klartext dem Backupserver nicht angertraut z.B. borg, restic, tarsnap und zbackup.
     
    Binfort gefällt das.
  3. Binfort

    Binfort Member

    Registriert seit:
    2 März 2006
    Beiträge:
    181
    Ort:
    HH
    Danke für die Antwort, PEFS möchte ich vorerst unterschlagen - aber der zweite Vorschlag klingt interessant.

    Mit GEOM NOP hatte ich noch nichts zu tun, aber das beschriebene Prinzip ist klar. Die beiden parallelen Zpools liefern das gewünschte Setup und rechtfertigen den Aufwand, ich spiele das mal durch und schreibe über den Erfolg.

    Die inkrementellen zfs send Backups werden an gpg gepipet und dann extern abgelegt, bislang erschien mir das ausreichend...
     
  4. Crest

    Crest rm -rf /*

    Registriert seit:
    25 Juni 2008
    Beiträge:
    1.549
    Ort:
    /dev/random
    Du kannst auch noch einen drauf setzen und das neue Rerooting verwenden. Allerdings ist das mit ZFS etwas fricklig, weil du beim zweiten Import eines ZFS Pools leider eine Assertion auslöst.
     
  5. Binfort

    Binfort Member

    Registriert seit:
    2 März 2006
    Beiträge:
    181
    Ort:
    HH
    Mit Rerooting möchte ich mich später befassen, das ursprünglich genannte Setup ist mit GEOM NOP jedoch kein Problem. Der Witz an der Sache ist die Benutzung des Installers.

    Der unverschlüsselte Zpool für das Hostsystem erhält ohne viel Aufwand die optimalen Datasets - da dies meine ersten Erfahrungen mit ZFS sind, verhalf mir ein alter Artikel im Admin zum besseren Verständnis. Demnach könnte man das finale Partitionsschema auch manuell anlegen und müsste die Datasets beim Zpool ebenfalls manuell erstellen. Der Umweg über GEOM NOP vereinfacht die Installation erheblich.
    Code:
    gnop create -s 100G ada0
    Das erzeugte ada0.nop wird dem Installer vorgeworfen. Nach der Installation ist die Partitionstabelle korrupt. Im SingleUser:
    Code:
    gpart recover ada0
    gpart add -t freebsd-zfs -l zfs1 ada0
    Im MultiUser:
    Code:
    geli init -K data.key -s 4096 /dev/gpt/zfs1
    geli attach -k data.key /dev/gpt/zfs1
    zpool create data /dev/gpt/zfs1
    Fertig.

    Damit kann ich arbeiten. Backups teste ich noch, sehe aber keine Schwierigkeiten. Initiale Bereitstellung eines Zmirror teste ich noch, sehe aber auch hier keine Schwierigkeiten.

    Edit: Typo