Quelle((http://wiki.ubuntuusers.de/System_verschlüsseln)) 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: [[http://verschluesselung.info/linux/ubuntu-dateisystem/|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 1x1]) ''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 == [[Anker(Part)]] === 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 {{{# /dev/sda3 # UUID=7153f497-1b66-476d-bb3b-85e3fe18b402 / ext3 defaults,errors=remount-ro 0 1 /dev/mapper/root / ext3 defaults,errors=remount-ro 0 1 }}} geändert werden und für die Home-Partition muss {{{# /dev/sda4 UUID=ab5f1dca-45c1-4c66-8cfb-e6ca84ec6650 /home ext3 defaults 0 2 }}} in {{{# /dev/sda4 # UUID=ab5f1dca-45c1-4c66-8cfb-e6ca84ec6650 /home ext3 defaults 0 2 /dev/mapper/home /home ext3 defaults 0 0 }}} umgewandelt werden. Die [:fstab:UUIDs] sind hier nur Beispiele. === /etc/crypttab editieren === In der Datei '''/etc/crypttab''' wird folgender Inhalt hinzugefügt: {{{root /dev/sda3 none luks,retry=1,cipher=aes-cbc-essiv:sha256 # ab Kernel 2.6.20 (gutsy, feisty): cipher=aes-lrw-benbi home /dev/sda4 none luks,retry=1,cipher=aes-cbc-essiv:sha256 # ab Kernel 2.6.20 (gutsy, feisty): cipher=aes-lrw-benbi }}} 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''' {{{# kopt=root=/dev/sda3 ro }}} in {{{# kopt=root=/dev/mapper/root ro }}} geändert werden und {{{# defoptions=quiet splash }}} durch {{{# defoptions=quiet }}} ersetzt werden. Danach werden die automatisch erzeugten Einträge mit {{{#!vorlage Befehl sudo update-grub }}} 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. {{{#!vorlage Hinweis Falls nach Eingabe von ``update-grub`` die Fehlermeldung "findfs Unable to resolve [UUID der Boot-Partition]" kommt, sollte man den entsprechenden Eintrag in der '''/etc/fstab''' auf die entsprechende Partition (hier: '''/dev/sda1''') ändern. Sonst kommt nach dem Neustart das böse Erwachen: Nach Auswahl des Boot-Eintags in Grub bekommt man nur noch "Error 15: File not found" zu sehen. Siehe Forenbeitrag: [http://forum.ubuntuusers.de/topic/104522/ Grub Error 15 - File not found] {de} }}} === 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 {{{#!vorlage Befehl update-initramfs -u ALL }}} ausgeführt werden. Dann kann man die chroot-Umgebung verlassen, das System neu starten und ohne Live-CD booten. {{{#!vorlage Befehl exit reboot }}} 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 === {{{#!vorlage Warnung Der Ruhezustand (Suspend-To-Disk) wird bei verschlüsseltem Auslagerungsspeicher nicht mehr funktionieren, da sich bei jedem Starten das Passwort für die Swap-Partition ändert! }}} {{{#!vorlage Hinweis Die folgenden Anpassungen können im laufenden Festplattensystem durchgeführt werden. Ein Start von der Live-CD ist also nicht nötig! }}} In der Datei '''/etc/crypttab''' wird die Zeile {{{swap /dev/sda2 /dev/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. {{{swap /dev/sda2 /dev/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: {{{# /dev/sda2 UUID=ca8152bb-c6f6-4f91-a56d-39d48d03ef9d none swap sw 0 0 }}} wird in {{{# /dev/sda2 /dev/mapper/swap none swap sw 0 0 }}} 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: {{{#!vorlage Befehl sudo -s modprobe aes modprobe dm-crypt modprobe dm-mod exit }}} === Einhängepunkte erstellen und belegen === Es werden nun Einhängepunkte erstellt, in die die verschlüsselten Partitionen gemountet werden: {{{#!vorlage Befehl sudo -s mkdir /media/{root,home} cd /media cryptsetup luksOpen /dev/sda3 root mount /dev/mapper/root root cryptsetup luksOpen /dev/sda4 home mount /dev/mapper/home home exit }}} === 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. == Links == * [http://de.wikipedia.org/wiki/Dm-crypt Wikipedia über Dm-Crypt & LUKS] {de} * [http://de.wikipedia.org/wiki/Advanced_Encryption_Standard Die AES-Verschlüsselung] {de} * [http://www.linux-magazin.de/heft_abo/ausgaben/2006/10/loechriger_kaese/ Artikel im Linux-Magazin u.a. auch über cryptsetup & LUKS] {de} * [http://verschluesselung.info Verschlüsselung in der Praxis: Anleitungen zum Verschlüsseln von Daten und Kommunikation] {de} * [http://verschluesselung.info/linux/usb/ USB-Stick verschlüsseln oder externe Festplatte verschlüsseln mit Ubuntu] {de} * [http://luks.endorphin.org/ Hompage des Linux Unified Key Setup (LUKS)] {en} ---- # tag: Installation, Sicherheit, System