LoopAES
Aus Gentoo Linux Wiki
| Firewall • Dienste absichern • Verschlüsselung • alphabetischer Security Index |
Ich möchte hier einen kleinen Einblick in das Verschluesseln von Dateisystemen geben und vorallem die LoopAES Readme in ein angenehmeres Format bringen. Dabei hab ich mich aber auch an diesem Howto aus den Foren orientiert.
Inhaltsverzeichnis |
[Bearbeiten] Benötigte Dinge:
- LoopAES von http://loop-aes.sourceforge.net/. (das)
- Eine Knoppix-LiveCD fuer eure Arch.
- Einen nach mgl. nicht mit Genkernel konfigurierten Kernel der 2.6er Reihe. (Die Anweisungen fuer 2.4 fuege ich spaeter an)
- USE="crypt" muss gesetzt sein. Notfalls setzen und ein "emerge -avuDN world" ausfuehren. (Benötigt wird nur ein "emerge -av1 util-linux", aber sicher ist sicher)
[Bearbeiten] Vorbereitung:
Als naechstes solltet ihr ein Backup aller wichtiger Daten anlegen, die auf den zu cryptenden Platten sind. Am sinnvollsten ist es, die Platten vor dem Crypten 3-4 mal mit /dev/urandom zu ueberschreiben, um alle Daten die bisher drauf waren zu vernichten, was jedoch nicht unbedingt nötig ist.
- /dev/urandom dauert sehr lange. da die Platte später ohnehin verschlüsselt wird, tut es ein Überschreiben mit Nullen mit /dev/zero auch.
Nun nurnoch die benötigten Dinge besorgen, und los gehts.
[Bearbeiten] Der Kernel:
Dieser muss wie folgt konfiguriert sein:
Device Drivers --->
Block devices --->
<*> Loopback device support
<*> Cryptoloop Support
Cryptographic options ---> <*> AES cipher algorithms
Fuer ein verschluesseltes Root-Dateisystem noch dies aktivieren:
Device Drivers --->
Block devices --->
<*> RAM disk support
(16) Default number of RAM disks
(4096) Default RAM disk size (kbytes)
[*] Initial RAM disk (initrd) support
File systems ---> <*> Minix fs support
Danach den kernel wie immer kompilieren und nach /boot kopieren. Danach neustarten oder sonstwie den neuen Kernel laden.
[Bearbeiten] Letzte Schritte
Darauf wie man util-linux remerged geh ich nun mal nicht ein, und gehe einfach davon aus, dass ihr das so hin bekommt. Als letztes solltet ihr noch das loopAES tar.bz2 irgendwo entpacken und auf der bash in die loopAES dir wechseln. Dort muesst ihr "make tests" tippen. Das ganze sollte als root geschehen.
# cd loop-AES-v3.1d/ # make clean rm -f *.o *.ko *.orig *.rej *.mod.c patched-loop.[ch] test-file[1234] rm -f -r test-dir1 tmp-d-kbuild # make tests ... *** Test results ok ***
Sollte das nicht so aussehen habt ihr ein problem und solltet das mit dem verschluesseln nicht weiter ausfuehren. Es kann durchaus hilfreich sein, das ganze nochmal ohne die Gentoowerkzeuge zu tun, sprich util-linux von hand zu bauen und loop als modul von hand zu basteln. Bei mir ist an dieser Stelle auch mehrfach ein Fehler aufgetreten, wozu ich aber bei Zeiten noch was schreiben werde.
[Bearbeiten] Was verschlüsseln?
Nun solltet ihr euch darueber klar werden, was ihr wie verschluesseln wollt.
- Eine einzelne Datenpartition
- Das gesamte Root-Dateisystem
- Swap
Danach bleiben dann noch die verschiedenen Möglichkeiten, die Verschluesselung zu realisieren, wobei ich das spaeter ergaenzen werde. Es gilt generell, dass ihr AES256 durch AES128 ersetzen könnt, da 128bit theoretisch aehnlich sicher wie 256bit sind.
[Bearbeiten] Eine Partition
Wenn ihr eine einzelne Partition aus eurem dateisystem verschluesseln wollt, die nicht die dafuer wichtigen Programme enthaelt (/bin und /sbin), geht das relativ einfach. Als erstes sichergehen, dass das Backup funktioniert.
Dann folgende dinge tun:
1. die Partition unmounten:
umount /dev/hdb1
2. Loopdevice anlegen. Dabei werdet ihr nach einem Passwort mit mindestens 20 Stellen gefragt:
losetup -e AES256 -T /dev/loop0 /dev/hdb1
3. Das bestehende Dateisystem verschluesseln (dauert je nach Größe der Partition einige Stunden):
dd if=/dev/hdb1 of=/dev/loop0 bs=64k conv=notrunc
4. /etc/fstab bearbeiten:
/dev/hdb1 /mnt/point "fs" defaults,user,rw,noauto,loop=/dev/loop0,encryption=AES256 0 0 oder fuer automatisches Mounten: /dev/hdb1 /mnt/point "fs" defaults,user,rw,loop=/dev/loop0,encryption=AES256 0 1
5. mount -a
[Bearbeiten] Swap
Swap zu verschluesseln ist eigentlich nur sinnvoll, wenn man das restliche System auch verschluesselt. ;-)
- swapverschlüsselung zu verwenden ist sinnvoll, wenn man vermeiden will, dass vertrauliche speicherinhalte (zb passwörter, verschlüsselte IM-kommunikation) auf die festplatte ausgelagert werden. swap-verschlüsselung ist damit die vorraussetzung für jede andere festplattenverschlüsselung (wenn man wert auf seine kryptokeys legt...). eine forensische auswertung des swap kann etliches über die letzte nutzung des systems aussagen.
Da die Daten eh bei jedem reboot verworfen werden, können wir Zufallsschlüssel nutzen und das Filesystem bei jedem Mounten neu erzeugen.
1. Swap deaktivieren:
swapoff -a
2. /etc/fstab bearbeiten:
/dev/hda2 none swap sw,loop=/dev/loop6,encryption=AES256 0 0
3. Sicher das vernichten, was sich bisher auf der Partition tummelt.
dd if=/dev/urandom of=/dev/hda2 bs=64k conv=notrunc
4. Neuen Swapspace erstellen:
mkswap /dev/hda2
5. Swap aktivieren:
swapon -a
So, fertig. Have fun. :-)
[Bearbeiten] Das Root-Dateisystem
Hierfuer braucht ihr nun endlich die Knoppix-CD und ein paar Files aus der loopAES dir außer dem makefile. 1. dietlibc installieren, da diese fuer die initrd gebraucht wird.
emerge -av dev-libs/dietlibc
2. Im LoopAES Ordner das build-initrd.sh Script bearbeiten.
USEDEVFS=0 USEPIVOT=1 BOOTDEV=/dev/hda1 (bzw eure /boot Partition) BOOTTYPE=ext2 (bzw das von euch gewaehlte Filesystem) CRYPTROOT=/dev/hda3 (euer / ) ROOTTYPE=reiserfs (und das entsprechende Filesystem) CIPHERTYPE=AES256 (128 oder 256bit fuer / ?) USEGPGKEY=0 (klar, oder?)
3. Das Script ausfuehren:
sh build-initrd.sh
4. grub.conf bearbeiten:
title=Gentoo Linux 2.6.16 root (hd0,0) kernel /kernel-2.6.16 udev ro root=/dev/ram0 init=/linuxrc rootfstype=minix initrd /initrd.gz
5. /etc/fstab bearbeiten:
/dev/loop5 / reiserfs noatime 0 1
6. Rebooten und von der Knoppix-CD starten. Am besten mit "knoppix 2" in rc2 booten, und auf X verzichten.
7. Loopdevice erstellen und das Passwort angeben, welches mindestens 20 Stellen haben muss:
losetup -e AES256 -T /dev/loop0 /dev/hda3
8. Filesystem crypten(dauert je nach Größe der Partition einige Stunden):
dd if=/dev/hda3 of=/dev/loop0 bs=64k conv=notrunc
9. U're done... rebooten und hoffen, dass man nach dem Passwort gefragt wird. Ein kleiner Tipp: Die Tastatur hat ein US-Layout, wenn ihr nach dem Kernelladen nach dem Passwort gefragt werdet, unter Knoppix jedoch in der Regel ein DE-Layout.
