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:
Mit dieser Anleitung lässt sich das Betriebssystem bis auf die 039;/boot
039; 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).
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.
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:
* 039;/dev/sda1
039; (ext2)
* 039;/dev/sda2
039; (swap)
* 039;/dev/sda3
039; (ext3)
* 039;/dev/sda4
039; (ext3)
Das existierende System kann dabei auch auf 039;/
039; bleiben. Die für die jeweiligen Partitionen benötigten Dateien können dann später an die richtige Stelle verschoben werden.
Zuerst wird im Live-System das folgende Paket installiert [2]:
039;cryptsetup
039; (bis Feisty in universe
[3])
Die folgenden Befehle benötigen [:sudo: Root-Rechte]. Man sollte also entweder immer 039;sudo
039; vor das betreffende Kommando setzen oder mit 039;sudo -s
039; 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.
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
Als nächstes wird der existierende Boot-Ordner (sofern er nicht schon auf einer separaten Partition liegt) von 039;/
039; auf die neue Partition verschoben:
cp -avx root/boot/* boot/ umount boot
Sollte sich 039;/boot
039; auf eine eigene Partition verschoben worden sein, so sollte unbedingt darauf geachtet werden, dass in der Datei 039;/media/root/etc/fstab
039; ein [:fstab:entsprechender Eintrag] angelegt wird!
039;/boot
039; (im Beispiel also 039;/dev/sda1
039;) ist die einzige Partition, die unverschlüsselt bleibt.
Sofern nicht schon geschehen, sollten nun die Dateien auf der Root-Partition (039;/dev/sda3
039;) 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
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 039;/dev/sda3
039; 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 039;/dev/sda3
039; mit dem AES-Algorithmus. Das Argument 039;-y
039; erzwingt eine doppelte Passwortabfrage beim Anlegen des Volumes und 039;-s
039; 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.
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
Auch die Daten aus 039;/media/home
039; müssen gesichert werden. Dann sollte man die Partition aushängen:
mkdir root/backup cp -ax home/* root/backup umount home
Der Nachfolgende Befehl löscht 039;sämtliche
039; Dateien auf der betreffenden Partition unwiederbringlich! Man sollte ihn nur ausführen, wenn man wie oben beschrieben ein Backup der Daten auf 039;/dev/sda4
039; 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 039;/dev/sda4
039; mit dem AES-Algorithmus.
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 039;/boot
039;) 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!)
Falls ein frisches System installiert werden sollte ist nun der richtige Zeitpunkt. [7]
Wie die swap Partition auch verschlüsselt werden kann, ist weiter unten im Punkt „Auslagerungsspeicher verschlüsseln“ beschrieben. (Kann nach der Systeminstallation erfolgen)
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.
039;cryptsetup
039; (universe
, [3])
Benutzt man Ubuntu Edgy Eft, so ist etwas mehr Arbeit erforderlich. Die Datei 039;/usr/share/initramfs-tools/hooks/cryptroot
039; 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
Als nächstes wird die Datei 039;/etc/initramfs-tools/modules
039; mit einem Editor geöffnet und folgende Zeilen hinzugefügt:
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!
In der Datei 039;/etc/fstab
039; 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 039;/dev/sdx
039; 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.
In der Datei 039;/etc/crypttab
039; wird folgender Inhalt hinzugefügt:
sha256}
Das bewirkt, ähnlich wie die 039;/etc/fstab
039;, dass die verschlüsselten Gerätedateien 039;/dev/sda3
039; und 039;/dev/sda4
039; beim Systemstart entschlüsselt und unter 039;/dev/mapper/root
039; bzw. 039;/dev/mapper/home
039; eingehängt werden.
Zum Schluss muss noch in der Datei 039;/boot/grub/menu.lst
039;
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.
Weil [:Upstart:] in Edgy Probleme macht, muss noch in 039;/etc/event.d/rcS
039;
console_owner} oben eingefügt werden.
Um die Änderungen an der Datei 039;/etc/initramfs-tools/modules
039; 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 (039;/boot
039;) voll verschlüsselt!
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:
cryptsetup}
In der Datei 039;/etc/crypttab
039; wird die Zeile
random_swap}
Sollte der Rechner nun beim Hochfahren stehen bleiben, liegt das an 039;/dev/random
039;. In diesem Fall sollte man 039;/dev/urandom
039; 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 039;/etc/fstab
039; eingetragen werden. Der Abschnitt:
cryptsetup} wird in
cryptsetup} abgeändert.
Nachdem das System neugestartet wurde, wird der nun verschlüsselte Auslagerungsspeicher von Ubuntu benutzt.
Sollte man aus irgendeinem Grund ein Verschlüsseltes System wieder entschlüsseln wollen, so muss zuerst wieder von einem Live-System gestartet (siehe oben).
Wie gehabt muss das folgende Paket im Live-System installiert werden und [2]:
* 039;cryptsetup
039; (universe
[3])
Auch die benötigten Kernelmodule müssen wieder geladen werden:
Es werden nun Einhängepunkte erstellt, in die die verschlüsselten Partitionen gemountet werden:
Die entschlüsselten Daten liegen nun in den Ordnern 039;/media/root
039; und 039;/media/home
039;. 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 039;/media/root
039; auf die neu angelegte Root-Partition bzw. aus 039;/media/home
039; auf die neue Home-Partition verschoben.
Im neuen System sollten nun noch die Konfigurationsdateien 039;/etc/fstab
039;, 039;/etc/crypttab
039; und 039;/boot/grub/menu.lst
039; auf den neuen Partitionen angepasst werden:
* Aus der Datei 039;/etc/fstab
039; werden jene Einträge, die mit /dev/mapper/
beginnen durch der neuen Partitionierung entsprechende Einträge wie [:Datenträger:hier] ersetzt.
* In der Datei 039;/etc/crypttab
039; werden alle Einträge gelöscht
* In der Datei 039;/boot/grub/menu.lst
039; werden die oben beschriebenen Änderungen wieder rückgängig gemacht.
Nach einem Neustart des Systems sollte man nun wieder mit einem unverschlüsseltem Ubuntu arbeiten können.
# tag: Installation, Sicherheit, System