ubuntuusers.de

Schlüsselableitung

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Hinweis:

Ohne ein sicheres Kennwort nutzt die stärkste Verschlüsselung nicht! Wie man Passwörter am besten wählt, steht hier: Sicherheits 1x1

Mit dieser Anleitung wird Ubuntu bis auf die Boot-Partition, die nur den Kernel und Bootloader enthält, in verschlüsselten Partitionen installiert. Es wird die LUKS-Schlüsselableitung eingesetzt, da mit dieser beim Start nur eine Passworteingabe nötig ist und der Ruhezustand (S4) noch funktioniert.

Sollte mehr als eine Partition für Ubuntu verwendet werden (z.B. eine separate Home-Partition), ein zusätzliches Betriebssystem auf der Festplatte bereits installiert sein oder nachträglich installiert werden, ist die Variante auf Basis von LVM, die unter System verschlüsseln ausführlich beschrieben wird, vorzuziehen. Mit dieser ist es auch im Gegenteil zu der hier beschriebenen möglich, nachträglich die internen Partitionsgröße zu verändern oder weitere hinzuzufügen oder zu löschen.

Das hier erörterte Verfahren ist unflexibler, funktioniert aber ohne LVM.

Vorbereitungen

Wenn sich auf dem Computer schon ein Betriebssystem (wie beispielsweise Windows, Mac OS oder ein anderes Linux-System) oder wichtige Daten befinden, sollte von den wichtigen Daten unbedingt eine Sicherung erstellt werden. Wie bei jeder Veränderung am Computer kann immer auch etwas schiefgehen.

Zur Installation wird die normale Desktop-CD benötigt. Diese einfach booten [1]. Nachdem das Live-System geladen wurde, jedoch nicht das Installationsprogramm ausführen. Es wird zwingend eine funktionierende Internetverbindung [2] benötigt, da Programme nachinstalliert werden müssen.

Hinweis:

Alle folgenden Befehle benötigen Root-Rechte. Man sollte also mit sudo -s Root-Status erlangen!

Software und Kernelmodule laden (bis Jaunty)

Die Desktop-CD bis einschließlich Jaunty unterstützt von Haus aus kein LUKS, dies wird aber durch die Installation des folgenden Paketes [3] korrigiert:

  • cryptsetup

Dann werden in einem Terminal [4] durch Eingabe von

modprobe dm-crypt 

die benötigten Kernelmodule geladen.

Partitionierung

Achtung!

Änderungen an Partitionen können nicht mehr rückgängig gemacht werden!

Hinweis:

/dev/sdX1, /dev/sdX2 bzw. /dev/sdX3 müssen im folgenden immer durch die tatsächlichen Bezeichnung der Partitionen ersetzt werden!

Außerdem ist zu beachten, dass ohne eine erweiterte Partition nicht mehr als eine zusätzliche neben den dreien von Ubuntu vorhanden sein können.

Es werden mindestens drei Partitionen benötigt [5]:

  • /dev/sdX1 (ext4)

    • Boot-Partition (unverschlüsselt)

    • Größe: mindestens 200 MB (mehr ist im Regelfall aber nicht nötig)

  • /dev/sdX2 (unformatiert)

    • verschlüsselte Swap-Partition

    • Größe: ca. 1,3fache des RAMs (bei weniger als 512 MB Arbeitsspeicher das 2fache)

  • /dev/sdX3 (unformatiert)

    • verschlüsselte Root-Partition

    • Größe: üblicherweise der verfügbare Rest, aber mindestens 8 GB

Hinweis:

Tipp: Die Boot-Partition (unverschlüsselt) wird so groß erstellt (z.B. 5 GB), dass ein ISO-Image der gewünschten Ubuntu Distribution (gleiche Architektur!) großzügig drauf Platz findet. Dann wird wie hier beschrieben das ISO-Image in grub2 eingebunden. Falls man nun irgendwann Probleme mit dem Vollverschlüsselten System hat, kann man beim Booten in grub2 stattdessen das ISO Live System starten und damit Diagnose und Reparaturen des Vollverschlüsselten System ausführen.

Verschlüsselung der Partitionen

Achtung!

Es ist aus Sicherheitsgründen empfehlenswert, die Partitionen einmal mit Zufallszahlen zu überschreiben, vor allen Dingen, wenn vorher auf diesen unverschlüsselte Daten gespeichert waren. [6] Ansonsten sind unter Umständen viele Dateien nach dem Verschlüsseln noch auslesbar.

Daraufhin wird die root Partitionen verschlüsselt und mit den Namen root geöffnet [7].

Experten-Info:

Sollte eine niedrigere Schlüssellänge oder ein anderer Verschlüsselungsalgorithmus bevorzugt werden, müssten die Befehle entsprechend angepasst werden[7].

cryptsetup -c aes-xts-plain64 -s 512 luksFormat /dev/sdX3
cryptsetup luksOpen /dev/sdX3 root 

Anschließend wird die Swap-Partition mit einem von der Root-Partition abgeleiteten Schlüssel [8] erstellt und geöffnet:

/lib/cryptsetup/scripts/decrypt_derived root | cryptsetup -c aes-xts-plain64 -s 512 luksFormat /dev/sdX2
/lib/cryptsetup/scripts/decrypt_derived root | cryptsetup luksOpen /dev/sdX2 swap 

Formatierung der Partitionen

Aufgrund von Problemen mit dem Live-CD-Installer müssen die verschlüsselten Partitionen vorher manuell formatiert werden:

mkfs.ext4 /dev/mapper/root
mkswap /dev/mapper/swap 

Installation

Partitionierung.png

Danach wird das Installationsprogramm gestartet [1] und mit diesem bis Schritt 4 fortgefahren, bei dem die "manuelle Partitionierung" ausgewählt wird.

Im nächsten Installationspunkt werden die folgenden Partitionen jeweils mit einem Doppelklick auf die entsprechenden Einträge konfiguriert. Die Swap-Partition braucht nicht ausgewählt zu werden, da sie automatisch erkannt wird.

  • /dev/sdX1

    • Boot-Partition

    • Dateisystem: ext4

    • Formatieren: ja

    • Einhängepunkt: /boot

  • /dev/mapper/root

    • Root-Partition

    • Dateisystem: ext4 oder gewünschtes Linux-Dateisystem

    • Formatieren: ja

    • Einhängepunkt: /

Danach wird gemäß Anleitung [1] mit der Installation fortgefahren, jedoch nach dem Abschluss der Installation nicht neugestartet.

Experten-Info:

Sollte parallel Windows installiert und mit Truecrypt verschlüsselt worden sein, wird GRUB in die Boot-Partition /dev/sdX1 anstelle des MBRs installiert. Das wird im Installations-Punkt 7 unter Erweitert eingestellt. Dort wird anstelle von hd0 die Boot-Partition ausgewählt. GRUB erscheint dann, sobald die Taste Escape im Truecrypt-Bootloader gedrückt wird.

Ins verschlüsselte System wechseln

Hinweis:

Alle folgenden Befehle müssen in ein und demselben Terminal [4] ausgeführt werden.

Um die nötigen Anpassungen vorzunehmen, wird mittels chroot in das eigentliche, verschlüsselte System gewechselt. Das geschieht durch die Eingabe der folgenden Befehle:

mount /dev/mapper/root /mnt
mount /dev/sdX1 /mnt/boot
mount -o rbind /dev /mnt/dev
mount -t proc proc /mnt/proc
mount -t sysfs sys /mnt/sys
cp /etc/resolv.conf /mnt/etc/resolv.conf
chroot /mnt /bin/bash 

Software installieren

Die benötigten Pakete werden mit diesem Befehl [4] installiert:

apt-get install cryptsetup 

/etc/crypttab editieren

Zuerst muss die UUID der Root- und Swap-Partition ermittelt werden. Das geschieht mit folgenden Befehlen:

blkid /dev/sdX3
blkid /dev/sdX2 

Daraufhin wird mit dieser Eingabe die nötige Zeile in /etc/crypttab eingefügt, wobei <..._VOLUME_ID> vorher durch die ermittelte UUID (ohne Anführungszeichen!) ersetzt werden muss:

echo "root UUID=<SDX3_ROOT_VOLUME_ID> none luks" >> /etc/crypttab
echo "swap UUID=<SDX2_SWAP_VOLUME_ID> root luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived" >> /etc/crypttab 

Anschliessend kann man prüfen[9], ob auch wirklich alles korrekt eingetragen wurde und gegebenenfalls nachbessern. Ein Beispiel mit nicht repräsentativen UUIDs:

1
2
3
# <target name>	<source device>		<key file>	<options>
root UUID=c9e6aab5-e3a0-43e9-a594-4bcf1b61e7c1 none luks
swap UUID=d09e29f2-9882-457d-b4f0-42f12aebdd3b root luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

Kernel-Initramfs aktualisieren

Um die Änderungen an der crypttab zu übernehmen, muss noch

update-initramfs -u -k all 

ausgeführt werden.

Beenden/Neustart

Mit den beiden folgenden Befehlen wird die Chroot-Umgebung geschlossen und das System neugestartet. Beim Bootvorgang sollte dann nach dem Passwort gefragt werden.

exit
reboot 

Diese Revision wurde am 13. November 2014 09:30 von u1000 erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Systemverschlüsselung, Sicherheit, Vollverschlüsselung, Installation, System