Von Jan
Allgeier
1.
Einleitung
Diese kleine Anleitung beschreibt, wie sich mit Hilfe von
Loop-AES (loop-aes.sourceforge.net)
ein verschlüsseltes Laufwerk unter Linux erstellen lässt.
Loop-AES habe ich ausgewählt, weil es sehr ausgereift ist, bei
mir seit Jahren problemlos arbeitet und ständig
weiterentwickelt wird. Die Verschlüsselung erfolgt dabei durch
das modifizierte Kernelmodul "loop", verwendet wird der
Algorithmus AES (Advanced Encryption Standard), der sich in
verschiedenen Schlüssellängen (128, 196 und 256 Bit) verwenden
lässt. Wahlweise lässt sich mit dem Modul eine komplette
Partition oder ein virtuelles Laufwerk verschlüsseln.
2. Loop-AES - so wird's
installiert
Für die Installation sind folgende Programmpakete
erforderlich:
Zuerst besorgen wir uns die aktuelle Version von Loop-AES
unter der Adresse loop-aes.sourceforge.net
und das aktuelle Paket von util-linux unter ftp://ftp.kernel.org/pub/linux/utils/util-linux/.
Anschließend entpacken wir beide Pakete und prüfen, ob die
Rahmenbedingungen wie Compiler, Bibliotheken und
Kernel-Sourcecode auf unserem System vorhanden sind.
Gegebenenfalls die fehlenden Pakete nachinstallieren, meist
wurden sie auf den CDs mitgeliefert oder können aus dem
Internet für die jeweilige Distribution nachgeladen werden.
Das Paket util-linux enthält so wichtige Programme wie z.B.
mount, die für die
Verschlüsselung modifiziert werden müssen. Mit cd util-linux* wird in das
Verzeichnis des Programmpakets gewechselt. Mit
cat /pfad/zu/Loop-AES/util-linux-2.xx.diff | patch -p1
werden die entsprechenden Programme gepatcht, mit make übersetzt und danach können
sie installiert werden. Dies geschieht mit folgenden Befehlen
(als root!):
cd util-linux*
./configure
make ADD_RAW=no
cd mount
install -m 4755 -o root mount umount /bin
install -m 755 losetup /sbin
Im Verzeichnis mount befinden sich noch
die veränderten Manpages von fstab, losetup,
umount und mount. Sie sollten in die
entsprechenden Pfade kopiert werden und die alten Versionen
überschreiben. Leider sind die Pfadangaben zu den Manpages
nicht bei allen Linux-Distributionen gleich, sodass wir sie
zuerst auf dem System suchen müssen. Mit man -w mount finden wir z.B.
heraus, wo die Beschreibung zum Befehl mount liegt.
Nach der Installation der Programme mount,
umount und losetup wechseln wir ins
Verzeichnis von Loop-AES und übersetzen das Kernelmodul mit
make (als root!).
Ein make install ist nicht
nötig, das Modul sollte bereits in einem Unterverzeichnis von
/lib/modules
liegen. Der Befehl make
tests zeigt, ob soweit alles funktioniert.
Wenn ja, können wir nun eine verschlüsselte Partition oder
einen entsprechenden Container erstellen. Die beiden Vorgänge
sind sich sehr ähnlich, ich behandle sie zugunsten der
Übersichtlichkeit dennoch getrennt.
3. Einrichten einer
verschlüsselten Partition (als
root!)
losetup -e AES128 /dev/loop0 /dev/hda7
mkfs -t ext2 /dev/loop0
losetup -d /dev/loop0
mkdir /mnt/crypted
Mit losetup wird die zu verschlüsselnde Partition
ausgewählt, in meinem Beispiel ist dies /dev/hda7 (Achtung:
Daten auf /dev/hda7 werden
überschrieben!). Als Schlüssellänge habe ich 128 Bit
ausgewählt, meiner Meinung nach völlig ausreichend.
Anschließend erfolgt die Frage nach einem Passwort, es muss
mehr als 20 Zeichen besitzen. Der Befehl mkfs -t ext2 erstellt ein
ext2-Dateisystem, es können jedoch auch andere Dateisysteme
verwendet werden.
Als nächstes muss die Datei /etc/fstab abgeändert
werden, die Zeile
/dev/hda7 /mnt/crypted ext2 defaults,loop=/dev/loop0,encryption=AES128 0 0
| |
wird hinzugefügt. Möchte man nicht bei jedem Rechnerstart
automatisch nach dem Passwort gefragt werden, empfiehlt es
sich, die Option noauto
noch unterzubringen.
Das verschlüsselte Laufwerk kann - wie andere Laufwerke
auch - mit dem einfachen Befehl mount
/mnt/crypted eingebunden werden. Mit umount /mnt/crypted und losetup -d /dev/loop0 wird es
wieder ausgehängt.
Übrigens lässt sich mit dem ebenfalls unter loop-aes.sourceforge.net
vorhandenen Tool aes-pipe eine bereits bestehende
Partition verschlüsseln. Der entsprechende Befehl lautet:
aespipe -e AES128 -T < /dev/hda7 > /dev/hda7
Allerdings sollten sicherheitshalber wichtige Daten vor der
Prozedur gesichert werden. Dank geht an Matthias
Schniedermeyer für den Tipp.
4. Einrichten eines
verschlüsselten Containers (als
root!)
Diese Option empfiehlt sich dann, wenn gerade keine
geeignete Partition frei ist und die Partitionstabelle nicht
geändert werden soll.
dd if=/dev/zero of=/container bs=1024 count=5120
losetup -e AES128 /dev/loop0 /container
mkfs -t ext2 /dev/loop0
losetup -d /dev/loop0
mkdir /mnt/crypted
Der Befehl dd lässt eine Datei (unseren Container)
mit 5 MB Größe entstehen (5120x1024 Byte). losetup
weist dem Container das Loop-Device zu und fragt nach dem
Passwort, mkfs erstellt ein ext2-Dateisystem und
mkdir erstellt das Verzeichnis, in das später die zu
verschlüsselnden Daten kommen.
Wie bei meinem Beispiel mit der verschlüsselten Partition
muss wieder die Datei /etc/fstab angepasst
werden, die Zeile
/container /mnt/crypted ext2 defaults,loop=/dev/loop1,encryption=AES128 0 0
| |
wird hinzugefügt.
Das Laufwerk kann mit umount
/mnt/crypted und losetup
-d /dev/loop0 wieder ausgehängt werden.
5. Problemlösungen und
weitere Infos
Probleme gibt es leider bei allen neueren
SuSE-Distribution. SuSE liefert eine eigene Verschlüsselung
mit. Leider liegt diese nicht als Modul vor, sondern wurde
fest in den Linux-Kernel eingebacken. Die Lösung des Problems
besteht darin, den Kernel mit make
xconfig neu zu konfigurieren und darauf zu achten,
dass unter "Blockdevices" die Option »Loopback device
support« auf m wie Modul gesetzt wird. Anschließend
muss der Kernel neu übersetzt und installiert werden.
Linux-Neulingen empfehle ich allerdings nicht, einen eigenen
Kernel zu bauen.
Ebenfalls sollten wir anhand des Datums prüfen, ob das alte
Modul loop.o von Loop-AES überschrieben wurde. Dazu gehen wir
unter /lib/modules
in das entsprechende Verzeichnis unseres Kernels und schauen,
ob im Verzeichnis block das Modul loop.o überschrieben
wurde.
Viele weitere Einsatzmöglichkeiten von Loop-AES werden in
der englischen README beschrieben, sie alle aufzuführen würde
den Rahmen meiner kleinen Anleitung sprengen. Unter dem Namen
Encrypted-Root-Filesystem-HOWTO gibt es unter http://www.tldp.org/HOWTO/Encrypted-Root-Filesystem-HOWTO/
eine Anleitung, welche die Verschlüsselung der kompletten
Festplatte mit Loop-AES ausführlich beschreibt.
Copyright (C) Jan Allgeier Erschienen auf Pro-Linux, letzte Änderung
2004-02-25
|