Home und swap mit ecryptfs verschlüsseln

Unter Linux gibt es mehrere Möglichkeiten, Datenbereiche zu verschlüsseln, um die Daten zu schützen. Die sinnvollste Möglichkeit ist meiner Meinung nach ein verschlüsselter LVM. Dadurch werden alle Bereiche komplett abgedeckt. Außerdem lassen sich im Nachgang die Partitionen leicht verwalten. Es ist jedoch auch möglich, ausschließlich /home zu verschlüsseln. Dazu gibt es fertige Skripte in den „ecryptfs-utils“, die diesen Schritt automatisieren. Die vorgefertigten Pakete haben jedoch einen kleinen Nachteil. Es wird „nur“ mit AES-128 verschlüsselt. Dies sollte – Stand Heute – für den privaten Gebrauch ausreichend sein. Wer mehr will, muss den manuellen Weg wählen oder gleich ein System mit verschlüsseltem LVM aufbauen.


Um ecryptfs nutzen zu können, müssen die benötigten Pakete installiert werden.

Arch Linux:

sudo pacman -S ecryptfs-utils rsync

Debian Linux:

sudo apt-get install ecryptfs-utils rsync

Nach der Installation muss das Kernelmodul geladen werden, um es auch nutzen zu können.

sudo modprobe ecryptfs

Bei einigen Systemen kann es passieren, dass das Modul beim Start nicht automatisch geladen wird. In diesem Fall muss es über eine Konfigdatei beim Start geladen werden.

sudo nano /etc/modules-load.d/ecryptfs.conf

In die Datei wird folgendes eingetragen.

ecryptfs

Soll das Home Verzeichnis des aktuell angemeldeten Benutzers verschlüsselt werden, muss dieser abgemeldet werden. Im Login Screen wird dann in eine virtuelle Konsole gewechselt.

strg + alt + f2

Als Login wird root gewählt. Um das Home Verzeichnis bzw. die Home Partition des gewünschten Benutzers zu verschlüsseln, wird das ecryptfs-migrate-home Skript ausgeführt.

ecryptfs-migrate-home -u username

ecryptfs_home01

Wenn der Befehl erfolgreich durchgelaufen ist, muss nach der Verschlüsselung noch dafür gesorgt werden, dass das Home Verzeichnis automatisch beim Start gemountet wird.
Für die Authentifizierung wird das PAM (Pluggable Authentication Modules) entsprechend konfiguriert. Dadurch wird beim Systemstart das verschlüsselte /home automatisch gemountet, ohne dass ein Passwort eingegeben werden muss.

sudo nano /etc/pam.d/system-auth

Nach der Zeile „auth required pam_unix.so“ muss „auth required pam_ecryptfs.so unwrap“ eingetragen werden.
Über der Zeile „password required pam_unix.so“ muss „password optional pam_ecryptfs.so“ eingetragen werden.
Nach der Zeile „session required pam_unix.so“ muss „session optional pam_ecryptfs.so“ eingetragen werden.

Der Schlüssel kann mit folgendem Befehl angezeigt werden. Am besten die Ausgabe in einen Passwordsafe eintragen.

ecryptfs-unwrap-passphrase

Die Verschlüsselung von /home ist hiermit abgeschlossen. Wenn der Login sauber funktioniert und alle Daten genutzt werden können,
kann noch das alte User Backup gelöscht werden. Hierbei muss der Username und der Randomwert noch angepasst werden.

sudo rm -r /home/testuser.random

Zusätzlich sollte jetzt noch /swap verschlüsselt werden, damit keine sensiblen ausgelagerten Daten ausgelesen werden können.

sudo ecryptfs-setup-swap

Sollte es nachdem /swap verschlüsselt wurde zu einer Fehlermeldung beim Start kommen, liegt das an einer falschen UUID in der „/etc/crypttab“.
Die UUID kann im Problemfall einfach durch die Gerätebezeichnung ersetzt werden.

sudo nano /etc/crypttab

Beispiel, wie die automatisch generierte Zeiler geändert werden muss.

cryptswap1 UUID=23877114-18f4-407d-9f38-4223eca2644b /dev/urandom swap,offset=8,cipher=aes-xts-plain64
cryptswap1 /dev/sda2 /dev/urandom swap,offset=8,cipher=aes-xts-plain64

Nach der Anpassung sollten sowohl /home als auch /swap verschlüsselt sein. Prüfen lässt sich der Erfolg ganz einfach. Unter einem zweiten User sollte kein Zugriff auf die Daten in „/home/testuser“ möglich sein. Ob /swap verschlüsselt ist, lässt sich mit folgendem Befehl prüfen.

swapon -s

Wird hier die Partition nicht mit dem Gerätenamen angezeigt, hat alles funktioniert.

Quelle: https://wiki.archlinux.org/index.php/ECryptfs#Encrypting_a_home_directory