ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

System verschlüsseln

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.

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 einem verschlüsselten Bereich installiert. Es wird der Logical Volume Manager eingesetzt, da mit diesem beim Start nur eine Passworteingabe nötig ist, der Ruhezustand (S4) noch funktioniert und er, was die Partitionierung angeht, sehr flexibel ist.

Hinweis:

LVM ist eine Speziallösung, die in erster Linie für Server sowie Desktops mit mehr als einer Festplatte interessant sind. Für Desktops mit nur einer Festplatte oder Notebooks sollte die normale Partitionierungsmethode verwendet werden!

Alternativ ist es auch möglich, das System ohne LVM zu verschlüsseln, jedoch ist diese Variante weniger flexibel, was nachträgliche Partitionsänderungen angeht. Außerdem kann man das System auch mit der nicht-grafischen Installation verschlüsseln, was die Option der Wahl ist, wenn keine Internet-Verbindung zur Verfügung steht.

Eine Variante, bei der das System wahlweise per Passwort oder externem Medium entschlüsselt werden kann, findet sich in System-Entschlüsselung mit SD-Karte oder Passwort.

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.

Software und Kernelmodule laden

Die Desktop-CD unterstützt von Haus aus kein LVM und LUKS, dies wird aber durch die Installation der folgenden Pakete [3] korrigiert:

  • lvm2

  • cryptsetup (ab Karmic bereits vorhanden)

Befehl zum Installieren der Pakete:

sudo apt-get install lvm2 cryptsetup 

Oder mit apturl installieren, Link: apt://lvm2,cryptsetup

Hinweis:

Alle folgenden Befehle benötigen Root-Rechte. Man sollte also entweder immer sudo vor das betreffende Kommando setzen oder mit sudo -s Root-Status erlangen!

Dann werden bis einschließlich Jaunty in einem Terminal [4] durch Eingabe von

modprobe dm-crypt 

die benötigten Kernelmodule geladen.

Partitionierung

Hinweis:

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

Zwei Partitionen werden benötigt [5]:

  • /dev/sdX1 (ext3)

    • Boot-Partition (unverschlüsselt)

    • Größe: mindestens 120 MB (mehr ist im Regelfall aber nicht nötig ggf. müssen nur nach einigen Updates alte Kernelpakete deinstalliert werden)

  • /dev/sdX2 (unformatiert)

    • verschlüsseltes LVM-Volume

    • Größe: üblicherweise der verfügbare Rest, aber mindestens 8 GB (root + Arbeitsspeicher)

Verschlüsselung der Partition

Achtung!

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

Daraufhin wird in der großen Partition ein LUKS-Medium erstellt und anschließend mit dem Namen lvm geöffnet [6]. Beim Einsatz von XTS mit 256 Bit AES sähen die Befehle [4] wie folgt aus:

cryptsetup -c aes-xts-plain -s 512 luksFormat /dev/sdX2
cryptsetup luksOpen /dev/sdX2 lukslvm 

XTS benötigt einen Verwaltungsschlüssel mit einer Länge von 128 oder 256 Bit. Die Länge des Verwaltungsschlüssels muss zur Schlüssellänge hinzuaddiert werden. Mit AES sind also Gesamtschlüssellängen von 256, 320, 384, 448 oder 512 Bit möglich.

Erstellung der LVM-Partitionen

Mit folgenden Befehlen [4] wird das LVM-Volume in der verschlüsselten Partition erzeugt.[7]

pvcreate /dev/mapper/lukslvm
vgcreate vgubuntu /dev/mapper/lukslvm 

Bei einer Standard-Installation von Ubuntu werden zwei Partitionen angelegt, eine für den Swap-Speicher - üblicherweise das ca. 1,3fache des RAMs, also bei 1024 MB Arbeitsspeicher knapp 1300 MB - und eine für das Root-Dateisystem mit dem restlichen Speicherplatz. Diese werden wie folgt als Logical Volume [7] erstellt:

lvcreate -L 1300M -n swap vgubuntu
lvcreate -l 100%FREE -n root vgubuntu 

Sollten noch weitere Partitionen benötigt werden, können diese genauso eingerichtet werden. Natürlich darf dann für root nicht 100% des verfügbaren Platzes vergeben werden.

Wegen Problemen mit dem Live-CD-Installer müssen alle Partitionen vorher manuell formatiert werden:

mkswap /dev/mapper/vgubuntu-swap
mkfs.ext3 /dev/mapper/vgubuntu-root 

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: ext3

    • Formatieren: ja

    • Einhängepunkt: /boot

  • /dev/mapper/vgubuntu-root

    • Root-Partition

    • Dateisystem: ext3 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.

Achtung!

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

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 Esc 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/vgubuntu-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 lvm2 

/etc/crypttab editieren

Zuerst muss die UUID der verschlüsselten Partition ermittelt werden. Das geschieht mit folgendem Befehl:

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 ersetzt werden muss (falls zuvor, beim Öffnen der verschlüsselten Partition mit luksOpen, ein anderer Name als lukslvm angegeben wurde, dann muss genau dieser eingetragen werden - weicht der Eintrag in /etc/crypttab vom aktuell verwendeten Namen ab, kann beim Neustart die Partition nicht entschlüsselt werden):

echo "lukslvm UUID=<VOLUME_ID> none luks" >> /etc/crypttab 

/etc/modules editieren

Nun muss noch unter /etc/modules das dm-crypt-Modul hinzugefügt werden, falls es dort noch nicht existiert:

echo "dm-crypt" >> /etc/modules 

/etc/initramfs-tools/modules editieren

Wird nicht der Standard-Kernel (Generic) verwendet, muss man ggf. über die Initramfs dafür sorgen, dass während des Bootvorgangs alle benötigten Module vorhanden sind:

echo "aes" >> /etc/initramfs-tools/modules
echo "aes_i586" >> /etc/initramfs-tools/modules
echo "aes_x86_64" >> /etc/initramfs-tools/modules
echo "aes_generic" >> /etc/initramfs-tools/modules
echo "dm-crypt" >> /etc/initramfs-tools/modules
echo "dm-mod" >> /etc/initramfs-tools/modules
echo "sha256" >> /etc/initramfs-tools/modules
echo "sha256_generic" >> /etc/initramfs-tools/modules
echo "lrw" >> /etc/initramfs-tools/modules
echo "xts" >> /etc/initramfs-tools/modules
echo "crypto_blkcipher" >> /etc/initramfs-tools/modules
echo "gf128mul" >> /etc/initramfs-tools/modules 

Kernel-Initramfs aktualisieren

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

update-initramfs -u -k all 

ausgeführt werden.

GRUB-Konfiguration aktualisieren/überprüfen

Wenn die root-Partition mit aktiviertem "data journaling" gemountet werden soll, muss bereits beim Kernelstart ein entsprechender Kernel-Parameter angegeben werden. Der Eintrag in der /etc/fstab reicht dann nicht mehr aus, weil diese Datei erst dann gelesen werden kann, wenn das root-Dateisystem bereits entschlüsselt und in das System eingehängt wurde. Unter /etc/default/grub editiert man die grub-Datei folgendermaßen:

GRUB_CMDLINE_LINUX_DEFAULT="kopt=root=/dev/mapper/vgubuntu-root"

Beenden/Neustart

Mit den folgenden Befehlen wird die Chroot-Umgebung geschlossen, die Boot- und Root-Partition sauber ausgehängt, Luks beendet und das System neugestartet. Beim Bootvorgang sollte dann nach dem Passwort gefragt werden.

exit
sync
umount /mnt/boot
umount /mnt
cryptsetup luksClose vgubuntu-root
reboot 

Passwort ändern

Durch das vom Benutzer eingegebene Passwort wird lediglich ein Master-Schlüssel entschlüsselt, welche letztendlich für die Sicherheit des Dateisystems verwendet wird. Das hier verwendete LUKS ermöglicht es somit, dass das Passwort leicht geändert werden kann, ohne dass das ganze Dateisystem neu verschlüsselt werden muss. Der Generalschlüssel bleibt letztendlich der gleiche. Es können sogar mehrere Schlüssel (bis zu 8 Stück) gleichzeitig verwendet werden, der Generalschlüssel liegt dann einfach mehrfach mit den jeweils verwendeten Passwort vor, bei der Passwortabfrage muss dann nur der jeweilige Slot entsperrt werden können.

Hinweis:

Bei einem Angriff auf das verschlüsselte System reicht es bereits, einen Slot zu entschlüsseln. Es ist also darauf zu achten, dass alle verwendeten Passwörter ausreichend sicher sind. Mehrere Passwörter zu verwenden, ist vor allem bei einem Mehrbenutzersystem sinnvoll. Alternativ lässt sich ein Zweitpasswort setzen, falls man das eigentlich verwendete Passwort vergisst. Auch kann man dasselbe Passwort in einem weiteren Slot abspeichern, um sich so vor Dateisystemfehlern in einem der Slots zu schützen.

Schlüssel hinzufügen

Der folgende Befehl fügt einen Schlüssel zum angegeben Laufwerk hinzu:

sudo cryptsetup luksAddKey /dev/sdX2 

Schlüssel entfernen

Achtung!

Hier kann man sich unter Umständen vom System aussperren, sofern man nicht aufpasst. Bei einer Passwortänderung zunächst das gewünschte Passwort anlegen, eventuell testen und erst dann das alte Passwort löschen.

Der folgende Befehl entfernt den Schlüssel aus Slot 1 vom angegeben Laufwerk:

sudo cryptsetup luksDelKey /dev/sdX2 1 

Probleme unter Ubuntu 10.04

Es kann vorkommen, dass fest eingebundene, verschlüsselte Partitionen auf der Oberfläche erscheinen, sich diese Symbole jedoch nicht verwenden lassen. Es kommt zu einer Fehlermeldung. Die Anzeige lässt sich unterbinden, indem man im Verzeichnis /etc/udev/rules.d eine 99-hide-partitions.rules anlegt, und dort folgendes einträgt:

KERNEL=="sd?", ENV{UDISKS_PRESENTATION_HIDE}="1"

Es ist darauf zu achten, dass "sd?" durch die zu versteckende Partition ersetzt wird.

Probleme unter Ubuntu 10.10

Kommt es nach abgeschlossener Verschlüsselung zu Boot-Problemen, liegt die Ursache häufig darin, dass bereits während der Einrichtung der Verschlüsselung die Zuordnung der Laufwerke, Partitionen, RAID-, LVM-, oder CRYPT-Devices fehlerhaft war. Der Boot-Prozess bleibt dann ohne Passwortabfrage etwa mit der Fehlermeldung

Gave up waiting for root device. Common problems:
-Boot args (cat /proc/cmdline)
  -Check rootdelay= (did the system wait long enough?)
  -Check root= (did the system wait for the right device?)
-Missing modules (cat /proc/modules; ls /dev) 
ALERT! /dev/mapper/root does not exist Dropping to a shell!

stehen, und man landet in der Busybox.

Wer bei der obigen Anleitung vorgeht, bekommt schon zu einem früheren Zeitpunkt eine Fehlermeldung, die jedoch leicht übersehen werden kann:

# update-grub
grub-probe: error: cannot find a device for /. 

Eine Ursache dafür ist z.B., dass im Zuge der Verschlüsselung die Partitionstabelle geändert wurde, diese aber aus verschiedenen Gründen nicht neu eingelesen werden konnte. Dann stimmen die UUIDs nicht, die man von den folgenden Kommandos erhält:

blkid
vol_id
ls -al /dev/disk/by-uuid/ 

Hier hilft nur das Fortsetzen der Verschlüsselung nach einem Reboot.

Eine andere Ursache könnte der devicemapper sein. Mit der Ubuntu 10.10 Live-CD wird eine Version von dmsetup ausgeliefert, die ein geändertes Verhalten zeigt. crypt-devices unter /dev/mapper/... werden neuerdings als Symlinks angelegt. Beispiel:

# ls -l /dev/mapper/
insgesamt 0
crw-rw---- 1 root root  10, 60 30. Nov 11:25 control
lrwxrwxrwx 1 root disk 254,  0 30. Nov 11:25 root -> ../dm-0 

Problematisch ist dieses geänderte Verhalten stets dann, wenn das Verhalten von dmsetup des verschlüsselten Systems und des zur Verschlüsselung benutzten Live-Systems voneinander abweicht (z.B. Verschlüsselung von Ubuntu 10.04 oder Debian Lenny mit einer Ubuntu 10.10 Live-CD). In diesem Fall kann helfen, den Symlink zu entfernen und durch eine Kopie des Block-Devices zu ersetzen, bevor mit chroot in das System gewechselt wird:

rm /dev/mapper/<volume> && cp -R /dev/dm-X /dev/mapper/<volume> 

(siehe auch Debian Bug Report 🇬🇧)

Ramdisk wird nicht erfolgreich erstellt

Ein Bug in cryptsetup (Version 2:1.1.2-1ubuntu1), führt bei beim Erstellen der Ramdisk zu folgender Fehlermeldung:

Running depmod.
update-initramfs: Generating /boot/initrd.img-2.6.35-30-generic
cryptsetup: WARNING: invalid line in /etc/crypttab - 
Not updating initrd symbolic links since we are being updated/reinstalled  

Abhilfe wird durch Aktualisieren des Paketes auf die Version 2:1.1.2-1ubuntu1.1 über die proposed-Quellen geschaffen (siehe im hier Thema im Forum).

Alternative - Installation mit Hilfe eines Skripts

full-disk-encryption-lvm-luks.sh 🇬🇧 ist ein OpenSource-Shell-Skript, welches ebenfalls ein via LUKS/LVM vollverschlüsseltes Ubuntu-System installieren kann. Das halbautomatische Skript erleichtert einem die Arbeit, da keine komplizierten Befehlsfolgen eingegeben werden müssen. Außerdem braucht man so im Vergleich zu einer Standardinstallation nur wenige Minuten länger, um ein vollverschlüsseltes System zu installieren.

Hinweis!

Fremdsoftware kann das System gefährden.

Sollte man sich für diese Methode entscheiden:

  1. Von CD booten, um eine Live-Session zu starten.

  2. Skript herunterladen und ausführen. Dazu einfach ein Terminal öffnen und folgende Befehle ausführen (Kopieren und Einfügen empfohlen):

    wget "http://readm3.org/_export/code/os/ubuntu/full-disk-encryption-lvm-luks.sh?codeblock=1" -O "/tmp/full-disk-encryption-lvm-luks.sh"
    chmod a+rx /tmp/full-disk-encryption-lvm-luks.sh
    sudo /tmp/full-disk-encryption-lvm-luks.sh 
  3. Den Anweisungen des Skripts folgen.

Sofern man sich für die Hintergründe interessiert, findet sich im Artikel "Vollverschlüsseltes System mit Ubuntu (ab 9.04 Jaunty), LVM und LUKS" 🇩🇪 eine detaillierte Beschreibung.

Alternatives Entschlüsseln der Systempartition mit einem USB-Schlüssel

Möchte man das System mit Hilfe eines USB-Sticks entschlüsseln (ohne eine offensichtliche Schlüsseldatei auf besagtem Stick zu haben, der Stick kann demnach auch beliebig formatiert werden), kann hierfür ein Workaround über das initramfs genutzt werden.

Folgender Artikel beschreibt detailliert die notwendigen Schritte unter Ubuntu 11.04 (Natty). Benötigt werden, neben einer Ubuntu_Installation und Internetzugang, Wissen im Umgang mit der Konsole und einem Editor. Der Artikel ist auf Anfänger zugeschnitten, sodass weiterführendes Wissen von Vorteil, aber nicht zwingend notwendig ist.

Datensicherheit 2 – Verschlüsseltes System Reloaded 🇩🇪

Diese Revision wurde am 4. November 2011 21:03 von Lasall erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Sicherheit, Installation, System, Systemverschlüsselung, Vollverschlüsselung, Server, Verschlüsselung