Wiki

System verschlüsseln

System verschlüsseln

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.

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. Des Weiteren 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.

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 schief gehen.

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)

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 200 MB (mehr ist im Regelfall aber nicht nötig)

  • /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 lvm 

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/lvm
vgcreate ubuntu /dev/mapper/lvm 

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 ubuntu
lvcreate -l 100%FREE -n root ubuntu 

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.

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

mkswap /dev/mapper/ubuntu-swap
mkfs.ext3 /dev/mapper/ubuntu-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 braucht nicht ausgewählt werden, da sie automatisch erkannt wird.

  • /dev/sdX1

    • Boot-Partition

    • Dateisystem: ext3

    • Formatieren: ja

    • Einhängepunkt: /boot

  • /dev/mapper/ubuntu-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 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/ubuntu-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:

echo "lvm 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 

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 

Probleme unter Ubuntu 9.10

Wie nun mehrfach festgestellt wurde, gibt es durch die Änderungen in Karmic Koala im Bootvorgang Probleme mit der Passwortabfrage beim Booten. Diese wird quasi durch den Umstand das mehrere Dinge gleichzeitig gestartet werden überrannt. Dieses Problem ist zwar bekannt, aber wurde bis heute nicht behoben. Eine provisorische Lösung ist es, die Datei /etc/init/mountall.conf mit einem Editor mit Root-Rechten zu editieren[9].

Diese sieht dann im Folgenden so aus:

# mountall - Mount filesystems on boot
#
# This helper mounts filesystems in the correct order as the devices
# and mountpoints become available.

description	"Mount filesystems on boot"

start on startup
stop on rcS

expect daemon
task

emits virtual-filesystems
emits local-filesystems
emits remote-filesystems
emits all-swaps
emits all-filesystems
emits filesystem

# temporary, until we have progress indication
# and output capture (next week :p)
console output

script
    . /etc/default/rcS
    [ -f /forcefsck ] && force_fsck="--force-fsck"
    [ "$FSCKFIX" = "yes" ] && fsck_fix="--fsck-fix"
    [ -n "$TMPTIME" ] && tmptime="--tmptime=$TMPTIME"
    exec mountall --daemon $force_fsck $fsck_fix $tmptime
end script

post-stop script
    rm -f /forcefsck 2>dev/null || true
end script

Hier muss dann lediglich vor den Teil der mit "script" beginnt, folgendes eingetragen werden:

pre-start script
    . /lib/cryptsetup/cryptdisks.functions

    case "$CRYPTDISKS_ENABLE" in
    [Nn]*)
        exit 1
        ;;
    esac

    INITSTATE="init"
    do_start
end script

Diese Revision wurde am 17. April 2010 um 13:26 Uhr von dasicebaer erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet: Sicherheit, Installation, System, Systemverschlüsselung, Vollverschlüsselung

Passwort vergessen?