HowTo zum Verschlüsseln der /Home-Partition unter Linux

In der digitalen Welt von Heute schleppt der Otto-Normalverbraucher wichtige Dokumente, private Bilder, Unternehmensunterlagen und vieles mehr mit sich herum. Hierbei wird oftmals der Datenschutz bewusst nach dem Motto "es wird schon nichts passieren" ignoriert. Das Thema Datensicherheit kann man gut mit der Anschnallpflicht während der Autofahrt vergleichen: es geht lange Zeit gut, vielleicht passiert nie ein Unfall, aber wenn das Unglück dann eintritt, wäre man froh, sich doch den schützenden Gurt angelegt zu haben!

Man sollte sich einfach die Frage stellen, was im Falle eines Verlusts oder Diebstahls des Notebooks geschieht und ein Fremder auf die persönlichen Daten zugreifen kann? Wer glaubt, dass der normale Benutzerlogin oder ein sicheres Administratorpasswort ausreicht, der liegt völlig falsch. Der Angreifer legt einfach eine bootfähige Live-CD ein und die Benutzerverwaltung des Betriebssystem wird schichtweg ausgeschaltet. Das gilt auch für das sonst so sichere Linux-Betriebssystem: hat der Angreifer physikalischen Zugriff, kann er problemlos die standardmäßigen Sicherheitsmechanismen umgehen.

In diesem Falle hilft nur eine Sicherheitsvorkehrung: die Verschlüsselung der Dateien bzw. der ganzen Partition. Im Artikel Linux - TrueCrypt Festplatten-/Datenverschlüsselung wurde beschrieben, wie man externe Partitionen verschlüsselt werden können. Dieser Artikel geht einen Schritt weiter und zeigt die Verschlüsselung der Systempartition /home, welche in der Regel die privaten Daten beinhaltet.

Anleitung - Verschlüsselung mit cryptsetup

Die einfachste Programm, um unter Linux eine Systempartition zu verschlüsseln, ist cryptsetup. Dieses nützliche Tool arbeitet ähnlich wie Truecrypt und nutzt unter anderem die AES-Verschlüsselung. cryptsetup arbeitet "On The Fly Verschlüsselung", d.h. Daten werden nur im Arbeitsspeicher ver- und entschlüsselt, so dass keine unverschlüsselten Daten auf der Festplatte abgelegt werden. Dies erhöht zum einen die Geschwindigkeit und zum anderen die Sicherheit. Achtung: trotzdem werden Daten in der Swap-Datei abgelegt. Diese sollte optimalerweise auch verschlüsselt werden, worauf in diesem Artikel nicht eingegangen wird.

1. Schritt: Vorbereitung des Kernels

Bevor wir beginnen, müssen wir wie in nahezu jedem Linux-Artikel überprüfen, ob der Kernel die benötigten Module unterstützt. Mit einem einfachen cd /usr/src/linux && make menuconfig öffnen wir die Kernel-Konfig. Zum einen muss der so genannte Device-Mapper und zum anderen der Crypt-Target-Support aktiviert werden. Zusätzlich muss man den gewünschten Verschlüsselungsalgorithmus auswählen. In diesem Artikel soll die /home-Partition mit AES verschlüsselt werden.

Device Drivers  --->
[*] Multiple devices driver support (RAID and LVM)  --->
  <M>   Device mapper support
  <M>   Crypt target support

Cryptographic API  --->
  <M>   SHA1 digest algorithm
  <M>   SHA224 and SHA256 digest algorithm
  <M>   SHA384 and SHA512 digest algorithms
  <M>   AES cipher algorithms (x86_64)
  <M>   LRW support

Anschließend den Kernel und dessen Module wie gewohnt mit make && make modules_install kompilieren und die benötigten Module laden:

modprobe dm-crypt
modprobe dm-mod
modprobe sha
modprobe aes

Mit lsmod prüfen wir, ob die Module erfolgreich geladen wurden. Nun sollte man die Module in die /etc/modules.autoload.d/kernel-2.6 eintragen, um sicherzugehen, dass die Module beim Starten des Systems automatisch geladen werden. Dann kann mit Schritt 2 fortgefahren werden.

2. Schritt - mit Cryptsetup die verschlüsselte Partition erzeugen

Die Vorgehensweise mit Cryptsetup ist anders, als der Laie anfangs vermuten mag. Nein, wir verschlüsseln keine bestehende Daten bzw. konvertieren eine bestehende Home-Partiton! Das Prinzip ist wie folgt: wir legen zuerst eines verschlüsseltes Mapper-Device an, welches verschlüsselt und mit einem Passwort belegt wird. Dieses Mapper-Device, welche sich in /dev/mapper/ befindet, muss jedes Mal beim Booten bzw. ersten Zugriff erzeugt werden. Dieses erledigt cryptsetup mit der gewünschten Entschlüsselung und Passwortabfrage für uns. Erst wenn cryptsetup nach erfolgreicher Authentifizierung ein Device erzeugt hat, können wir es mit mount /dev/mapper/beispiel /home in den Dateibaum einhängen.

### Partition mit cryptsetup verschlüsseln
cryptsetup -c aes-lrw-benbi:sha256 -y -s 384 luksFormat /dev/sda5

### Mapper-Device namens homelaufwerke erzeugen
cryptsetup luksOpen /dev/sda5 homelaufwerke

Der obere Befehl muss nur einmalig durchgeführt werden, da er die Partition verschlüsselt und mit einem Passwort hinterlegt. Der nächste Befehl wird bei jedem Boot bzw. neuen Zugriff auf die Partition ausgeführt. An diesem Punkt wird es Zeit, dass Dateisystem anzulegen:

### Dateisystem mit ReiserFS anlegen
mkfs.reiserfs /dev/mapper/homelaufwerke

Nun sind wir in der Lage, auf die verschlüsselte Partition zuzugreifen und Daten zu speichern. Jetzt wird die Bedeutung des Mapper-Devices deutlich, welche den Umweg über cryptsetup und die Verschlüsselung darstellt.

3. Schritt - fstab, Einbinden beim Booten automatisieren

Das /home Verzeichnis muss bekanntlich in die /etc/fstab eingetragen werden. Das Problem ist nur, dass wir nicht /dev/sda5 eintragen können, da diese Partition ohne Entschlüssung nicht lesbar ist. Folgender Eintrag wird nicht funktionieren:

### Auszug /etc/fstab, nach Verschlüsselung nicht funktionsfähig
/dev/sda5 /home         reiserfs        defaults        0 0

Das ist auch gut so, denn der normale Zugriff auf die Partition soll verhindert werden. Also müssen wir das Mapper-Device angeben:

/dev/mapper/homelaufwerke /home         reiserfs        defaults        0 0

Aber auch in diesem Falle wird die Einbindung mit einer Fehlermeldung fehlschlagen, denn die /Home-Partition muss vor dem Login vorhanden sein, so dass der Benutzer darauf zugreifen kann. Ziel muss es also sein, dass ein Mechanismus während des Bootvorgangs das Mapper-Device anlegt, die Passwortabfrage macht und für die Entschlüsselung zuständig ist. Für diesen Fall verwendet man nun den /etc/init.d/dmcrypt Dämon.

Diesen fügen wir nun zum Boot-Runlevel hinzu und tragen unser Device in die Datei /etc/conf.d/dmcrypt ein:

### dmycrypt zum Boot-Runlevel hinzufügen
rc-update add dmcrypt boot

### Auszug /etc/conf.d/dmcrypt
target=homelaufwerke
source='/dev/sda5'

Herzlichen Glückwunsch! Die /home-Partition wurde nun erfolgreich verschlüsselt und für den alltäglichen Einsatz konfiguriert!

Der Alltagseinsatz

Wenn das System gestartet, der Grubloader geladen und der Boot-Runlevel erreicht wird, wartet dmcrypt auf die Passworteingabe des Anwenders, damit das Mapper-Device angelegt werden kann. Auch hier könnte man einen Automatismus mit einem Key-File erstellen, was aber ein Zusatzrisiko ist, da der Schlüssel in irgendeiner Form auf dem lesbaren Dateisystem hinterlegt werden müsste.

Das wichtige Ziel der Datensicherheit wurde aber erfüllt, denn weder mit einer Live-CD oder einem Festplattenprogramm wie Acronis-Trueimage konnte auf die Partition zugegriffen werden. Der Angreifer hat nur die Möglichkeit, den Kampf gegen die Verschlüsselungsalgorithmen aufzunehmen.

Weitere Quellen:

Linux - TrueCrypt Festplatten-/Datenverschlüsselung

Gentoo-Wiki

Wiki-Ubuntuuser