Open Source im professionellen Einsatz
Linux-Magazin 01/2013
© the rock, Fotolia

© the rock, Fotolia

Workshop: Rechner mit Luks und ZFS on Linux komplett verschlüsseln

Vergälltes Diebesgut

Kommt ein Rechner abhanden, wiegt der Umstand, dass die Daten in fremde Hände gelangen, oft schwerer als der Verlust der Hardware. Der folgende Workshop erklärt anhand einer Gentoo-Installation, wie man mit Luks und ZFS ein System als Ganzes verschlüsselt.

1133

Der Dummheit sind zwar sprichwörtlich keine Grenzen gesetzt. Aber niemand käme auf die Idee, den nächsten Businessplan der eigenen Firma auf Facebook zu posten. Auf Laptops jedoch tragen viele ihn spazieren. Bei einer Studie [1] gaben 86 Prozent der befragten IT-Sicherheitsfachkräfte an, dass in ihrem Unternehmen mindestens ein Laptop gestohlen oder verloren wurde. In 56 Prozent der Fälle kam es dabei zur Verletzung der Datensicherheit. 61 Prozent der deutschen IT-ler sagten, der Datenverlust wiege schwerer als der materielle Schaden, nur 13 Prozent grämten sich mehr über die abgängige Hardware.

Was tun? Herkömmliche Linux-Laptops verwenden zwar moderne Dateisysteme wie Ext 4 oder XFS, die für Validität der Dateien sorgen, legen die Daten aber unverschlüsselt ab – keine Hürde für einen Datendieb, der in den Besitz des Geräts gelangt ist. Techniken wie Truecrypt speichern Daten dagegen in verschlüsselten Containern, in Kombination mit einer starken Passphrase gilt das als sicher. Truecrypt kann jedoch Linux-Systeme nicht als Ganzes verschlüsseln.

Dieser Artikel stellt ein nahezu komplett verschlüsseltes System vor, das auf einer stark verschlüsselten Hauptpartition läuft. Nur die kleine »/boot« -Partition mit Kernel und Initram-FS bleibt unverschlüsselt. Als Filesystem kommt das Feature-reiche ZFS on Linux (ZoL, [2]) zum Einsatz. Damit ist der Speicherplatz zwischen allen ZFS-Dateisystemen dynamisch verteilbar. ZFS sorgt durch Block-Prüfsummen zudem für Datenintegrität und kann Dateien wenn nötig transparent komprimieren.

Ausgehend von einem Howto von Matthew Thode [3] beschreibt der folgende Workshop den nicht immer intuitiven Weg von der Installations-DVD bis zum verschlüsselten Produktivsystems. Als Betriebssystem kommt die 64-Bit-Variante von Gentoo Linux zu Ehren. 64 Bit, weil das 128-Bit-Filesystem ZFS aus der enterpreisigen Welt von Solaris kommt. Auch wenn viele es bereits täglich einsetzen, stufen seine Entwickler ZFS on Linux als Release Candidate ein. Für den Produktivbetrieb gilt die übliche Mahnung im erhöhten Maß: Ohne regelmäßige Backups lebt jeder Datenbestand gefährlich.

DELUG-DVD

Der Autor dieses Beitrags hat für die Delug-DVD die virtuelle Maschine bereitgestellt, anhand derer er diesen Artikel verfasst hat. Die Passphrase des Setup lautet »LinuxMag12« .

Das System vorbereiten

Die Installation von Gentoo erfolgt manuell per Live-CD und Shell. Der Vorgang ist, wie üblich bei dieser Distribution, gut dokumentiert [4]. Die folgende Anleitung beschränkt sich daher aufs Wesentliche. Nach dem Booten von der Live-DVD [5] legt der Admin die Partitionen an, am einfachsten ohne GPT: eine kleine Bootpartition (»/dev/sda1« ), dann »/dev/sda2« für den Rest.

Listing 1 zeigt die nächsten Schritte. Zeile 1 formatiert »/boot« als Ext 2. Zeile 2 erzeugt auf der anderen Partition ein Luks-verschlüsseltes Device. Die bei diesem Schritt erfragte Passphrase sollte stark gewählt sein, da von ihr die Sicherheit des künftigen Systems abhängt. Der Rechner wird beim Booten die Passphrase abfragen und nur dann, wenn sie korrekt ist, den ZFS-Pool öffnen.

Luks bietet übrigens die Möglichkeit, mehrere Passphrasen zu hinterlegen – beispielsweise eine Master-Passphrase für den Administrator und eine weitere für den täglichen Betrieb.

Im nächsten Schritt öffnet Luks mit der Passphrase das verschlüsselte Device. Zeile 4 legt nun auf dem Blockdevice einen ZFS-Pool an. Die verwendeten Optionen setzen die Sector Size [6], deaktivieren das Cachefile und mounten den neuen »rpool« -Pool Gentoo-konform vorläufig unter »/mnt/gentoo« . Der nächste Teil in Listing 1 legt auf dem ZFS-Pool ein Bündel einzelner Dateisysteme mit teils unterschiedlichen Eigenschaften an [7]. Das funktioniert mit ZFS-Funktionen.

Listing 1

System vorbereiten

01 mkfs.ext2 /dev/sda1
02 cryptsetup luksFormat -l 512 -c aes-xts-plain64 -h sha512 /dev/sda2
03 cryptsetup luksOpen /dev/sda2 cryptroot
04 zpool create -f -o ashift=12 -o cachefile= -m none -R /mnt/gentoo rpool /dev/mapper/cryptroot
05
06 zfs create -o mountpoint=none -o compression=on rpool/ROOT
07 # Rootfilesystem
08 zfs create -o mountpoint=/ rpool/ROOT/rootfs
09 zfs create -o mountpoint=/opt rpool/ROOT/rootfs/OPT
10 zfs create -o mountpoint=/usr rpool/ROOT/rootfs/USR
11 zfs create -o mountpoint=/var rpool/ROOT/rootfs/VAR
12 # Portage
13 zfs create -o mountpoint=none rpool/GENTOO
14 zfs create -o mountpoint=/usr/portage rpool/GENTOO/portage
15 zfs create -o mountpoint=/usr/portage/distfiles -o compression=off rpool/GENTOO/distfiles
16 zfs create -o mountpoint=/usr/portage/packages -o compression=off rpool/GENTOO/packages
17 # Home-Directorys
18 zfs create -o mountpoint=/home rpool/HOME
19 zfs create -o mountpoint=/root rpool/HOME/root
20
21 wget ftp://gentoo.osuosl.org/pub/gentoo/releases/amd64/autobuilds/current-stage3-amd64-hardened/stage3-amd64-hardened-*.tar.bz2
22 tar -xf /mnt/gentoo/stage3-amd64-hardened-*.tar.bz2 -C /mnt/gentoo
23
24 mkdir -p /mnt/gentoo/etc/zfs
25 cp /etc/zfs/zpool.cache /mnt/gentoo/etc/zfs/zpool.cache
26 cp /etc/zfs/zdev.conf /mnt/gentoo/etc/zfs/zdev.conf
27 mount -t proc none /mnt/gentoo/proc
28 mount --rbind /dev /mnt/gentoo/dev
29 chroot /mnt/gentoo /bin/bash
30 env-update
31 source /etc/profile
32 export PS1="(chroot) $PS1"

Tausendsassa ZFS

Statt die vorhandene Platte in Partitionen fixer Größe zu zerteilen, nutzt das Setup die Funktionalität von ZFS, den Speicherplatz als Pool zu verwalten. Der vorhandene Platz auf »/dev/sda2« stellt auch die Größe des ZFS-Pools namens »rpool« dar. Darin legt der Admin einzelne Dateisysteme für die verschiedenen Verzeichnisse von Gentoo Linux an, zum Teil mit abweichenden Eigenschaften (Properties), zum Beispiel mit transparenter Kompression. Dateien, die jemand dort hineinschreibt, komprimiert ZFS automatisch und transparent.

Die Gestaltung und Aufteilung in besagte Dateisysteme ist ein Vorschlag, den jeder Admin an eigene Gegebenheiten anpassen sollte. Dabei geht es darum, welche Features von ZFS in Form von Properties er für einzelne Bereiche anwenden möchte. Es ist möglich, Speicherplatz für den User Root zu reservieren (Property Reservation) oder für normal berechtigte User den maximalen Speicher zu beschränken (Property Quota). Für manche Bereiche wie die ohnehin komprimierten Tarballs der Gentoo-Packages in »/usr/portage/distfiles« ergibt es keinen Sinn, Rechenleistung auf Kompression zu verschwenden, daher steht die Property Compression hier auf »off« .

Weitere Properties sind das Freigeben von Dateisystemen per NFS und das platzsparende Deduplizieren von Blöcken – das benötigt allerdings RAM und andere Ressourcen, ist also für schwächere Maschinen nicht empfehlenswert. Besonders kritische Daten lassen sich mit der Property »copies« extra gut verwahren: ZFS speichert dann jeden Block mehrere Male. Sollte ein Block beim Lesen nicht mehr die ursprünglich errechnete Checksumme aufweisen, stehen die Kopien zur Verfügung, von denen sehr wahrscheinlich zumindest eine korrekt geblieben ist. Mit dem erhöhtem Speicherbedarf erkauft man sich Redundanz, ohne mehrere physische Datenträger verwenden zu müssen. (Die ZFS-Raid-Funktionalität benutzt dieser Artikel nicht.)

ZFS ist nicht nur Dateisystem, sondern auch Volume-Manager ähnlich wie LVM 2. Der Vorteil für den Anwender: Er muss nicht im Voraus genau planen, welche Directories wie viel Platz belegen, da er die Zuordnungen ohne Neupartitionierung nachträglich ändern kann.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • ICC für Gentoo

    Das Software-Management von Gentoo Linux fußt auf dem Sourcecode der Programme. Damit eignet sich die Distribution im besonderen Maße für Performance-Experimente mit Compileroptionen. Teile von Gentoo lassen sich sogar mit der ICC übersetzen. Ein Praxistest.

  • Schneller Weg zur Live-CD

    Gentoo Linux lässt sich flexibel und einfach an eigene Bedürfnisse anpassen. Diese Anleitung zeigt, wie man mit dem distributionseigenen Tool Catalyst individuelle Live-CDs herstellt.

  • Wurzelimport

    Selbst betagte Rechner kommen als Diskless-Clients unter Linux dank transluzenter Dateisysteme und anderer Zutaten zu neuen Ehren - ersparen sie ihren Admins doch jede Menge Arbeit.

  • Gentoo: Proxy Maintainers pflegen verwaiste Software

    Der Gentoo-Entwickler Markos Chandras hat zusammen mit Kollegen das Projekt Proxy Maintainers ins Leben gerufen, das verwaiste Softwarepakete vorübergehend pflegen soll.

  • Gentoo Linux 2007.0 ist fertig

    Die Entwickler der freien Distribution Gentoo haben die Version 2007.0 mit dem Codenamen "Secret Sauce" veröffentlicht.

comments powered by Disqus

Ausgabe 01/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.