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 '/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).
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:
* '/dev/sda1
' (ext2)
* '/dev/sda2
' (swap)
* '/dev/sda3
' (ext3)
* '/dev/sda4
' (ext3)
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.
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.
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 '/
' 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.
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
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.
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 '/media/home
' 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 '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.
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!)
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.
'cryptsetup
' (universe
, [3])
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
Als nächstes wird die Datei '/etc/initramfs-tools/modules
' 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 '/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.
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.
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.
Weil [:Upstart:] in Edgy Probleme macht, muss noch in '/etc/event.d/rcS
'
console_owner} oben eingefügt werden.
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!
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 '/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.
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]:
* 'cryptsetup
' (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 '/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.
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.
Nach einem Neustart des Systems sollte man nun wieder mit einem unverschlüsseltem Ubuntu arbeiten können.
# tag: Installation, Sicherheit, System