Termine planen, Nachrichten austauschen, Kundendaten verwalten, am besten auch vom Smartphone aus. Das alles und noch viel mehr sollen moderne ... (mehr)

Umsetzung

Die Funktionsweise liest sich in der Theorie komplizierter, als sie sich in der Praxis darstellt. Es gibt prinzipiell drei Möglichkeiten für den Einsatz von GELI: Die einfachste ist die Verschlüsselung einer Partition. Damit erreicht man schnell das gewünschte Ziel. Anwenden sollte man es zum Schutz der Home-Partition.

Die nächste Option ist die kryptografische Behandlung eines ganzen Datenträgers, wenn man seine privaten Daten auf dieser Platte auslagern möchte. Dies ist interessant für wechselbare Datenträger wie DVD-RAMs oder eine externe Festplatte. Maximale Sicherheit bietet die Verschlüsselung aller Datenträger einschließlich desjenigen Datenträgers, von dem das System bootet. Dies ist die aufwendigste und komplizierteste Methode. Vor allem, weil das Installationsprogramm von FreeBSD nicht mit solchen Datenträgern umgehen kann.

Sicheres Heim

Zunächst sei der einfachste Fall betrachtet. Es soll die Home-Partition »$home« (auf »/dev/da0s1g« liegend) verschlüsselt werden. Zunächst legt die folgende Zeile in der Datei »/boot/loader.conf« fest, dass das Modul GELI während der Bootphase geladen wird:

geom_eli_load="YES"

Zum Verschlüsseln der Partition generiert man einen Schlüssel, der auf einer Reihe von Zufallszahlen basiert. Wichtig ist, dass der Schlüssel an einem sicheren Ort im Verzeichnisbaum liegt. Dafür bietet sich das Home-Verzeichnis des Root-Users an:

mkdir /root/geli
dd if=/dev/random of=/root/geli/da0s1g.key bs=64 count=1

Diesen Schlüssel sollte man zur Sicherheit auch auf einem USB-Stick speichern. Nun erfolgt die Initialisierungsphase (siehe Abbildung 2) der Partition, in deren Verlauf man nach einen Passwort gefragt wird. Die Sektorgröße soll dabei 4096 Byte sein (»-s 4096« ).

geli init -s 4096 -K /root/geli/da0s1g.key /dev/da0s1g
Enter new Passphrase:
Reenter new Passphrase:

Nach der Eingabe des Passworts erfolgt im nächsten Schritt die Registrierung der Partition bei GELI:

geli attach -k /root/geli/da0s1g.key /dev/da0s1g
Enter Passphrase:

Hier ist das zuvor benutzte Passwort einzugeben. Ab diesem Schritt findet die Kommunikation mit dem Datenträger nur noch über den von GELI und »devd« generierten Treiber statt:

ls /dev/*.eli
da0s1g.eli

Um höchstmögliche Sicherheit zu gewährleisten, überschreibt der folgende Befehl die Partition mit Zufallszahlen, was abhängig von der Größe ziemlich lange dauern kann:

dd if=/dev/random of=/dev/da0s1g.eli bs=1m

Nachdem man bei einer Tasse Kaffee die Wartezeit genussvoll überbrückt hat, folgen die letzten Schritte. Um die Partition nutzen zu können, muss sie formatiert und eingehängt werden:

newfs /dev/da0s1g.eli
mount /dev/da0s1g.eli $home

Die folgenden Zeilen in »/etc/rc.conf« sorgen dafür, dass beim nächsten Systemstart die Partition automatisch eingebunden wird:

geli_devices="da0s1g"
geli_da0s1g_flags="-k /root/geli/da0s1g.key"

Wichtig ist dabei die Angabe zwischen »geli_« und »_flags« : Hier muss der Name eingetragen werden, der in »geli_devices« steht. Zusätzlich ergänzt oder ändert man die Mount-Tabelle »/etc/fstab« (statt »$home« ist natürlich der Verzeichnisname einzutragen):

/dev/da0s1g.eli $home ufs rw 0 0

Die Partition lässt sich auch wieder aushängen:

umount $home
geli detach da0s1g.eli

Wenn die Einträge in »/etc/rc.conf« stimmen, lässt sich eine verschlüsselte Partition auch mit »/etc/rc.d/geli start« ein- und mit »/etc/rc.d/geli stop« wieder aushängen. Aus dem oben erwähnten Grund sollte man auch die Swap-Partition verschlüsseln. In der systemweiten Konfigurationsdatei »/etc/rc.conf« sorgt dafür die Zeile:

geli_swap_flags="-d"

Die Option »-d« bedeutet, dass bei einem Systemabschluss die Swap-Partition automatisch aus dem GELI-System ausgehängt wird. Dadurch wird der Vorgang sauber abgeschlossen. Außerdem muss in der Mount-Tabelle der Eintrag zur Swap-Partition so aussehen:

/dev/da0s1b.eli  none  swap  sw  0  0

Zum Schluss initialisiert der Befehl

dd if=/dev/random of=/dev/da0s1b bs=1m
geli onetime -d -e 3des da0s1b
swapon /dev/da0s1b.eli

den Auslagerungsbereich. Während des System-Neustarts erhält man folgende Ausgabe:

GEOM_ELI: Device da0s1b.eli created.
GEOM_ELI: Encryption: AES-CBC 128
GEOM_ELI:  Crypto: software
comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2021