Installation auf einer verschlüsselten Festplatte

Aus Siduction Wiki DE
Wechseln zu: Navigation, Suche

Einleitung

(Vollverschlüssung des Systems nach Art des Hauses)

Datensicherheit ist nicht nur für Laptop-Benutzer relevant, es sollte der Standard bei der Installation sein (meine Meinung). Jeder hat irgendwelche wichtigen Daten auf dem Rechner, vielleicht Passwörter, geheime Dokumente, Bilder, E-Mails o.ä.. Sollte der Computer gestohlen werden oder auch von der Exekutive beschlagnahmt werden, wäre alles frei zugänglich. Durch eine Vollverschlüsselung der Festplatte soll dies verhindert werden - ohne das Passwort kann auf die Daten nicht zugegriffen werden. Die beschriebene Methode verschlüsselt auch die Auslagerungspartition, d.h. der Rechner kann auch sicher in den Ruhemodus (hibernate) geschickt werden.

Der Debian-Installer, der auch von Ubuntu etc. verwendet wird, bietet diese Möglichkeit bereits. Es wird nur eine kleine, nicht verschlüsselte /boot Partition angelegt, alles andere (/, /home ...) landen im verschlüsselten LUKS-Bereich. Der Debian-Installer findet bei siduction keine Verwendung, so dass auf mit LiveCD einige vorbereitende Schritte notwendig sind.

Dieser Artikel beschreibt die Installation von siduction auf eine leere Festplatte: Es sollten also keine Daten enthalten, die noch gebraucht werden.

Hinweis.png ALLES WIRD GELÖSCHT! AUCH MULTIBOOT-UMGEBUNGEN KÖNNEN ZERSTÖRT WERDEN! ES SOLLTE SICH NICHTS VON BEDEUTUNG MEHR AUF DER FESTPLATTE BEFINDEN!

Nach Abschluss der Installation sieht es ungefähr so aus:

**Partition** 	**Mountpoint** 	**Comment**
/dev/sda1 	/boot 	unverschlüsselte boot-Partition
/dev/sda2 		verschlüsselte LUKS-Partition

Grundlegende Kenntnisse zu GNU/Linux bzw. siduction werden vorausgesetzt. U.U. muss dieser Artikel an spezielle Hardware-Zusammenstellungen angepasst werden. (Für Fragen etc. gibt es auch eine entsprechende Diskussion im Forum.)

Die automatische Einbindung weiterer verschlüsselter Partitionen außerhalb der LVM-Konstruktion ist in einem seperaten Wiki-Beitrag beschrieben.

Vorbereitung

Starte die siduction-LiveCD und öffne eine root-Konsole.

Zuerst wird sichergestellt, das auf der Festplatte nichts sinnvolles mehr vorhanden ist. Dafür wird die gesamte Festplatte mit Zufallsdaten überschrieben. Abhängig von Festplattengröße und Rechenleistung kann das SEHR lange dauern (z.Bsp. 5 Stunden für 60GB!)

Hinweis.png ACHTUNG: NACH DIESEM SCHRITT IST ALLES AUF DER PLATTE UNWIDERRUFLICH VERLOREN!
root@siduction:/home/siduction# dd if=/dev/urandom of=/dev/sda bs=10MB

Um den Fortschritt zu beobachten wird eine andere root-Konsole geöffnet:

root@siduction:/home/siduction# pkill -USR1 ^dd$

Danach werden 2 Partitionen erstellt:

root@siduction:/home/siduction# fdisk /dev/sda

Command (m for help): n

p

Partition number (1-4): 1
First cylinder (1-7296, default 1): [Enter]
Last cylinder or +size or +sizeM or +sizeK (1-7296, default 7296): +256M

Command (m for help): a
Partition number (1-4): 1

Command (m for help): n

p

Partition number (1-4): 2
First cylinder (33-7296, default 33): [Enter]
Last cylinder or +size or +sizeM or +sizeK (33-7296, default 7296): [Enter]

Command (m for help): p

Disk /dev/sda: 60.0 GB, 60011642880 bytes
255 heads, 63 sectors/track, 7296 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x65da6411

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          32      257008+  83  Linux
/dev/sda2              33        7296    58348080   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Die /boot Partition wird nun formatiert und optimiert (die manpage zu ext3 und tune2fs erläutert dies weiterführend):

root@siduction:~# mkfs.ext3 -L boot /dev/sda1
root@siduction:~# tune2fs -c0 -i0 -o journal_data /dev/sda1

Nun wird der verschlüsselte Container auf der 2. Partition angelegt und als sda2_crypt geöffnet. Dabei wird der Geräteknoten /dev/mapper/sda2_crypt erstellt:

root@siduction:~# cryptsetup luksFormat -y --cipher aes-xts-plain --key-size 512 /dev/sda2
root@siduction:~# cryptsetup luksOpen /dev/sda2 sda2_crypt

Anmerkung:

Hinweis.png Das Passwort sollte weise gewählt werden, bei Verlust ist alles VERLOREN!. Das Passwort sollte hinreichend lang sein (16+ Stellen) und möglichst den gesamten Zeichensatz ausschöpfen (Buchstaben, Zahlen, Sonderzeichen).

Eine mit LUKS verschlüsselte Partition bietet Platz für 8 Passwörter bzw. Schlüssel, d.h. es können unterschiedliche Passwörter verwendet oder später ausgetauscht werden. (Dabei ist es SEHR wichtig, erst ein neues Passwort einzufügen und erst DANACH das alte zu löschen, andernfalls werden die Daten UNWIDERRUFLICH gelöscht! Näheres findet sich in der manpage zu cryptsetup.)

Zusätzlich: Es wird nicht empfohlen, Partitionen über 1TB mit dem aes-xts-plain Algorithmus zu verschlüsseln, da die Sicherheit abnimmt.

Nun wird das LVM innerhalb der verschlüsselten Partition erzeugt:

root@siduction:~# pvcreate /dev/mapper/sda2_crypt
root@siduction:~# vgcreate cryptVG /dev/mapper/sda2_crypt
root@siduction:~# lvcreate -n swap -L 3G cryptVG
root@siduction:~# lvcreate -n root -l 100%FREE cryptVG

Dies erzeugt eine Auslagerungspartition von 3GB(/dev/cryptVG/swap), der restliche Platz wird / zugewiesen.(/dev/cryptVG/root). Für den Ruhezustand sollte die Größe der Auslagerungspartition etwas größer als der RAM sein (2 GB RAM -> 3 GB swap). Es gibt einige gute Gründe, zusätzliche Partitionen für /home, /var etc einzurichten, dies ist aber in diesem Artikel nicht getestet wurden.

Bevor siduction schließlich installiert wird, müssen die Dateisysteme erstellt werden:

root@siduction:~# mkswap -L swap /dev/cryptVG/swap
root@siduction:~# mkfs.ext3 -L root /dev/cryptVG/root
root@siduction:~# tune2fs -c0 -i0 -o journal_data /dev/cryptVG/root

Installation

Nun wird der siduction-Installer gestartet: Im 2. Tab (Partitionierung) sieht man die vorgenommenen Veränderungen:

Es muss lediglich der Haken vor "formatiere mit ext3" entfernt und für /boot der Einhängepunkt /dev/sda1 angegeben werden. Danach sieht der Tab "Partitionierung so aus:

Install-gui cryptVG.png

Nach den übrigen Einstellungen wird siduction dann installiert.

Sollte der Installer die verschlüsselten Partitionen nicht erkennen hilft möglicherweise der Start von 'gparted' bzw. die mountpoints müssen entweder per Hand in /root/.sidconfig eingefügt werden oder einfach den Installer neu installieren.

apt-get update && apt-get install --reinstall install-gui

Nach der Installation

Nun werden die Partitionen eingehängt:

root@siduction:~# mkdir /media/siduction
root@siduction:~# mount /dev/cryptVG/root /media/siduction
root@siduction:~# mkdir /media/siduction/boot
root@siduction:~# mount /dev/sda1 /media/siduction/boot

Es müssen nun noch einige Einstellungen vorgenommen werden, damit das System die verschlüsselten Partitionen erkennt.

Hinweis:
Die UUID für die Partitionen befinden sich im Verzeichnis /dev/disk/by-uuid. Der Befehl 'ls -al /dev/disk/by-uuid' listet diese übersichtlich auf. Dafür wird die Datei /media/siduction/etc/crypttab wie folgt angepasst:

 # <target name> <source device>         <key file>      <options>
 # /dev/mapper/sda2_crypt = /dev/dm-0
 sda2_crypt /dev/disk/by-uuid/[UUID of your /dev/sda2] none luks

Anmerkung:
Es ist nicht möglich, die Installation ohne diese Datei zu starten. Dazu wird initrd-image angepasst. (Bei Debian oder Ubuntu ist diese Datei erstaunlicherweise nicht vorhanden. Wenn jemand mehr dazu weiß, wird um einen Beitrag im Forum gebeten.

Nun wird das initrd-image neu erstellt:

root@siduction:~# chroot /media/siduction
root@siduction:/# mount -t proc proc /proc
root@siduction:/# mount -t sysfs sysfs /sys
root@siduction:/# update-initramfs -u -k all
root@siduction:/# umount proc
root@siduction:/# umount sys
root@siduction:/# exit

Einige Aufräumarbeiten vor dem reboot (ist das notwendig?):

root@siduction:~# umount /media/siduction/boot
root@siduction:~# umount /media/siduction

Geschafft! Nun wird durch Reboot das System getestet.


Achtung:

Hinweis.png Eventuell ist das Tastaturlayout auf 'qwerty' (US Standard) eingestellt. Dadurch wird eventuell das Passwort falsch eingeben: "cryptsetup failed, bad password or option?". Auf dieser Abbildung[1] die Tasten für das Password zusammensuchen und dann nochmal probieren.


zusätzliche Vorsichtsmaßnahmen

  • BIOS: Passwort benutzen, booten nur von Boot-Festplatte zulassen
  • GRUB: Passwort benutzen.
  • CRYPTSETUP: Passwort in gewissen Abständen ändern(man cryptsetup).

Zur Erinnerung: Jeder mit physischem Zugriff auf die Festplatte kann Veränderungen an der /boot Partition vornehmen (z.Bsp. einen keylogger installieren). Hinweis: Dies kann durch Installation von /boot auf USB-Stick verhindert werden...

Fehlerbehandlung

Die Installation wird als getestet und gut betrachtet. Sollte es trotzdem zu Fehlern kommen, muss nur von LiveCD gestartet werden und eine root-Konsole geöffnet werden. Danach kann man anhand der folgenden Befehle die Probleme beheben:

root@siduction:~# mkdir /media/siduction
root@siduction:~# cryptsetup luksOpen /dev/sda2 sda2_crypt
root@siduction:~# pvscan
root@siduction:~# lvscan
root@siduction:~# lvchange -ay /dev/cryptVG/root
root@siduction:~# mount /dev/cryptVG/root /media/siduction
root@siduction:~# mount /dev/sda1 /media/siduction/boot

Jetzt hat man wieder Vollzugriff auf die Installation und kann Backups durchführen bzw. initrd-image mit chroot /media/siduction neu generieren.

<root> nicht ermittelbar

bei meiner x86 Installation wurden die /etc/fstab alle tadellos angepasst.

Ersetze [UUID of your /dev/!sda2] mit der UUID von /dev/!sda2. Die Datei /media/siduction/etc/fstab sollte so aussehen:

 # <filesystem>                            <mount point>       <fstype>    <mount options>                               <dump> <pass>
 
 # /dev/cryptVG/root = /dev/mapper/cryptVG-root = /dev/dm-2
UUID=[UUID of your /dev/dm-2]             /                   ext3        defaults,errors=remount-ro,noatime,user_xattr 0      1
 
 # /dev/sda1
 UUID=[UUID of your /dev/sda1]             /boot               ext3        noatime                                       0      2
 
 # /dev/cryptVG/swap = /dev/mapper/cryptVG-swap = /dev/dm-1
UUID=[UUID of your /dev/dm-1]             none                swap        sw                                            0      0
 
 /dev/cdrom                                /media/cdrom        auto        noauto,rw,user,exec,utf8                      0      0

Wieder werden die [UUID of your ...] mit den UUIDs der tatsächlichen Geräte ausgetauscht.


module fehlen

Bei x86 System werden automatisch die richtigen module rausgesucht, deswegen muss diese Datei nicht mehr angepasst werden.

Die Datei /media/siduction/etc/initramfs-tools/modules wird wie folgt angepasst:

xts
gf128
sha256
# for 32bit:
aes-i586
#for x86_64 (cant test that!):
aes-x86_64


Anmerkung: Wer Lust hat, mag testen, ob tatsächlich noch Module notwendig sind.

Edit: Getestet mit 32bit - hier werden keine module mehr benötigt.


Große Teile dieses Artikels wurden schamlos von capone gestohlen Full disc encryption for your laptop with luks + using LVM2 (during installation). Seinen Artikel habe ich als Vorlage genommen, er ist aber nicht ganz "Debian"... Die einzige Art, eine vollverschlüsselte Installation durchzuführen ist: "the Debian way".