Benutzer:ChrisGT/Festplatte verschlüsseln: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Der Seiteninhalt wurde durch einen anderen Text ersetzt: „{{inuse|ChrisGT}} <!-- Ab hier drunter den Artikel schreiben --//>“
ChrisGT (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
(42 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{inuse|ChrisGT}}
{{inuse|ChrisGT}}
<!-- Ab hier drunter den Artikel schreiben --//>
 
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:
 
[http://de.wikipedia.org/wiki/Advanced_Encryption_Standard AES]
 
[http://de.wikipedia.org/wiki/Twofish Twofish]
 
[http://de.wikipedia.org/wiki/Serpent_(Verschlüsselung) Serpent]
 
Einen Geschwindigkeitsvergleich zwischen Ext3(ohneVerschlüsselung), AES und Twofish findet Ihr unter:
 
[http://wiki.chaostreff.ch/Festplattenverschlüsselung#Geschwindigkeit wiki.chaostreff.ch]
 
oder
 
[http://www.saout.de/tikiwiki/tiki-index.php?page=UserPageChonhulio saout.de]
 
== 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 [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:

AES

Twofish

Serpent

Einen Geschwindigkeitsvergleich zwischen Ext3(ohneVerschlüsselung), AES und Twofish findet Ihr unter:

wiki.chaostreff.ch

oder

saout.de

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.

Links mit weiteren Informationen

Linux Magazin