Quelle1)

Mittlerweile gibt es bei der Installation eine erheblich einfachere sowie mit weniger Aufwand verbundene Möglichkeit die komplette Festplatte zu verschlüsseln, die selbst von Laien durchgeführt werden kann:

Ubuntu System bei der Installation verschlüsseln] - Bei der Installation die Festplatte verschlüsseln

Mit dieser Anleitung lässt sich das Betriebssystem bis auf die '/boot' Partition, die nur den Kernel und Bootloader enthält, komplett verschlüsseln. Da hier die Partitionierung der Festplatten verändert wird, ist ein vorheriges Backup des Systems unbedingt erforderlich! Im Verlauf des Artikels werden eine separate home, root und boot Partition erstellt und dann nacheinander mit cryptsetup und LUKS verschlüsselt. Ein existierendes System kann dabei erhalten bleiben. Auch eine Neuinstallation des Systems ist mit dieser Anleitung möglich (getestet mit 7.04 Desktop).

Sicherheit der Verschlüsselung

In dieser Anleitung wird der AES-Kryptographie-Algorithmus verwendet, um die Festplatte zu verschlüsseln. Mit der Einstellung auf 256 Bit wird der stärkste Schlüssel verwendet, den AES verarbeiten kann. Laut [http://de.wikipedia.org/wiki/Advanced_Encryption_Standard Wikipedia] {de} ist es „bei entsprechend komplexem Passwort (siehe dazu auch [:Sicherheits_1x1:Sicherheits 1×1]) auch mit größtem Aufwand ohne den jeweiligen Schlüssel nicht möglich, die damit codierten Daten zu dechiffrieren.“ Weiterhin sei AES als Verschlüsselungsstandard für staatliche Dokumente mit höchster Geheimhaltungsstufe in den USA zugelassen.

Vorbereiten des Systems

Partitionierung

Als erstes müssen die zu verschlüsselnden Partitionen erstellt werden. Dazu wird von einer Live-CD gestartet (z.B. [:Downloads:Ubuntu Desktop CD] oder [http:/www.knoppix.org Knoppix] {de} ) und die Festplatte (im Beispiel /dev/sda) wie in [1] beschrieben in vier Partitionen eingeteilt. Eine Partitionierung könnte beispielsweise so aussehen:

* '/dev/sda1' (ext2)

  • Boot-Partition; Größe: ca. 100 MB

* '/dev/sda2' (swap)

  • Swap-Partition; Größe: das Doppelte des Arbeitsspeichers

* '/dev/sda3' (ext3)

  • Root-Partition; Größe: ca. 6 GB

* '/dev/sda4' (ext3)

  • Home-Partition; Größe: der restliche verfügbare Speicherplatz

Das existierende System kann dabei auch auf '/' bleiben. Die für die jeweiligen Partitionen benötigten Dateien können dann später an die richtige Stelle verschoben werden.

  • Im Verlauf der Anleitung wird vorausgesetzt, dass Home auf einer eigenen Partition (/dev/sda4) liegt! Sollte dies noch nicht der Fall sein, so sollte man es nun wie in [6] beschrieben auf eine extra Partition auslagern!

Software installieren und benötigte Kernelmodule laden

Zuerst wird im Live-System das folgende Paket installiert [2]:

  • 'cryptsetup' (bis Feisty in universe [3])

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

Dann werden durch Eingabe von

Ab der Pentium-Prozessorfamilie (und kompatiblen CPUs) ist es möglich, statt des Moduls aes das Modul aes_i586 zu laden. Dieses Kernelmodul ist speziell an Pentium-Prozessoren angepasst und bringt daher enorme Geschwindigkeitsvorteile mit sich. Ab Ubuntu 8.04 gibt es nur mehr die Pakete „aes-i586“ und „aes_generic“ Ein entsprechendes Modul gibt es auch für die 64bit-Version: aes_x86_64

modprobe aes
modprobe dm-crypt
modprobe dm-mod
modprobe sha256

in einem Terminal die benötigten [:Kernelmodule:] geladen.

Einhängepunkte erstellen und belegen

Es werden nun [:mount:Einhängepunkte] erstellt, in die die eben angelegten Partitionen [:mount:gemountet] werden:

mkdir /media/{boot,home,root}
cd /media
mount /dev/sda1 boot
mount /dev/sda3 root
mount /dev/sda4 home
/boot verschieben

Als nächstes wird der existierende Boot-Ordner (sofern er nicht schon auf einer separaten Partition liegt) von '/' auf die neue Partition verschoben:

cp -avx root/boot/* boot/
umount boot

Sollte sich '/boot' auf eine eigene Partition verschoben worden sein, so sollte unbedingt darauf geachtet werden, dass in der Datei '/media/root/etc/fstab' ein [:fstab:entsprechender Eintrag] angelegt wird!

'/boot' (im Beispiel also '/dev/sda1') ist die einzige Partition, die unverschlüsselt bleibt.

Verschlüsselung der Partitionen

Root-Partition Verschlüsseln

Existierende Daten sichern

Sofern nicht schon geschehen, sollten nun die Dateien auf der Root-Partition ('/dev/sda3') gesichert werden. Hier werden die Daten auf die eben angelegten home-Partition gesichert, sollte diese aber zu klein sein, um die Daten von der Root-Partition zu fassen, so kann man den Inhalt der Partition auch auf einem anderen Speichermedium ablegen. Nicht vergessen: nach dem Backupvorgang wird die Root-Partition ausgehängt.

mkdir home/root
cp -avx root/* home/root
umount root

Crypt Device erstellen

Der Nachfolgende Befehl löscht sämtliche Dateien auf der betreffenden Partition unwiederbringlich! Man sollte ihn nur ausführen, wenn man wie oben beschrieben ein Backup der Daten auf '/dev/sda3' angefertigt hat!

Ab Kernel 2.6.20 (Gutsy/Feisty):

sudo cryptsetup -c aes-lrw-benbi -y -s 384 luksFormat /dev/sda3

Ab Kernel 2.6.10 (Dapper und Edgy):

sudo cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat /dev/sda3

Das Kommando verschlüsselt '/dev/sda3' mit dem AES-Algorithmus. Das Argument '-y' erzwingt eine doppelte Passwortabfrage beim Anlegen des Volumes und '-s' legt die Schlüssellänge fest (hier: 256 Bit, ab Kernel 2.6.20 werden zwar 384 Bit angegeben, aber Aufgrund des Designs des LRW-Algorithmuses werden nur 256 Bit real verwendet). Nachdem man mit YES das Formatieren bestätigt hat, wird man nach einem Passwort gefragt. Man sollte hier keine deutschen „Sonderzeichen“ wie ä, ö, ü, ß und € wählen, die auf amerikanischen Tastaturen nicht zu finden sind. Dies sollte man berücksichtigen, da es sonst beim Boot-Vorgang zu Problemen mit der Passwortabfrage kommen kann.

Crypt Device formatieren und Daten zurücksichern

Das eben erstellte Volume wird nun geöffnet, formatiert und wieder ins Live-System eingehängt:

cryptsetup luksOpen /dev/sda3 root
mkfs.ext3 /dev/mapper/root
mount /dev/mapper/root root

Dann wird der eben gesicherte Inhalt der Root-Partition zurück kopiert:

cp -avx home/root/* root
rm -fvr home/root

Home-Partition Verschlüsseln

Existierende Daten sichern

Auch die Daten aus '/media/home' müssen gesichert werden. Dann sollte man die Partition aushängen:

mkdir root/backup
cp -ax home/* root/backup
umount home

Crypt Device erstellen

Der Nachfolgende Befehl löscht 'sämtliche' Dateien auf der betreffenden Partition unwiederbringlich! Man sollte ihn nur ausführen, wenn man wie oben beschrieben ein Backup der Daten auf '/dev/sda4' angefertigt hat!

Ab Kernel 2.6.20 (Gutsy/Feisty):

sudo cryptsetup -c aes-lrw-benbi -y -s 384 luksFormat /dev/sda4

Ab Kernel 2.6.10 (Dapper und Edgy):

sudo cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat /dev/sda4

Das Kommando verschlüsselt '/dev/sda4' mit dem AES-Algorithmus.

Crypt Device formatieren und Daten zurücksichern

Auch dieses Volume wird nun formatiert und eingehängt:

cryptsetup luksOpen /dev/sda4 home
mkfs.ext3 /dev/mapper/home
mount /dev/mapper/home home

Und auch der eben gesicherte Inhalt der Home-Partition wird wiederhergestellt:

cp -ax root/backup/* home
rm -fr root/backup
umount home

Alle Daten (außer denen in '/boot') des eigentlichen Systems sind nun verschlüsselt. Allerdings würde sich der Rechner so nicht starten lassen. Es sind also noch einige Änderungen am System zu machen (von der Live-CD aus!)

Neues System installieren

Falls ein frisches System installiert werden sollte ist nun der richtige Zeitpunkt. [7]

  • Für / (root) benutzt man /dev/mapper/root
  • Für /boot benutzt man /dev/sda1
  • Für /home benutzt man /dev/mapper/home
  • Als swap nimmt man /dev/sda2

Wie die swap Partition auch verschlüsselt werden kann, ist weiter unten im Punkt „Auslagerungsspeicher verschlüsseln“ beschrieben. (Kann nach der Systeminstallation erfolgen)

System zum Booten vorbereiten

In das Festplattensystem wechseln und Software installieren

Um die nötigen Anpassungen vorzunehmen wechselt man mit chroot in das eigentliche, verschlüsselte System. Vorher wird noch die Boot-Partition in das Root-Dateisystem des Systems eingehängt, da Dateien auf dieser Partition geändert werden müssen.

mount /dev/sda1 root/boot
chroot root
mount -t proc proc /proc
mount -t sysfs sys /sys

Sollte auf dem Festplattensystem noch kein cryptsetup installiert sein, so ist nun der richtige Zeitpunkt, es zu tun.

  • 'cryptsetup' (universe, [3])

Nur Edgy: /usr/share/initramfs-tools/hooks/cryptroot editieren

Benutzt man Ubuntu Edgy Eft, so ist etwas mehr Arbeit erforderlich. Die Datei '/usr/share/initramfs-tools/hooks/cryptroot' auf dem Festplattensystem muss editiert werden. Dazu öffnet an die Datei mit einem mit einem Editor [5] (es empfiehlt sich hier ein Konsoleneditor wie z.B. nano) und ändert den Inhalt der Datei von

force_load dm_mod
force_load dm_crypt
modules=$(get_root_modules $node | sort | uniq)
if [ -z "$modules" ]; then
        echo "$0: failed to determine cipher modules to load"
       exit 1
fi

in

force_load dm_mod
force_load dm_crypt
force_load aes
modules=$(get_root_modules $node | sort | uniq)
if [ -z "$modules" ]; then
        echo "$0: failed to determine cipher modules to load"
#       exit 1
fi

/etc/initramfs-tools/modules editieren

Als nächstes wird die Datei '/etc/initramfs-tools/modules' mit einem Editor geöffnet und folgende Zeilen hinzugefügt:

aes_dm-crypt_dm-mod_sha256}

Hier ist es natürlich auch möglich, anstatt aes (Hardy: „aes_generic“) das Modul aes_i586 (Hardy: „aes-i586“) oder aes-x86_64 anzugeben (Hinweis am Anfang der Seite), falls man den entprechenden Prozessor hat. aes-x86_64 funktioniert nur mit der 64bit-Version!

/etc/fstab editieren

In der Datei '/etc/fstab' müssen die Einträge für das Root- und Home-Dateisystem angepasst werden, da von nun an ja nicht mehr die (verschlüsselte) Gerätedatei '/dev/sdx' sondern das „gemappte“ (entschlüsselte) Device verwendet werden soll:

# /dev/sda3
UUID=7153f497-1b66-476d-bb3b-85e3fe18b402 /               ext3    defaults,errors=remount-ro 0       1

muss (für das Root-Dateisystem) in

cryptsetup} geändert werden und für die Home-Partition muss

cryptsetup} in

cryptsetup} umgewandelt werden. Die [:fstab:UUIDs] sind hier nur Beispiele.

/etc/crypttab editieren

In der Datei '/etc/crypttab' wird folgender Inhalt hinzugefügt:

sha256} Das bewirkt, ähnlich wie die '/etc/fstab', dass die verschlüsselten Gerätedateien '/dev/sda3' und '/dev/sda4' beim Systemstart entschlüsselt und unter '/dev/mapper/root' bzw. '/dev/mapper/home' eingehängt werden.

/boot/grub/menu.lst editieren

Zum Schluss muss noch in der Datei '/boot/grub/menu.lst'

cryptsetup} in

cryptsetup} geändert werden und

cryptsetup} durch

cryptsetup} ersetzt werden. Danach werden die automatisch erzeugten Einträge mit

cryptsetup} neu erstellt. Die Änderungen bewirken unter anderem, dass der Boot-Splash beim Systemstart deaktiviert wird, damit die Passwortabfrage einwandfrei funktioniert. Ab Kernel 2.6.22-14 ist es nicht mehr nötig splash zu entfernen da die Abfrage des System Passwortes in den grafischen Bootscreen integriert wurde.

cryptsetup}

Unter Edgy: /etc/event.d/rcS editieren

Weil [:Upstart:] in Edgy Probleme macht, muss noch in '/etc/event.d/rcS'

console_owner} oben eingefügt werden.

Änderungen Übernehmen und chroot-Umgebung verlassen

Um die Änderungen an der Datei '/etc/initramfs-tools/modules' zu übernehmen, muss noch

cryptsetup} ausgeführt werden. Dann kann man die chroot-Umgebung verlassen, das System neu starten und ohne Live-CD booten.

cryptsetup} Beim Startvorgang wird man nach dem Passwort für die Root-Partition gefragt. Ist dieses korrekt, so wird der Systemstart fortgesetzt und man wird nach dem Home-Passwort gefragt.

Das System ist nun bis auf den Auslagerungsspeicher und die Boot-Partition ('/boot') voll verschlüsselt!

Optional: Auslagerungsspeicher verschlüsseln

Einleitung

Die Ubuntu-Installation ist nun abgesichert, allerdings ist der [:Swap:Auslagerungsspeicher] noch unverschlüsselt. So ist es bösartigen Individuen unter Umständen also möglich, Teile des ausgelagerten Arbeitsspeichers auszulesen und so an Passwörter und andere Schützenswerte Daten zu gelangen. Aus diesem Grund sollte auch der Auslagerungsspeicher wie folgt verschlüsselt werden:

Editieren der Konfigurationsdateien

cryptsetup}

cryptsetup} In der Datei '/etc/crypttab' wird die Zeile

random_swap} Sollte der Rechner nun beim Hochfahren stehen bleiben, liegt das an '/dev/random'. In diesem Fall sollte man '/dev/urandom' verwenden, dass löst dieses Problem.

urandom_swap} hinzugefügt. Dadurch wird die Swap-Partition beim Starten mit Zufallsdaten verschlüsselt. Damit der verschlüsselte Auslagerungsspeicher auch benutzt wird, muss dies noch in der Datei '/etc/fstab' eingetragen werden. Der Abschnitt:

cryptsetup} wird in

cryptsetup} abgeändert.

Systemneustart

Nachdem das System neugestartet wurde, wird der nun verschlüsselte Auslagerungsspeicher von Ubuntu benutzt.

System Wiederherstellen

Sollte man aus irgendeinem Grund ein Verschlüsseltes System wieder entschlüsseln wollen, so muss zuerst wieder von einem Live-System gestartet (siehe oben).

Live-System vorbereiten

Wie gehabt muss das folgende Paket im Live-System installiert werden und [2]:

* 'cryptsetup' (universe [3]) Auch die benötigten Kernelmodule müssen wieder geladen werden:

cryptsetup}

Einhängepunkte erstellen und belegen

Es werden nun Einhängepunkte erstellt, in die die verschlüsselten Partitionen gemountet werden:

cryptsetup}

Daten kopieren

Die entschlüsselten Daten liegen nun in den Ordnern '/media/root' und '/media/home'. Von hier aus können sie nun beispielsweise auf eine externe Festplatte kopiert werden. Dann wird das System neu partitioniert (wie zum Beispiel weiter oben [#Part beschrieben]) und die Daten aus '/media/root' auf die neu angelegte Root-Partition bzw. aus '/media/home' auf die neue Home-Partition verschoben.

Konfigurationsdateien anpassen

Im neuen System sollten nun noch die Konfigurationsdateien '/etc/fstab', '/etc/crypttab' und '/boot/grub/menu.lst' auf den neuen Partitionen angepasst werden:

* Aus der Datei '/etc/fstab' werden jene Einträge, die mit /dev/mapper/ beginnen durch der neuen Partitionierung entsprechende Einträge wie [:Datenträger:hier] ersetzt. * In der Datei '/etc/crypttab' werden alle Einträge gelöscht * In der Datei '/boot/grub/menu.lst' werden die oben beschriebenen Änderungen wieder rückgängig gemacht.

System neustarten

Nach einem Neustart des Systems sollte man nun wieder mit einem unverschlüsseltem Ubuntu arbeiten können.


# tag: Installation, Sicherheit, System

 
Nach oben
cryptsetup/crypt_system.txt · Zuletzt geändert: 2024/02/29 13:36 von 127.0.0.1
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0
DFmW2CEce3htPL1uNQuHUVu4Tk6WXigFQp   Dogecoin Donations Accepted Here    DFmW2CEce3htPL1uNQuHUVu4Tk6WXigFQp  DFmW2CEce3htPL1uNQuHUVu4Tk6WXigFQp