Benutzer:ChrisGT/Festplatte verschlüsseln: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
(26 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 34: | Zeile 34: | ||
Einen Geschwindigkeitsvergleich zwischen Ext3(ohneVerschlüsselung), AES und Twofish findet Ihr unter: | Einen Geschwindigkeitsvergleich zwischen Ext3(ohneVerschlüsselung), AES und Twofish findet Ihr unter: | ||
[http://wiki.chaostreff.ch/Festplattenverschlüsselung#Geschwindigkeit | [http://wiki.chaostreff.ch/Festplattenverschlüsselung#Geschwindigkeit wiki.chaostreff.ch] | ||
oder | oder | ||
[http://www.saout.de/tikiwiki/tiki-index.php?page=UserPageChonhulio | [http://www.saout.de/tikiwiki/tiki-index.php?page=UserPageChonhulio saout.de] | ||
== Laden und partitionieren == | == Laden und partitionieren == | ||
Zeile 72: | Zeile 72: | ||
/dev/sda1 ==> /boot ca. 100 MB Der einzige Teil der auf der Platte unverschlüsselt bleibt | /dev/sda1 ==> /boot ca. 100 MB Der einzige Teil der auf der Platte unverschlüsselt bleibt | ||
/dev/sda2 ==> swap je nach Größe von Eurem Arbeitsspeicher, ich nehme da immer 1 GB, auch wenn | /dev/sda2 ==> swap je nach Größe von Eurem Arbeitsspeicher, ich nehme da immer 1 GB, auch wenn ich es gar nicht brauche | ||
/dev/sda3 ==> / 15 bis 25 GB je nach Eurem Plattenspeicher | /dev/sda3 ==> / 15 bis 25 GB je nach Eurem Plattenspeicher | ||
/dev/sda4 ==> /home den ganzen Rest | /dev/sda4 ==> /home den ganzen Rest | ||
== Crypto-Devices anlegen == | == Crypto-Devices anlegen, formatieren und mounten == | ||
Jetzt geht es ans Eingemachte. Da ich wenig Lust habe, für jede Partition, ein eigenes Passwort einzugeben, habe ich bei mir / mit einem PW gesichert, /home wird mit einem Keyfile verschlüsselt und swap wird mit einem Zufallskey bei jedem Systemstart neu angelegt. | |||
=== / === | |||
Als erstes kommt / dran. | |||
Für die Verschlüsselung mit AES: | |||
cryptsetup luksFormat /dev/sda3 --cipher aes-xts-plain --verify-passphrase --key-size 512 | |||
für Twofish | |||
cryptsetup luksFormat /dev/sda3 --cipher twofish-xts-plain --verify-passphrase --key-size 512 | |||
für Serpent | |||
cryptsetup luksFormat /dev/sda3 --cipher serpent-xts-plain --verify-passphrase --key-size 512 | |||
Die Option key-size kann auch auf 256 gesetzt werden. Hier muss sich jeder selber entscheiden, zwischen Sicherheit und Geschwindigkeit. Im Wiki [http://wiki.ubuntuusers.de/LUKS www.ubuntuusers.de] ist folgendes zu lesen: | |||
'''XTS unterstützt Verwaltungsschlüssel von 128 oder 256 Bit. 512 heißt in dem Fall, dass sowohl AES als auch XTS die maximale Schlüssellänge von 256 Bit verwenden. Um eine höhere Lese-/Schreibgeschwindigkeit zu erzielen, kann auch stattdessen 256 eingesetzt werden - das entspricht einer 128 Bit Verschlüsselung. Dies ist z.B. für Systempartitionen und langsamere Systeme empfehlenswert.''' | |||
Eine Verschlüssellung mit effektiven 128 bit ist mit den aktuellen Algorithmen AES, Twofish und Serpent immer noch sicher, so dass man hier mit gutem Gewissen auch 256 eintragen kann. Der schwächste Punkt einer verschlüsselten Festplatte ist das PW, von daher ist ein sicheres PW viel wichtiger als zusätzliche 128 bit. | |||
Das Passwort sollte sich gut gemerkt sein, sonst gibt es Probleme und man kann dieses Wiki von vorn abarbeiten, ein Widerherstellen ist nicht möglich, aber das ist ja auch Sinn der Sache. Prüft am Besten auch noch einmal Euer Passwort als Klartext und gebt es in die Kommandozeile ein. So kann sichergestellt werden, dass auch das richtige Tastaturlayout gewählt wurde und Sonderzeichen auch das sind was man haben wollte. Abgesehen davon, ist man so auf der sicheren Seite, sollte man beim Installieren von Arch das falsche Tastaturlayout auswählen, den Rechner neustarten und die PW-Abfrage ist nicht auf Deutsch. Mir hat es einmal geholfen(Tastatur war Englisch), einfach in Grub(da ist sie eh auf Englisch) auf E für Edit zu drücken und dort in der Eingabemöglichkeit einfach mal zu Testen, wo in diesem Layout die Tasten liegen(Trick 17). Aber wie gesagt: Im Normalfall passiert das nicht. | |||
Nun sollte das Crypto-Device geöffnet und gemountet werden. Dazu muss ersteinmal ein Ordner in /mnt erstellt werden, wo wir die Partition einhängen können | |||
mkdir /mnt/root | |||
und das Crypto-Device geöffnet werden | |||
cryptsetup luksOpen /dev/sda3 root | |||
Nach der Passworteingabe wird das erfolgreiche Öffnen mit "key slot 0 unlocked" bestätigt und es kann das Crypto-Device formatiert werden | |||
mke2fs -j /dev/mapper/root | |||
Wie man hier sieht, wird die Partition ganz normal gemounted, nur halt das das Mapper-Device statt des normalen Device angegeben wird. So ist es möglich, alle vom Kernel unterstützten Filesysteme zu installieren. Um zB ext4 zu nutzen wird das Mapper-Device einfach mit "mkfs.ext4 /dev/mapper/root" formatiert(ext4 wird allerdings erst ab dem Install-Image 04.2009(Kernel 2.6.29) unterstützt, welches zum jetzigen Zeitpunkt noch in der Testphase ist). | |||
Beachtet bitte, dass Ihr dann in der /etc/fstab auch den richtigen Filesystemtyp eintragt. In diesem Beispiel nehme ich für ext3 und ext2(für boot), was ihr dann durch das von Euch verwendete Filesystem ersetzen müsst. | |||
Nach dem Formatieren nun noch mounten. | |||
mount /dev/mapper/root /mnt/root | |||
=== /home === | |||
/home wird mit einem zufallsgenerierten Keyfile verschlüsselt. Dazu muss ersteinmal ein Zielordner für das Keyfile angelegt werden | |||
mkdir /mnt/root/crypto | |||
und dort ein zufallsgenerierter File angelegt | |||
dd if=/dev/random of=/mnt/root/crypto/home.key bs=1k count=2 | |||
Jetzt kann das Crypto-Device angelegt werden. Für AES | |||
cryptsetup luksFormat /dev/sda4 /mnt/root/crypto/home.key --cipher aes-xts-plain --key-size 512 | |||
für Twofish | |||
cryptsetup luksFormat /dev/sda4 /mnt/root/crypto/home.key --cipher twofish-xts-plain --key-size 512 | |||
und Serpent | |||
cryptsetup luksFormat /dev/sda4 /mnt/root/crypto/home.key --cipher serpent-xts-plain --key-size 512 | |||
Nun wieder das gleiche Spiel wie bei der letzten Partition. | |||
Öffnen: | |||
cryptsetup luksOpen /dev/sda4 home --key-file /mnt/root/crypto/home.key | |||
Formatieren: | |||
mke2fs -j /dev/mapper/home | |||
Zielordner erstellen: | |||
mkdir /mnt/root/home | |||
Und mounten: | |||
mount /dev/mapper/home /mnt/root/home | |||
=== /boot === | |||
Die kleinere Bootpartition ist die einzige Partition in unserem System die nicht verschlüsselt wird, da darin der Bootloader liegt und dieser nicht verschlüsselt werden kann. | |||
Also auch hier: formatieren, Zielordner anlegen und mounten | |||
mke2fs /dev/sda1 | |||
mkdir /mnt/root/boot | |||
mount /dev/sda1 /mnt/root/boot | |||
== Arch installieren == | |||
Ab hier kann fast der normale Installationsweg, bis auf ein paar Kleinigkeiten abgearbeitet werden. | |||
Als erstes sorgt man für eine Netzverbindung: | |||
dhcpcd eth0 | |||
und wechselt in das Verzeichniss /arch | |||
cd /arch | |||
Im Verzeichniss Arch ist das setup-Script zu finden, was ein wenig angepasst werden muss. Keine Panik, das ist nicht schwer, es muss lediglich das Zielverzeichniss angepasst werden, da ja alle partitionen nach /mnt/root gemounted wurden. | |||
Mit nano oder vi öffnet man dieses Script | |||
nano setup bzw vi setup | |||
und öndert die Zeile | |||
DESTDIR="/mnt" | |||
in | |||
DESTDIR="/mnt/root" | |||
Das wars schon und man kann das setup-Script abarbeiten, | |||
./setup | |||
wobei ein paar Dinge zu beachten sind: | |||
1. Der Punkt "Network" kann weg gelassen werden, denn der wurde mit dem dhcpcd schon erledigt | |||
2. Der Punkt "Prepare Hard Drive" kann weggelassen werden, da dies ebenfalls schon erledigt wurde. | |||
Die Punkte "Select Packages" und "install Packages" können ganz normal abgearbeitet werden. | |||
Wichtig ist jetzt wieder der nächste Punkt "Configure System", bei dem unbedingt die Frage "Do you need support for booting from encrypted volumes?" mit YES beantwortet. Sollte dort NO geantwortet werden, wird das Kernelimage nicht mit den nötigen Module konfiguriert und der Systemstart wird nicht möglich. | |||
Nach diesen Fragen hat man die Möglichkeit die Konfigurationsdateien zu bearbeiten. | |||
Als erstes die /etc/rc.conf, welche Ihr nach Euren Bedürfnissen anpasst. Üblicherweise wird gleich der Punkt LOCALE auf de_DE.utf8, die TIMEZONE zu "Europe/Berlin" und die Option KEYMAP auf de gestellt | |||
Nun ist die /etc/fstab dran, welche um die Crypto-Devices erweitert werden muss und im Falle der hier angewendeten Partitionierung wie folgt aussehen muss: | |||
/dev/sda1 /boot ext2 defaults 0 0 | |||
/dev/mapper/root / ext3 defaults 0 0 | |||
/dev/mapper/home /home ext3 defaults 0 0 | |||
/dev/mapper/swap swap swap defaults 0 0 | |||
Die anderen Punkte werden wie gewöhnlich bearbeitet und es ist darauf zu achten, auch /etc/locale.gen auf deutsch zu stellen und bitte grub nicht vergessen zu installieren. | |||
Nach Abschluss des Setup-Syripts muss noch dem System mitgeteilt werden, was mit zB /dev/mapper/root in /etc/fstab gemeint ist. | |||
Dies kann in der Datei crypttab erledigt werden | |||
nano /mnt/root/etc/crypttab | |||
In diese muss folgendes eingetragen werden: | |||
swap /dev/sda2 SWAP "-c aes-xts-plain -h whirlpool -s 512" | |||
home /dev/sda5 /crypto/home.key | |||
Für Twofish oder Serpent ist natürlich die Option hinter Swap wieder anzupassen. Einfach aes durch twofish oder serpent ersetzen. | |||
Das war es schon fast. | |||
Die Mapper-Devices existieren noch nicht, sodass man die einfach vom Installationsmedium zur neuen Festplatte kopiert | |||
cp -r /dev/mapper /mnt/root/dev/mapper | |||
Der letzte Schritt sollte eigentlich gar nicht notwendig sein, da ich aber einige Male Probleme hatte mit nicht existierenden Dateien in /dev/mapper kann dieser auch nicht schaden und so gehe ich sicher das ich nach dem Neustart auch alles da habe, wo es sein muss(3 von 5 Tests gingen bei mir ohne diese Zeile). | |||
Nun kann neu gestartet werden und das System ist zum einrichten bereit. | |||
== Sonstige Tips == | |||
=== Mit chroot den Kernel reparieren === | |||
==== Mounten ==== | |||
Es gibt ab und an mal das Problem, dass der Kernel nicht richtig geupdatet wurde oder sonst irgendwas passiert ist, warum man sein verschlüsseltes System nicht starten kann. Hier beschreibe ich kurz wie man mit der Arch-Install-CD auf sein System zugreift und mittels Pacman einen Kernel einspielt. | |||
Ich gehe davon aus man hat sich einen Kernel installiert, der nicht läuft und man möchte den alten Kern wiederherstellen. | |||
Einfacher macht man es sich, wenn erst wieder das Tastaturlayout angepasst wird | |||
km | |||
Nachdem von der CD gestartet wurde, müssen natürlich wieder die nötigen Module geladen werden: | |||
modprobe dm-crypt | |||
modprobe xts | |||
modprobe aes-i586 (oder Serpent oder Twofish) | |||
Das auf der Platte befindliche Crypto-Device root muss | |||
geöffnet | |||
cryptsetup luksOpen /dev/sda3 root | |||
und dann gemountet werden | |||
mount /dev/mapper/root /mnt | |||
Mit | |||
ls /mnt | |||
kann geprüft werden, ob auch alles da ist, wo es hin soll(leicht erkennbar an dem crypto-Ordner mit dem Key für home). | |||
Zusätzlich wird noch die /boot Partition benötigt | |||
mount /dev/sda1 /mnt/boot | |||
Auch hier sollte kurz mit | |||
ls /mnt/boot | |||
geprüft werden ob alles da ist. | |||
Zum Schluss noch einige Systemordner mounten | |||
mount -o bind /dev /mnt/dev | |||
mount -o bind /proc /mnt/proc | |||
mount -o bind /sys /mnt/sys | |||
==== Betreten und Kernel installieren ==== | |||
chroot /mnt /bin/bash | |||
und drin ist man. | |||
Jetzt kann man, nach dem die Internetverbindung mit | |||
dhcpcd eth0 | |||
hergestellt wurde, versuchen den Kernel mit | |||
pacman -Sy kernel26 | |||
erneut zu installieren. Oder man nimmt den Vorgänger, der hoffentlich noch im Cache ist. | |||
Im Normalfall findet man den alten Kern unter /var/cache/pacman/pkg und kann sich die unterschiedlichen Versionen mit | |||
ls /var/cache/pacman/pkg/kernel26* | |||
anzeigen lassen und mit | |||
pacman -U /var/cache/pacman/pkg/kernel26-VERSION-i686.pkg.tar.gz | |||
installieren. | |||
==== Verlassen und Neustarten ==== | |||
Verlassen von Chroot | |||
exit | |||
Alles mit umount freigeben | |||
umount /mnt/boot | |||
umount -l /mnt | |||
cryptsetup luksClose root | |||
und dann mit | |||
init 6 | |||
neustarten. | |||
=== Passwort ändern / hinzufügen === | |||
Es ist möglich nach einer Verschlüsselung sein Passwort zu ändern, oder auch mehrere zu benutzen(zB wenn man auf einem System mehrere Benutzer hat). Mit der Option "luksAddKey" sind so bis zu 8 PW möglich. Ganz hilfreich ist das Ganze, wenn man nach dieser Anleitung vorgegangen ist und /home per Keyfile verschlüsselt hat. Sollte einmal etwas schief gehen und der Keyfile in /crypto(auf sda3 also root) beschädigt werden, kann man /home immer noch mit einem PW mounten(wenn man denn zusätzlich ein PW vergeben hat). Andersherum kann natürlich auch ein Slot mal fehlerhaft sein und es kann dadurch einfach ein anderer zum entschlüsseln genutzt werden. | |||
Die PW/Passwortfiles sind in sogenannten "Slots" untergebracht und mit | |||
cryptsetup luksAddKey /dev/sda3 | |||
wird ein neuer Slot auf /dev/sda3 erstellt. Nach eingabe des Befehls, fragt cryptsetup das aktuelle PW ab und danach kann man sein neues PW eingeben. Sollte ein Keyfile verwendet werden, wie hier im Wiki auf /dev/sda4, würde das so aussehen | |||
cryptsetup luksAddKey /dev/sda4 --key-file=/crypto/home.key | |||
Wie man sieht muss man lediglich mit --key-file mitteilen wo der Key liegt. | |||
Um zu Prüfen welcher und wieviele Slots belegt sind, ist luksDump sehr hilfreich | |||
cryptsetup luksDump /dev/sda3 | |||
Die Slots können mit | |||
cryptsetup luksDelKey /dev/sda3 1 | |||
gelöscht werden. Die letzte Zahl ist unser Passwortslot. Man sollte unbedingt darauf achten, mindestens einen Slot besetzt zu lassen. Kein PW ==> keine Entschlüsselung der Platte möglich. | |||
Sollte man ein neues PW erstellen wollen, sollte man einfach ein PW in Slot 1 erstellen und anschließend Slot 0 entfernen. | |||
=== Links mit weiteren Informationen === | |||
[http://www.linux-magazin.de/Heft-Abo/Ausgaben/2005/08/Geheime-Niederschrift Linux Magazin] |
Aktuelle Version vom 20. Mai 2009, 21:14 Uhr
„ChrisGT/Festplatte verschlüsseln“ wurde von ChrisGT als in Bearbeitung markiert. Um Bearbeitungskonflikte zu vermeiden, kontaktiere ChrisGT bitte, bevor du den Artikel bearbeitest.
In vielen Bereichen ist es wichtig sicherzustellen, dass sensible oder private Daten nicht in falsche Hände geraten. Gerade Laptops wechseln schnell unfreiwillig den Besitzer und oft ist der Verlust der Daten deutlich schlimmer als der Materialverlust. Das Verschlüsseln von Festplatten bietet einen guten Schutz, falls der Rechner im ausgeschalteten Zustand gestohlen worden ist(im laufenden Zustand kann natürlich ganz normal darauf zugegriffen werden und es sind andere Sicherungsmaßnahmen notwendig). Ein weiterer Vorteil ist die Entsorgung von Festplatten. Bei vollverschlüsselten Festplatten, können diese bedenkenlos entsorgt bzw. verkauft werden, ohne sich stundenlang mit dem sicheren Löschen der Daten beschäftigen zu müssen. Zielgruppen sind also nicht nur Staatsfeinde und Terrorverdächtige, sondern auch ganz normale Privatpersonen, denen die eigene Privatsphäre am Herzen liegt oder verschiedene Berufsgruppen, bei denen die Vertraulichkeit der Daten wichtig ist(zB Anwälte)
Welche Möglichkeiten bietet Arch
Unter Linux bietet uns dm-crypt die Möglichkeit im Zusammenhang mit verschiedenen Algorithmen die Festplatten zu verschlüsseln, was leider (im Gegensatz zu Windows mit Truecrypt ab V5 oder PGP Pro) vor der Installation geschehen sollte, da dies nachträglich um einiges schwieriger zu handhaben ist.
Nach dem Start der Installations CD, sollte man ersteinmal das Tastaturlayout auf Deutsch stellen(wichtig wegen der Passwortabfrage, da hier das richtige Installscript genutzt wird und somit beim Systemstart das Layout schon auf Deutsch ist, im Gegensatz zum alten Wiki).
Mit
km
ist das relativ schnell gemacht, die quertz Tastatur in Deutsch findet ihr weiter unten(i386/quertz/de-latin1-nodeadkeys.map.gz) und der Konsolefont sollte der Default-Eintrag(default8x16.psfu.gz) sein.
Nun kann man sich anschauen, welche Möglichkeiten Arch bietet, sein System zu verschlüsseln:
cd /lib/modules/$(uname -r)/kernel/crypto ls
Wichtig ist hier vorallem das Modul xts und das jeweilige Modul des Algorithmus den man nutzen möchten. Empfehlenswert sind hier AES(wird meist verwendet), Twofish und Serpent.
Ich werde im folgenden versuchen auf alle 3 einzugehen.
Weiter Informationen zu den verschiedenen Algorithmen liefert Wikipedia:
Einen Geschwindigkeitsvergleich zwischen Ext3(ohneVerschlüsselung), AES und Twofish findet Ihr unter:
oder
Laden und partitionieren
Laden der Module
Als erstes müssen die Kernelmodule aktiviert werden:
modprobe dm-crypt modprobe xts modprobe aes-i586 oder aes-x86-64 für ein 64bit-Arch-System
Solltet Ihr Twofisch oder Serpent statt aes nehmen, dann einfach
modprobe twofish oder modprobe serpent
Partitionieren
Spätestens an dieser Stelle sollte man sich Überlegen wie das Partitionslayout aussehen sollte und welchen Verschlüsselungsalgorithmus man wählt, da nach der Installation das Verändern/Verschieben der Partitionen nur sehr umständlich möglich ist und man so einiges an Erfahrung braucht. Je nach Vorliebe, also
fdisk /dev/sda (Ich gehe davon aus, dass auf die erste Festplatte installiert wird, wenn nicht muss hier angepasst werden)
oder
cfdisk /dev/sda (die doch etwas komfortablere Möglichkeit)
Meine Partitionslayout sieht folgendermaßen aus:
/dev/sda1 ==> /boot ca. 100 MB Der einzige Teil der auf der Platte unverschlüsselt bleibt /dev/sda2 ==> swap je nach Größe von Eurem Arbeitsspeicher, ich nehme da immer 1 GB, auch wenn ich es gar nicht brauche /dev/sda3 ==> / 15 bis 25 GB je nach Eurem Plattenspeicher /dev/sda4 ==> /home den ganzen Rest
Crypto-Devices anlegen, formatieren und mounten
Jetzt geht es ans Eingemachte. Da ich wenig Lust habe, für jede Partition, ein eigenes Passwort einzugeben, habe ich bei mir / mit einem PW gesichert, /home wird mit einem Keyfile verschlüsselt und swap wird mit einem Zufallskey bei jedem Systemstart neu angelegt.
/
Als erstes kommt / dran. Für die Verschlüsselung mit AES:
cryptsetup luksFormat /dev/sda3 --cipher aes-xts-plain --verify-passphrase --key-size 512
für Twofish
cryptsetup luksFormat /dev/sda3 --cipher twofish-xts-plain --verify-passphrase --key-size 512
für Serpent
cryptsetup luksFormat /dev/sda3 --cipher serpent-xts-plain --verify-passphrase --key-size 512
Die Option key-size kann auch auf 256 gesetzt werden. Hier muss sich jeder selber entscheiden, zwischen Sicherheit und Geschwindigkeit. Im Wiki www.ubuntuusers.de ist folgendes zu lesen:
XTS unterstützt Verwaltungsschlüssel von 128 oder 256 Bit. 512 heißt in dem Fall, dass sowohl AES als auch XTS die maximale Schlüssellänge von 256 Bit verwenden. Um eine höhere Lese-/Schreibgeschwindigkeit zu erzielen, kann auch stattdessen 256 eingesetzt werden - das entspricht einer 128 Bit Verschlüsselung. Dies ist z.B. für Systempartitionen und langsamere Systeme empfehlenswert.
Eine Verschlüssellung mit effektiven 128 bit ist mit den aktuellen Algorithmen AES, Twofish und Serpent immer noch sicher, so dass man hier mit gutem Gewissen auch 256 eintragen kann. Der schwächste Punkt einer verschlüsselten Festplatte ist das PW, von daher ist ein sicheres PW viel wichtiger als zusätzliche 128 bit.
Das Passwort sollte sich gut gemerkt sein, sonst gibt es Probleme und man kann dieses Wiki von vorn abarbeiten, ein Widerherstellen ist nicht möglich, aber das ist ja auch Sinn der Sache. Prüft am Besten auch noch einmal Euer Passwort als Klartext und gebt es in die Kommandozeile ein. So kann sichergestellt werden, dass auch das richtige Tastaturlayout gewählt wurde und Sonderzeichen auch das sind was man haben wollte. Abgesehen davon, ist man so auf der sicheren Seite, sollte man beim Installieren von Arch das falsche Tastaturlayout auswählen, den Rechner neustarten und die PW-Abfrage ist nicht auf Deutsch. Mir hat es einmal geholfen(Tastatur war Englisch), einfach in Grub(da ist sie eh auf Englisch) auf E für Edit zu drücken und dort in der Eingabemöglichkeit einfach mal zu Testen, wo in diesem Layout die Tasten liegen(Trick 17). Aber wie gesagt: Im Normalfall passiert das nicht.
Nun sollte das Crypto-Device geöffnet und gemountet werden. Dazu muss ersteinmal ein Ordner in /mnt erstellt werden, wo wir die Partition einhängen können
mkdir /mnt/root
und das Crypto-Device geöffnet werden
cryptsetup luksOpen /dev/sda3 root
Nach der Passworteingabe wird das erfolgreiche Öffnen mit "key slot 0 unlocked" bestätigt und es kann das Crypto-Device formatiert werden
mke2fs -j /dev/mapper/root
Wie man hier sieht, wird die Partition ganz normal gemounted, nur halt das das Mapper-Device statt des normalen Device angegeben wird. So ist es möglich, alle vom Kernel unterstützten Filesysteme zu installieren. Um zB ext4 zu nutzen wird das Mapper-Device einfach mit "mkfs.ext4 /dev/mapper/root" formatiert(ext4 wird allerdings erst ab dem Install-Image 04.2009(Kernel 2.6.29) unterstützt, welches zum jetzigen Zeitpunkt noch in der Testphase ist). Beachtet bitte, dass Ihr dann in der /etc/fstab auch den richtigen Filesystemtyp eintragt. In diesem Beispiel nehme ich für ext3 und ext2(für boot), was ihr dann durch das von Euch verwendete Filesystem ersetzen müsst.
Nach dem Formatieren nun noch mounten.
mount /dev/mapper/root /mnt/root
/home
/home wird mit einem zufallsgenerierten Keyfile verschlüsselt. Dazu muss ersteinmal ein Zielordner für das Keyfile angelegt werden
mkdir /mnt/root/crypto
und dort ein zufallsgenerierter File angelegt
dd if=/dev/random of=/mnt/root/crypto/home.key bs=1k count=2
Jetzt kann das Crypto-Device angelegt werden. Für AES
cryptsetup luksFormat /dev/sda4 /mnt/root/crypto/home.key --cipher aes-xts-plain --key-size 512
für Twofish
cryptsetup luksFormat /dev/sda4 /mnt/root/crypto/home.key --cipher twofish-xts-plain --key-size 512
und Serpent
cryptsetup luksFormat /dev/sda4 /mnt/root/crypto/home.key --cipher serpent-xts-plain --key-size 512
Nun wieder das gleiche Spiel wie bei der letzten Partition.
Öffnen:
cryptsetup luksOpen /dev/sda4 home --key-file /mnt/root/crypto/home.key
Formatieren:
mke2fs -j /dev/mapper/home
Zielordner erstellen:
mkdir /mnt/root/home
Und mounten:
mount /dev/mapper/home /mnt/root/home
/boot
Die kleinere Bootpartition ist die einzige Partition in unserem System die nicht verschlüsselt wird, da darin der Bootloader liegt und dieser nicht verschlüsselt werden kann.
Also auch hier: formatieren, Zielordner anlegen und mounten
mke2fs /dev/sda1 mkdir /mnt/root/boot mount /dev/sda1 /mnt/root/boot
Arch installieren
Ab hier kann fast der normale Installationsweg, bis auf ein paar Kleinigkeiten abgearbeitet werden.
Als erstes sorgt man für eine Netzverbindung:
dhcpcd eth0
und wechselt in das Verzeichniss /arch
cd /arch
Im Verzeichniss Arch ist das setup-Script zu finden, was ein wenig angepasst werden muss. Keine Panik, das ist nicht schwer, es muss lediglich das Zielverzeichniss angepasst werden, da ja alle partitionen nach /mnt/root gemounted wurden. Mit nano oder vi öffnet man dieses Script
nano setup bzw vi setup
und öndert die Zeile
DESTDIR="/mnt"
in
DESTDIR="/mnt/root"
Das wars schon und man kann das setup-Script abarbeiten,
./setup
wobei ein paar Dinge zu beachten sind:
1. Der Punkt "Network" kann weg gelassen werden, denn der wurde mit dem dhcpcd schon erledigt
2. Der Punkt "Prepare Hard Drive" kann weggelassen werden, da dies ebenfalls schon erledigt wurde.
Die Punkte "Select Packages" und "install Packages" können ganz normal abgearbeitet werden.
Wichtig ist jetzt wieder der nächste Punkt "Configure System", bei dem unbedingt die Frage "Do you need support for booting from encrypted volumes?" mit YES beantwortet. Sollte dort NO geantwortet werden, wird das Kernelimage nicht mit den nötigen Module konfiguriert und der Systemstart wird nicht möglich.
Nach diesen Fragen hat man die Möglichkeit die Konfigurationsdateien zu bearbeiten.
Als erstes die /etc/rc.conf, welche Ihr nach Euren Bedürfnissen anpasst. Üblicherweise wird gleich der Punkt LOCALE auf de_DE.utf8, die TIMEZONE zu "Europe/Berlin" und die Option KEYMAP auf de gestellt
Nun ist die /etc/fstab dran, welche um die Crypto-Devices erweitert werden muss und im Falle der hier angewendeten Partitionierung wie folgt aussehen muss:
/dev/sda1 /boot ext2 defaults 0 0 /dev/mapper/root / ext3 defaults 0 0 /dev/mapper/home /home ext3 defaults 0 0 /dev/mapper/swap swap swap defaults 0 0
Die anderen Punkte werden wie gewöhnlich bearbeitet und es ist darauf zu achten, auch /etc/locale.gen auf deutsch zu stellen und bitte grub nicht vergessen zu installieren.
Nach Abschluss des Setup-Syripts muss noch dem System mitgeteilt werden, was mit zB /dev/mapper/root in /etc/fstab gemeint ist. Dies kann in der Datei crypttab erledigt werden
nano /mnt/root/etc/crypttab
In diese muss folgendes eingetragen werden:
swap /dev/sda2 SWAP "-c aes-xts-plain -h whirlpool -s 512" home /dev/sda5 /crypto/home.key
Für Twofish oder Serpent ist natürlich die Option hinter Swap wieder anzupassen. Einfach aes durch twofish oder serpent ersetzen.
Das war es schon fast.
Die Mapper-Devices existieren noch nicht, sodass man die einfach vom Installationsmedium zur neuen Festplatte kopiert
cp -r /dev/mapper /mnt/root/dev/mapper
Der letzte Schritt sollte eigentlich gar nicht notwendig sein, da ich aber einige Male Probleme hatte mit nicht existierenden Dateien in /dev/mapper kann dieser auch nicht schaden und so gehe ich sicher das ich nach dem Neustart auch alles da habe, wo es sein muss(3 von 5 Tests gingen bei mir ohne diese Zeile).
Nun kann neu gestartet werden und das System ist zum einrichten bereit.
Sonstige Tips
Mit chroot den Kernel reparieren
Mounten
Es gibt ab und an mal das Problem, dass der Kernel nicht richtig geupdatet wurde oder sonst irgendwas passiert ist, warum man sein verschlüsseltes System nicht starten kann. Hier beschreibe ich kurz wie man mit der Arch-Install-CD auf sein System zugreift und mittels Pacman einen Kernel einspielt. Ich gehe davon aus man hat sich einen Kernel installiert, der nicht läuft und man möchte den alten Kern wiederherstellen. Einfacher macht man es sich, wenn erst wieder das Tastaturlayout angepasst wird
km
Nachdem von der CD gestartet wurde, müssen natürlich wieder die nötigen Module geladen werden:
modprobe dm-crypt modprobe xts modprobe aes-i586 (oder Serpent oder Twofish)
Das auf der Platte befindliche Crypto-Device root muss geöffnet
cryptsetup luksOpen /dev/sda3 root
und dann gemountet werden
mount /dev/mapper/root /mnt
Mit
ls /mnt
kann geprüft werden, ob auch alles da ist, wo es hin soll(leicht erkennbar an dem crypto-Ordner mit dem Key für home).
Zusätzlich wird noch die /boot Partition benötigt
mount /dev/sda1 /mnt/boot
Auch hier sollte kurz mit
ls /mnt/boot
geprüft werden ob alles da ist.
Zum Schluss noch einige Systemordner mounten
mount -o bind /dev /mnt/dev mount -o bind /proc /mnt/proc mount -o bind /sys /mnt/sys
Betreten und Kernel installieren
chroot /mnt /bin/bash
und drin ist man.
Jetzt kann man, nach dem die Internetverbindung mit
dhcpcd eth0
hergestellt wurde, versuchen den Kernel mit
pacman -Sy kernel26
erneut zu installieren. Oder man nimmt den Vorgänger, der hoffentlich noch im Cache ist.
Im Normalfall findet man den alten Kern unter /var/cache/pacman/pkg und kann sich die unterschiedlichen Versionen mit
ls /var/cache/pacman/pkg/kernel26*
anzeigen lassen und mit
pacman -U /var/cache/pacman/pkg/kernel26-VERSION-i686.pkg.tar.gz
installieren.
Verlassen und Neustarten
Verlassen von Chroot
exit
Alles mit umount freigeben
umount /mnt/boot umount -l /mnt cryptsetup luksClose root
und dann mit
init 6
neustarten.
Passwort ändern / hinzufügen
Es ist möglich nach einer Verschlüsselung sein Passwort zu ändern, oder auch mehrere zu benutzen(zB wenn man auf einem System mehrere Benutzer hat). Mit der Option "luksAddKey" sind so bis zu 8 PW möglich. Ganz hilfreich ist das Ganze, wenn man nach dieser Anleitung vorgegangen ist und /home per Keyfile verschlüsselt hat. Sollte einmal etwas schief gehen und der Keyfile in /crypto(auf sda3 also root) beschädigt werden, kann man /home immer noch mit einem PW mounten(wenn man denn zusätzlich ein PW vergeben hat). Andersherum kann natürlich auch ein Slot mal fehlerhaft sein und es kann dadurch einfach ein anderer zum entschlüsseln genutzt werden.
Die PW/Passwortfiles sind in sogenannten "Slots" untergebracht und mit
cryptsetup luksAddKey /dev/sda3
wird ein neuer Slot auf /dev/sda3 erstellt. Nach eingabe des Befehls, fragt cryptsetup das aktuelle PW ab und danach kann man sein neues PW eingeben. Sollte ein Keyfile verwendet werden, wie hier im Wiki auf /dev/sda4, würde das so aussehen
cryptsetup luksAddKey /dev/sda4 --key-file=/crypto/home.key
Wie man sieht muss man lediglich mit --key-file mitteilen wo der Key liegt.
Um zu Prüfen welcher und wieviele Slots belegt sind, ist luksDump sehr hilfreich
cryptsetup luksDump /dev/sda3
Die Slots können mit
cryptsetup luksDelKey /dev/sda3 1
gelöscht werden. Die letzte Zahl ist unser Passwortslot. Man sollte unbedingt darauf achten, mindestens einen Slot besetzt zu lassen. Kein PW ==> keine Entschlüsselung der Platte möglich.
Sollte man ein neues PW erstellen wollen, sollte man einfach ein PW in Slot 1 erstellen und anschließend Slot 0 entfernen.