ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

Schlüsselableitung

Achtung!

Die hier beschriebene Methode mit automatischem Entsperren durch Schlüsselableitung funktioniert mit systemd und damit ab Ubuntu 15.04 nicht mehr (vgl. dazu systemd-Mailingliste 🇬🇧 , Debian Bug-Tracker 🇬🇧 und hier im Forum).

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


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Das Ubuntu-System lässt sich ab Ubuntu 12.10 bereits automatisch bei der Installation verschlüsseln. Mit dieser Anleitung wird Ubuntu stattdessen manuell, ebenso bis auf die Boot-Partition, die nur den Kernel und Bootloader enthält, in verschlüsselten Partitionen installiert, wodurch man mehr Einfluss auf die Partitionierung hat. 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 weniger flexibel, funktioniert aber ohne LVM.

Hinweis:

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

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!

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.

Experten-Info:

Man sollte sich vorab darüber informieren, ob der Rechner mit einem EFI Bootmanagement versehen ist und wie die Festplatte(n) formatiert wurden! Weitere Informationen stehen unter EFI Grundlagen zur Verfügung!

Bei EFI-Systemen ist zu beachten, dass auf jeden Fall neben der unverschlüsselten Boot-Partition noch eine unverschlüsselte EFI-Partition anzulegen ist. Eine Alternative wäre die Nutzung des BIOS-Kompatibilitätsmodus CSM. Zum weiteren Vorgehen bei vorhandenem EFI Bootmanagement für verschlüsselte Systeme mit Schlüsselableitung kann man sich auch an den EFI-Hinweisen der Anleitung System verschlüsseln ohne Schlüsselableitung orientieren. Insbesondere ist darauf zu achten, dass die EFI-Partition als solche gekennzeichnet sowie dass sie beim chroot berücksichtigt wird.

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 luksFormat -c aes-xts-plain64 -s 512 -h sha512 -y /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 luksFormat -c aes-xts-plain64 -s 512 -h sha512 -y /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 

Problembehebung

Workaround Ubuntu 15.04 und systemd

Ohne suspend-to-disk Support kann die Swap Partition mit Einwegschlüsseln verwendet werden. Diese Methode kommt ohne 'decrypt_derived' aus und funktioniert daher auch mit systemd unter Ubuntu 15.04.

Es wird eine freie Swap Partition benötigt, z.B. unter /dev/sda2.

Die Kennung der Partition (PARTUUID) wird mit 'sudo blkid' ermittelt, auch eindeutige Bezeicher unter /dev/disk/by-id und /dev/disk/by-path können verwendet werden.

  • /dev/sda3 ist als Bezeichner nicht verwendbar!

  • die UUID ist ebenfalls nicht verwendbar (ändert sich bei jeden Neustart)

Achtung!

Die Verwendung von einem nicht 100% eindeutigen Bezeichner z.B. von /dev/sda2 führt mit hoher Wahrscheinlichkeit irgendwann zu einem kompletten Datenverlust, wenn z.B. beim Starten mal ein ander Datenspeicher als sda benannt wird!

Eintrag der in der '/etc/crypttab' für die Swap Partition:

swap PARTUUID="xxxxx-xxx-xxx-xxxx" /dev/urandom swap,cipher=aes-cbc-essiv:sha256,size=256

/dev/urandom ist dabei der Einmalschlüssel.

Update der initramfs

sudo update-initramfs -u -k all

Der Eintrag in der fstab:

/dev/mapper/swap none swap sw 0 0

Nach dem Neustart kann mit

ls -la /dev/mapper/
sudo cryptsetup status /dev/mapper/swap

gepüft werden, ob der das verschlüsselte Swap-Gerät verfügbar ist, und mit

swapon -s
top

ob es verwendet wird. Quelle: https://wiki.archlinux.org/index.php/Dm-crypt/Swap_encryption 🇬🇧

Diese Revision wurde am 10. Juli 2016 13:37 von rumo453 erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Systemverschlüsselung, Sicherheit, Vollverschlüsselung, Installation, System