SDB:Verschlüsseltes root file system

Wechseln zu: Navigation, Suche


Getestet mit openSUSE Empfohlene Artikel Verwandte Artikel
Icon-checked.png

Icon-manual.png Icon-help.png
Dieser Artikel beschreibt, wie man sein komplettes System verschlüsselt und nicht nur persönliche Daten oder eine einzelne Partition wie /home.

Einführung und Motivation

Die meisten Laptop-Nutzer machen sich keine Gedanken darüber, was für Probleme entstehen, wenn ihr Laptop gestohlen wird, bis ihr Laptop gestohlen wird. Falls der Laptop den Quellcode eines neuen Produkts, vertrauliche Dokumente, Notizen für einen Zeitungsartikel über Korruption oder vielleicht nur einen privaten Liebesbrief enthält, ist die Katastrophe vorprogrammiert, wenn die Dateien in die falschen Hände fallen.

Um einem Laptopdiebstahl und seinen negativen Effekten vorzubeugen, kann man entweder keinen Laptop verwenden oder hardwareseitig verschlüsselte Geräte oder Verschlüsselungssoftware einsetzen, um die Daten zu schützen. Wobei letzteres die attraktivere Option ist, da sie flexibler eingesetzt werden kann, als die hardwareseitige Verschlüsselung. Mit modernen CPUs bemerkt der Nutzer noch nicht mal Geschwindigkeitseinbußen, wenn die Verschlüsselungssoftware on-the-fly Dateien ver- und entschlüsselt.

Warum das Root-Dateisystem verschlüsseln?

Auf dem ersten Blick ist man eher dazu geneigt, nur die wichtigsten Dateien oder vielleicht nur ein komplettes Dateisystem (/home), das sensible Informationen enthält, zu verschlüsseln. Wenn man nicht das vollständige Root-Dateisystem verschlüsselt hat, kann der Inhalt jeder verschlüsselten Datei in unverschlüsselte Bereiche der Festplatte geschrieben werden, wie Swap, /tmp oder /var. Außerdem können Editoren oder andere Programme temporäre Dateien in unverschlüsselte Bereiche speichern, die den Inhalt der verschlüsselten Datei verraten. Schließlich können auch noch Metadaten wie Größe, Zugriffsrechte und -zeit usw. moderner Journaling-Dateisysteme, die auf unverschlüsselten Partitionen geschrieben werden, Aufschluss über den Inhalt der Datei geben. Allgemein ist es nicht einfach, den Abfluss von Informationen eines Nutzers ins Root-Dateisystem zu verhindern.

Um zu verstehen, wie groß das Problem ist, kann man sich eine Firma vorstellen, die einen Webserver in ihrem Intranet installiert hat, um vertrauliche Informationen innerhalb der Firma zugänglich zu machen. Schaut sich ein Angestellter ein Dokument auf der Webseite an, speichern Browser häufig die komplette Datei in einen temporären Ordner, der vielleicht nicht verschlüsselt ist, wo das Dokument bleibt, bis es gelöscht wird.

Aus diesem Grund sollte man das komplette Root-Dateisystem zusammen mit dem Dateisystem verschlüsseln, das die sensiblen Dateien enthält.

openSUSE mit verschlüsseltem Root-Dateisystem installieren

Die Verschlüsselung des Root-Dateisystems, genauso wie /home, /tmp und andere Partitionen, wird vom grafischen Installationsprogramm von openSUSE unterstützt:

Ist das System bereits installiert, kann die Verschlüsselung mit dem Partitionierungsprogramm in YaST nachgeholt werden.

Erläuterungen findet man dazu unter dem Titel 'Lokale Sicherheit' im 'Security Guide', der Teil der offiziellen openSUSE-Anleitung ist.

Opensuse Official Documentation

'Encrypting Partitions and Files' chapter in the openSUSE Security Guide

Damit man die Passphrase nicht zweimal eingeben muss

Ein Nachteil bei der Verschlüsselung des Root-Dateisystems ist allerdings, dass man die Passphrase zweimal eingeben muss - einmal für den Bootloader (Grub) und dann nochmal, wenn das eigentliche System bootet. Das kann man verhindern, indem man eine Schlüsseldatei zur initrd hinzufügt.

Warnung!Man sollte dies nur machen, wenn man ein verschlüsseltes Root-Dateisystem hat, das bereits /boot enthält (also keine separate /boot Partition hat)!

Der Schlüssel, den man zur initrd hinzufügt, kann dazu benutzt werden, die Root-Partition zu entschlüsseln, wenn man initrd auf einer nicht verschlüsselten /boot-Partition hat, was die Verschlüsselung der Root-Partition überflüssig machen würde.

Die folgende Schritte beschreiben, wie man die Schlüsseldatei anlegt. Dazu werden die folgenden Befehle in einem Terminal mit Root-Rechten ausgeführt:

  1. Erstelle eine leere Schlüsseldatei.
    touch /.root.key
    Niemand außer Root sollte diese Datei lesen können.
    chmod 600 /.root.key
  2. Erzeuge den Schlüssel.
    dd if=/dev/urandom of=/.root.key bs=1024 count=1
  3. Schlüsseldatei als Methode hinzufügen, von der die Root-Partition gestartet werden darf.
    cryptsetup luksAddKey /dev/sda1 /.root.key  # ersetze /dev/sda1 durch die richtige Partition
  4. Bearbeite /etc/crypttab und füge die Schlüsseldatei in der dritten Spalte hinzu.
    cr_sda1 UUID=... /.root.key # Der Name der Partition ist nur ein Beispiel.
  5. Konfiguriere dracut um die Schlüsseldatei zur initrd hinzuzufügen. Dafür wird eine Datei erstellt /etc/dracut.conf.d/99-root-key.conf, die den folgenden Inhalt hat:
    install_items+=" /.root.key " # Beachte die Leerzeichen vor und nach den beiden doppelten Anführungszeichen.
  6. Das /boot Verzeichnis sollte nur für Root zugänglich sein. Das verhindert, dass Benutzer, die keine Root-Rechte haben, initrd auslesen und die Schlüsseldatei extrahieren können. Damit die Zugriffsrechte nicht zu einem späteren Zeitpunkt wieder überschrieben werden, öffne die Datei /etc/permissions.local und füge diese Zeile ein:
    /boot/ root:root 700
    Setzen der neuen Zugriffsrechte.
    chkstat --system --set
  7. Baue initrd neu.
    mkinitrd

Falls weitere verschlüsselte Partitionen existieren (wie z.B. /home), kann man weitere Schlüsseldateien erstellen, um sie ohne weitere Passphrase zu mounten. Das funktioniert genauso wie oben beschrieben, außer, dass man keinen Schlüssel in der initrd für diese Partitionen ablegen muss.

Lokale Passphrase

Das aktuelle openSUSE Setup unterstützt keine lokalisierten Tastatur-Layouts für Grub2 in der frühen Phase des Bootens. Das führt dazu, dass bei der Eingabe der Passphrase das us-amerikanische Tastatur-Layout genommen werden muss.