Linux:Anleitungen Linux/Festplattenverschlüsselung

Aus Cowboy's Wiki
Wechseln zu: Navigation, Suche
Startseite > Anleitungen Linux > Anleitungen Linux/Festplattenverschlüsselung
NewTux.svg
Distribution: Debian GNU/Linux
Version: 7.0 („Wheezy“)

HINWEIS:
Dieser Artikel basiert auf einer Artikelserie meines Blog-Co-Autors David.

Warum Festplattenverschlüsselung?[1]

Regelmäßig verschwinden mehrere tausend Notebooks pro Jahr. Der wirtschaftliche Schaden allein durch die Hardware geht dabei in den Millionenbereich. Doch viel problematischer ist der - ökonomisch schwer zu beziffernde - Schaden durch Datenverlust. Schützen kann man sich dabei nur durch zwei Maßnahmen: Backups und Festplattenverschlüsselung.

Die meisten von uns kennen die Situation: Man sitzt am Flughafen oder am Bahnsteig und wartet auf sein Transportmittel. Um sich die Zeit zu vertreiben bootet man kurz das Notebook und ackert seine E-Mails durch. Wer jetzt aufsteht um sich „mal eben“ einen Kaffee zu holen riskiert einen Diebstahl und bei Firmeneigentum am Notebook auch gleich noch eine Abmahnung. Eine Binsenweisheit? Ja. Nur leider beachten viel zu wenige die tatsächlichen Sicherheitsregeln die in den meisten Firmen mittlerweile vorgeschrieben sind.

  1. Laptop niemals unbeaufsichtigt lassen.
  2. Falls das Gerät doch einmal allein bleiben muss, muss es mit einem 600X WIKIPEDIA LOGO.svgKensington-Schloss gesichert werden.
  3. Für den Fall, dass das Gerät doch abhanden kommt muss die Festplatte verschlüsselt sein.

Bis hierhin klingt noch alles logisch und nachvollziehbar, gelten doch im Business-Bereich ganz andere Regeln als man sie für sich selbst privat anlegt.

Ein dazu immer wieder gehörtes Argument ist „Ach, das was da drauf ist interessiert doch keinen“. Meistens kommt dieses so genannte „Argument“ von den gleichen Leuten, die auf eben dieser Maschine ihre Kontoauszüge als .pdf speichern, ihre Kreditkartendaten in einem Excel-File aufbewahren und am besten noch ein paar - freundlich ausgedrückt - nicht als jugendfrei klassifizierbare Fotos von sich selbst und der Freundin auf der Platte haben.

Diese Menschen sind dann immer sehr überrascht, was man so alles über sie herausfinden kann, einzig und allein indem man ihren Rechner durchforstet.

Deshalb nochmals zum mitmeißeln: In dem Augenblick wo euer Computer seinen Stammplatz verlässt und mitgenommen wird ist eine Verschlüsselung der Festplatte keine Kür mehr sondern Pflicht. Jeder von uns hat etwas auf dem Rechner, von dem er nicht möchte, dass andere es sehen können. Verstanden? Gut. Auch wenn der Rechner stehen bleibt, ist es übrigens immer noch sinnvoll, die Platten zu verschlüsseln. Wer möchte schon riskieren, dass Einbrecher außer der Hardware auch noch Daten finden, die sie zu Geld machen können?

Und für den Fall, dass das Notebook gestohlen werden sollte hat sicherlich jeder von euch ein (hoffentlich ebenso verschlüsseltes) Backup, richtig?

Festplattenverschlüsselung - Wie?[2]

Zunächst ist es wichtig, zwischen der Vollverschlüsselung (Full Disk Encryption, FDE) und einem so genannten Container zu unterscheiden.

Bei der Vollverschlüsselung wird, wie schon der Name sagt, die komplette Festplatte (bis auf die boot-Partition) verschlüsselt. Bei einem Container wird ein einzelner Ordner (oder auch eine ganze Partition, z.B. /home) verschlüsselt.

Die Container-Lösung ist immer dann sinnvoll, wenn man Daten möglichst sicher über ein unsicheres Medium transferieren will. Man erstellt einen Container, legt seine Daten dort ab und kopiert den Container in seinen Webspace, von wo aus zwar jeder die Daten herunterladen kann, aber nur diejenigen auch etwas damit anfangen können, die das Passwort dazu haben. Wichtig dabei ist: Wenn man Dateien in einen Container legt, kann es immer noch sein, dass Teile davon im Swap-Bereich verbleiben, wo sie dann von einem Angreifer gefunden werden könnten. Das heißt, dass Container per se weniger sicher sind als die FDE. Dennoch haben sie, wie oben bereits angeführt, ihre Berechtigung.

Auf der sicheren Seite, wenn es darum geht, seine eigenen Daten vor Unbefugten zu schützen ist man, wenn man sein System vollverschlüsselt.

ACHTUNG:
Auch hier gilt, wie bei allen anderen Sicherheitssystemen auch: Sobald ein physischer Zugriff auf das System möglich ist, kann die Sicherheit nicht mehr gewährleistet werden. Wie man an diesem Beispiel sieht, muss man davon ausgehen, dass jeder Fremdzugriff das System kompromittiert. Mit einer FDE wäre der Geschäftsmann vermutlich besser gefahren, hätte sich aber im Zweifel nicht schützen können. Dennoch, so lange man es nicht mit Sicherheitsbehörden zu tun hat, die überdurchschnittlich viel Zeit und Geld haben, ist eine Vollverschlüsselung sinnvoll.

Der guten Ordnung halber trenne ich den Artikel hier in die Anleitung für FDE und die Anleitung für Container.

Full-Disk-Encryption[3]

Zu einer FDE kommt man heute mit jedem handelsüblichen Debian oder *buntu-System auf denkbar einfache Weise. Ich gehe davon aus, dass das auch bei den meisten anderen Standard-Distros so ist, kann das aber weder verifizieren noch falsifizieren.

Man startet die Installation, hangelt sich durch bis zum Partitionsmenü und stellt dann auf „Geführt, verwende vollständige Festplatte mit verschlüsseltem LVM“ um. Danach folgt man den Anweisungen weiter, installiert das Grundsystem und fertig ist der Lack.

Zu einfach?

Richtig.

Für den Standardfall „eine Festplatte im Rechner verbaut und der Rechner ist ein Linux-Only-Gerät“ reicht diese Vorgehensweise aus, man muss sich also dank der grandiosen Vorarbeit der Debian-Developers nicht mal mehr groß Gedanken darum machen.

Wenn man jetzt allerdings mehr als eine Platte hat und diese auch alle nutzen möchte, sieht das Ganze schon etwas schwieriger aus.

Dazu folgt man ebenfalls dem Standard-Installations-Menü bis zur Partitionierung und wählt dann „Manuell“ aus.

Je nach Einsatzzweck ist zunächst das Software-RAID zu konfigurieren. Wenn man die Festplatten nicht redundant genutzt werden sollen sondern sämtlicher Speicherplatz ausgenutzt wird kann man sich das RAID sparen.

Dann konfiguriert man den LVM. Dabei steht LVM für Logical Volume Manager, der Link geht dabei zum sehr gut recherchierten und aufbereiteten Wikieintrag bei den Ubuntuusers. Das dort hinterlegte Wissen ist von hier ab als gegeben angenommen. Ich empfehle, alle nicht benutzten Partitionen zu einer LVG (Logical Volume Group), im Folgenden als lvg bezeichnet, zusammenzufassen und dort dann die Volumes anzulegen. Die wichtigen Volumes sind:

  • lvg-boot, ca. 200MB bis 1GB, abhängig davon, wie viel Platz man zur Verfügung hat. Ich lasse bei meinen Systemen immer gern Luft nach oben, um für eventuelle Erweiterungen des Codes gerüstet zu sein.
  • lvg-swap, sollte ca. doppelt so groß sein wie der Arbeitsspeicher.
  • lvg-main, kann der verbleibende Rest des Speicherplatzes sein, falls keine separate /home-Partition angelegt werden soll. Hier finden wir später die /-Partition wieder.
  • ggf. lvg-home, falls eine eigene /home-Partition angelegt wird.

Wenn die Volumes angelegt sind wird im Partitionsmenü der Punkt „Verschlüsselte Datenträger konfigurieren“ aufgerufen. Hierbei werden alle Volumes außer lvg-boot ausgewählt. Die boot-Partition darf natürlich nicht verschlüsselt werden, sonst bekommt man eine hässliche Fehlermeldung und kann von vorn anfangen.

Die Installationsroutine geht jetzt ein Volume nach dem anderen durch und lässt die Einstellungen abnicken, mit denen die Verschlüsselung eingeleitet wird.

ACHTUNG:
Ubuntu setzt hier mehr auf Geschwindigkeit als auf Sicherheit und schlägt vor, die Daten auf den Platten nicht zu löschen. DAVON RATE ICH STRIKT AB! Wenn man größtmögliche Sicherheit haben will, lässt man die Daten überschreiben. Mehrfach. Dazu muss allerdings bei Ubuntu in besagtem Einstellungsmenü ausgewählt werden, dass man die Daten löschen möchte. Das passiert dann automatisch, kann allerdings abhängig von der Partitionsgröße und der Rechenpower eine Weile dauern.

Wenn man die Verschlüsselungs-Einstellungen hinter sich hat landet man wieder im Partitionsmenü. Hier werden jetzt die angelegten Volumes ausgewählt und mit Dateisystemen und Mountpoints versehen. lvg-boot bekommt ein ext3-Dateisystem und wird auf /boot eingehängt, lvg-swap_crypt wird als Auslagerungsspeicher verwendet, dadurch fällt der Mountpoint weg und lvg-main_crypt bekommt ein ext4-Dateisystem und wird auf / eingehängt.

Jetzt werden die Änderungen gespeichert und die Installation fortgesetzt. Ab hier läuft wieder alles nach Standard-Vorgehensweise und die Installationsroutine tut ihre Arbeit.

Wem das jetzt immer noch zu einfach war, dem lege ich diese Anleitung zur Installation eines verschlüsselten Linux Mint Debian Edition (LMDE) ans Herz.

Auch die exzellenten Artikel des Linux-Magazins bzw. des Linux-Users kann ich dazu sehr empfehlen, die Heftnummern reiche ich auf Wunsch gern nach.

Verschlüsselte Container[4]

Da ich ein wunderbares HowTo gefunden habe muss ich zum Vorgehen keine weiteren Ausführungen machen, denke ich. Falls jemand Fragen hat sollten sie hier auf der Diskussionsseite gepostet werden.

Mit dem Einverständnis von Aaron Spettl kopiere ich das HowTo nach hier. Redundanz schadet nie.

Die einzige Anpassung, die ich vornehme, ist das Dateisystem von ext2 auf ext4 zu aktualisieren.

Ziel:

Ein verschlüsselter Container, den man bei Bedarf in das Dateisystem einbindet. Dies soll ohne Neukompilieren des Kernels funktionieren und keine besonderen Pakete benötigen - sowie in meinem Fall auch unter Debian Testing lauffähig sein.

Pakete:

Wir installieren cryptsetup und loop-aes-utils.

1. Erstellen der Containerdatei

An einem beliebigen Ort legen wir die Datei an, die unsere Daten speichern soll - hier 10 GB groß (mit Zufallsdaten gefüllt):

dd if=/dev/urandom of=/home/user/daten.safe bs=1M count=10240

2. Loop-Device

Als root legen wir ein Device an, das einfach auf diese Datei verweist:

losetup /dev/loop0 /home/user/daten.safe

3. Verschlüsselung einrichten

Wir richten nun die Verschlüsselung (Standard: AES mit 256 Bit) auf diesem Device ein - dabei muss das Kennwort angegeben werden:

cryptsetup -y create datensafe /dev/loop0

4. Formatierung

Der Container ist nun im System unverschlüsselt unter /dev/mapper/datensafe vorhanden. Nun richten wir das Dateisystem ein (hier ext4):

mkfs.ext4 /dev/mapper/datensafe

5. Mount

Nach der Formatierung können wir das Device unter einem beliebigen Verzeichnis einhängen (das existieren muss):

mount -t ext4 /dev/mapper/datensafe /mnt/datensafe

Nun kann man auf /mnt/datensafe ganz normal arbeiten, also speziell auch Zugriffsberechtigungen (restriktiv) setzen.

6. Aushängen

umount funktioniert ganz normal, danach noch den Container schließen und das Loopdevice freigeben:

umount /mnt/datensafe/
cryptsetup remove datensafe
losetup -d /dev/loop0

Tipp: Automatisierung mit sudo

Der mount/umount-Prozess inklusive Öffnen/Schließen des Loopdevices und des Containers kann man in ein Skript packen (und auf einem Ubuntu-System dem User mit sudo die Rechte dafür geben).

#!/bin/sh
# datensafe_mount.sh

LOOPDEV=/dev/loop0
SAFE=/home/user/datensafe
CRYPTNAME=datensafe
MNT=/mnt/datensafe
FS=ext4

/sbin/losetup $LOOPDEV $SAFE
/sbin/cryptsetup create $CRYPTNAME $LOOPDEV
/bin/mount -t $FS /dev/mapper/$CRYPTNAME $MNT

und

#!/bin/sh
# datensafe_umount.sh

LOOPDEV=/dev/loop0
SAFE=/home/user/datensafe
CRYPTNAME=datensafe
MNT=/mnt/datensafe

/bin/umount $MNT
/sbin/cryptsetup remove $CRYPTNAME
/sbin/losetup -d $LOOPDEV

Quellverweise