[[Vorlage(Getestet, lucid, precise, quantal, raring)]] {{{#!vorlage Wissen [:Ubuntu_Installation: Ubuntu installieren] [:Internetzugang: Internetverbindung einrichten] [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Partitionierung: Festplatten in Partitionen einteilen] [:LUKS:Verschlüsselte Partitionen mit LUKS] [:Logical_Volume_Manager: Partitionen mit LVM erstellen] [:Skripte/Gerät_mit_Pseudozufallszahlen_überschreiben:Gerät mit Pseudozufallszahlen überschreiben] [:Editor: Einen Editor öffnen] [:Systeminformationen_ermitteln#Festplatten:] [:GRUB_2/Konfiguration:Bootloader konfigurieren] }}} [[Vorlage(Fortgeschritten)]] {{{#!vorlage Warnung Das Verschlüsseln von Daten kann der Sicherheit bei der Wahrung der Privatsphäre oder sensibler Daten dienen, beinhaltet aber in der Konsequenz, dass eine eventuell zukünftig notwendige Datenrettung durch eine manuelle Entschlüsselung erschwert werden kann. Eine Entscheidung für oder gegen eine Datenverschlüsselung sollte daher nicht leichtfertig erfolgen. Empfohlen wird eine individuelle Nutzen-Risiko-Abwägung bezogen auf Anwendungsbereich, Computerkenntnisse des Nutzers oder ähnliche Faktoren, um die Gefahr eines späteren Datenverlusts zu minimieren. }}} {{{#!vorlage Hinweis Ohne ein sicheres Kennwort nutzt die stärkste Verschlüsselung nicht! Wie man Passwörter am besten wählt, steht hier: [:Sicherheits 1x1#Passwoerter:] }}} [[Inhaltsverzeichnis]] 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 [:Energiesparmodi_mit_ACPI#ACPI-SUSPEND-Modi-S0-S1-S2-S3-S4-S5:Ruhezustand (S4)] noch funktioniert und er, was die Partitionierung angeht, sehr flexibel ist. {{{#!vorlage Hinweis LVM ist eine Speziallösung, die in erster Linie für Server sowie Desktops mit mehr als einer Festplatte interessant sind. Für Desktops mit nur einer Festplatte oder Notebooks sollte die normale [:Partitionierung: Partitionierungsmethode] verwendet werden! }}} Alternativ ist es auch möglich, das System [:System verschlüsseln/Schlüsselableitung:ohne LVM zu verschlüsseln], jedoch ist diese Variante weniger flexibel, was nachträgliche Partitionsänderungen angeht. Außerdem kann man das System auch mit der [:System_verschlüsseln/Alternate_Installation:nicht-grafischen Installation verschlüsseln], was die Option der Wahl ist, wenn keine Internet-Verbindung zur Verfügung steht. Eine Variante, bei der das System wahlweise per Passwort oder externem Medium entschlüsselt werden kann, findet sich in [:System_verschlüsseln/System-Entschlüsselung_mit_SD-Karte_oder_Passwort:System-Entschlüsselung mit SD-Karte oder Passwort]. = 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 schiefgehen. 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 [:Logical_Volume_Manager: LVM] und [:LUKS:], dies wird aber durch die Installation der folgenden Pakete [3] korrigiert: {{{#!vorlage Paketinstallation lvm2 }}} {{{#!vorlage Hinweis Alle 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 bis einschließlich Jaunty in einem Terminal [4] durch Eingabe von {{{#!vorlage Befehl modprobe dm-crypt }}} die benötigten [:Kernelmodule:] geladen. == Partitionierung == {{{#!vorlage Hinweis '''/dev/sdX1''' bzw. '''/dev/sdX2''' müssen im folgenden immer durch die tatsächlichen Bezeichnung[10] der Partitionen ersetzt werden! }}} Zwei Partitionen werden benötigt [5]: * '''/dev/sdX1''' (ext4) * Boot-Partition (unverschlüsselt) * Größe: mindestens 120 MB (mehr ist im Regelfall aber nicht nötig ggf. müssen nur nach einigen Updates alte Kernelpakete deinstalliert werden) * '''/dev/sdX2''' (unformatiert) * verschlüsseltes LVM-Volume * Größe: üblicherweise der verfügbare Rest, aber mindestens 8 GB (root + Arbeitsspeicher) == Verschlüsselung der Partition == {{{#!vorlage Warnung 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 [wikipedia_en:XEX-TCB-CTS#XTS:XTS] mit 256 Bit [wikipedia:Advanced_Encryption_Standard:AES] sähen die Befehle [4] wie folgt aus: {{{#!vorlage Befehl cryptsetup -c aes-xts-plain -s 512 luksFormat /dev/sdX2 cryptsetup luksOpen /dev/sdX2 lukslvm }}} 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] {{{#!vorlage Befehl pvcreate /dev/mapper/lukslvm vgcreate vgubuntu /dev/mapper/lukslvm }}} Bei einer Standard-Installation von Ubuntu werden zwei Partitionen angelegt, eine für den [:Swap: 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: {{{#!vorlage Befehl lvcreate -L 1300M -n swap vgubuntu lvcreate -l 100%FREE -n root vgubuntu }}} 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. Wegen Problemen mit dem Live-CD-Installer müssen alle Partitionen vorher manuell formatiert werden: {{{#!vorlage Befehl mkswap /dev/mapper/vgubuntu-swap mkfs.ext4 /dev/mapper/vgubuntu-root }}} = Installation = [[Bild(Partitionierung.png, 250, right)]] Danach wird das Installationsprogramm gestartet [1] und mit diesem bis [:Ubuntu_Installation#Schritt-4-Auswahl-der-Partition-Partitionierung: 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-Partition braucht nicht ausgewählt zu werden, da sie automatisch erkannt wird. * '''/dev/sdX1''' * Boot-Partition * Dateisystem: '''ext4''' * Formatieren: ja * Einhängepunkt: '''/boot''' * '''/dev/mapper/vgubuntu-root''' * Root-Partition * Dateisystem: '''ext4''' oder gewünschtes [:Dateisystem#Linux-Dateisysteme:Linux-Dateisystem] * Formatieren: ja * Einhängepunkt: '''/''' Danach wird gemäß Anleitung [1] mit der Installation fortgefahren, jedoch nach dem Abschluss der Installation __nicht neugestartet__. {{{#!vorlage Warnung Eventuelle Änderungen an Partitionen können __nicht__ mehr rückgängig gemacht werden! }}} {{{#!vorlage Experten 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 [:Ubuntu_Installation#Schritt-7-berpruefung-und-Auswahl-Speicherort-Bootloader: Installations-Punkt 7] unter ''"Erweitert"'' eingestellt. Dort wird anstelle von '''hd0''' die Boot-Partition ausgewählt. GRUB erscheint dann, sobald [[Vorlage(Tasten, esc)]] im Truecrypt-Bootloader gedrückt wird. }}} == Ins verschlüsselte System wechseln == {{{#!vorlage 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: {{{#!vorlage Befehl mount /dev/mapper/vgubuntu-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: {{{#!vorlage Befehl apt-get install cryptsetup lvm2 }}} === /etc/crypttab editieren === {{{#!vorlage Hinweis Gegebenenfalls ist die Datei '''/etc/crypttab''' noch nicht vorhanden. Mit der unten beschriebenen kompakten Methode lässt diese sich einfach erstellen. Grundsätzlich ist die crypttab wie folgt aufgebaut: {{{#!code \}}} }}} Zuerst muss die [:UUID:] der verschlüsselten Partition ermittelt werden. Das geschieht mit folgendem Befehl: {{{#!vorlage Befehl blkid /dev/sdX2 }}} Daraufhin wird mit dieser Eingabe die nötige Zeile in '''/etc/crypttab''' eingefügt, wobei `` vorher durch die ermittelte UUID ersetzt werden muss (falls zuvor, beim Öffnen der verschlüsselten Partition mit `luksOpen`, ein anderer Name als lukslvm angegeben wurde, dann muss genau dieser eingetragen werden - weicht der Eintrag in /etc/crypttab vom aktuell verwendeten Namen ab, kann beim Neustart die Partition nicht entschlüsselt werden): {{{#!vorlage Befehl echo "lukslvm UUID= none luks" >> /etc/crypttab }}} Neuere Versionen von cryptsetup können die UUID auch selbst ermitteln: {{{#!vorlage Befehl cryptsetup luksUUID /dev/sdXY }}} oder kompakt: {{{#!vorlage Befehl printf "lukslvm\tUUID="%s"\tnone\tluks\n" "$(cryptsetup luksUUID /dev/sdXY)" | tee -a /etc/crypttab }}} === /etc/modules editieren === Nun muss noch unter '''/etc/modules''' das dm-crypt-Modul hinzugefügt werden, falls es dort noch nicht existiert: {{{#!vorlage Befehl echo "dm-crypt" >> /etc/modules }}} === /etc/initramfs-tools/modules editieren === Wird nicht der Standard-Kernel (Generic) verwendet, muss man ggf. über die Initramfs dafür sorgen, dass während des Bootvorgangs alle benötigten Module vorhanden sind: {{{#!vorlage Befehl echo "aes" >> /etc/initramfs-tools/modules echo "aes_i586" >> /etc/initramfs-tools/modules echo "aes_x86_64" >> /etc/initramfs-tools/modules echo "aes_generic" >> /etc/initramfs-tools/modules echo "dm-crypt" >> /etc/initramfs-tools/modules echo "dm-mod" >> /etc/initramfs-tools/modules echo "sha256" >> /etc/initramfs-tools/modules echo "sha256_generic" >> /etc/initramfs-tools/modules echo "lrw" >> /etc/initramfs-tools/modules echo "xts" >> /etc/initramfs-tools/modules echo "crypto_blkcipher" >> /etc/initramfs-tools/modules echo "gf128mul" >> /etc/initramfs-tools/modules }}} === Kernel-Initramfs aktualisieren === Um die Änderungen an der crypttab zu übernehmen, muss noch {{{#!vorlage Befehl update-initramfs -u -k all }}} ausgeführt werden. === GRUB-Konfiguration aktualisieren/überprüfen === Wenn die root-Partition mit aktiviertem "data journaling" gemountet werden soll, muss bereits beim Kernelstart ein entsprechender Kernel-Parameter angegeben werden. Der Eintrag in der '''/etc/fstab''' reicht dann nicht mehr aus, weil diese Datei erst dann gelesen werden kann, wenn das root-Dateisystem bereits entschlüsselt und in das System eingehängt wurde. Unter '''/etc/default/grub''' editiert man die GRUB-Datei folgendermaßen: {{{#!code sh GRUB_CMDLINE_LINUX_DEFAULT="kopt=root=/dev/mapper/vgubuntu-root" }}} == Beenden/Neustart == Mit den folgenden Befehlen wird die Chroot-Umgebung geschlossen, die Boot- und Root-Partition sauber ausgehängt, Luks beendet und das System neugestartet. Beim Bootvorgang sollte dann nach dem Passwort gefragt werden. {{{#!vorlage Befehl exit sync umount /mnt/sys umount /mnt/proc umount /mnt/dev/pts umount /mnt/dev umount /mnt/boot umount /mnt lvchange -a n vgubuntu cryptsetup luksClose lukslvm reboot }}} = Passwort ändern = Durch das vom Benutzer eingegebene Passwort wird lediglich ein Master-Schlüssel entschlüsselt, welche letztendlich für die Sicherheit des Dateisystems verwendet wird. Das hier verwendete LUKS ermöglicht es somit, dass das Passwort leicht geändert werden kann, ohne dass das ganze Dateisystem neu verschlüsselt werden muss. Der Generalschlüssel bleibt letztendlich der gleiche. Es können sogar mehrere Schlüssel (bis zu 8 Stück) gleichzeitig verwendet werden, der Generalschlüssel liegt dann einfach mehrfach mit den jeweils verwendeten Passwort vor, bei der Passwortabfrage muss dann nur der jeweilige Slot entsperrt werden können. {{{#!vorlage Hinweis Bei einem Angriff auf das verschlüsselte System reicht es bereits, einen Slot zu entschlüsseln. Es ist also darauf zu achten, dass alle verwendeten Passwörter ausreichend sicher sind. Mehrere Passwörter zu verwenden, ist vor allem bei einem Mehrbenutzersystem sinnvoll. Alternativ lässt sich ein Zweitpasswort setzen, falls man das eigentlich verwendete Passwort vergisst. Auch kann man dasselbe Passwort in einem weiteren Slot abspeichern, um sich so vor Dateisystemfehlern in einem der Slots zu schützen. }}} == Schlüssel hinzufügen == Der folgende Befehl fügt einen Schlüssel zum angegeben Laufwerk hinzu: {{{#!vorlage Befehl sudo cryptsetup luksAddKey /dev/sdX2 }}} == Schlüssel entfernen == {{{#!vorlage Warnung Hier kann man sich unter Umständen vom System aussperren, sofern man nicht aufpasst. Bei einer Passwortänderung zunächst das gewünschte Passwort anlegen, eventuell testen und erst dann das alte Passwort löschen. }}} Der folgende Befehl entfernt nachfolgend eingegebenen Schlüssel: {{{#!vorlage Befehl cryptsetup luksRemoveKey /dev/sdX2 }}} = Probleme beim Start = Sind nur einzelne Partitonen verschlüsselt, die beim Start eingehängt werden sollen, kommt es dazu, dass dem Benutzer angeboten wird, das Einhängen abzubrechen, bevor der Schlüssel eingegeben werden kan. Um dies zu verhindern, fügt man in die /etc/init/mountall.conf hinter {{{#!code bash # temporary, until we have progress indication # and output capture (next week :p) console output }}} den folgenden Codeblock ein: {{{#!code bash pre-start script . /lib/cryptsetup/cryptdisks.functions case "$CRYPTDISKS_ENABLE" in [Nn]*) exit 1 ;; esac INITSTATE="init" do_start end script }}} Dadurch wartet das System, bis die Codeingabe abgeschlossen ist. = Probleme unter Ubuntu 10.04 = Es kann vorkommen, dass fest eingebundene, verschlüsselte Partitionen auf der Oberfläche erscheinen, sich diese Symbole jedoch nicht verwenden lassen. Es kommt zu einer Fehlermeldung. Die Anzeige lässt sich unterbinden, indem man im Verzeichnis '''/etc/udev/rules.d''' eine '''99-hide-partitions.rules''' anlegt, und dort folgendes einträgt: {{{#!code KERNEL=="sd?", ENV{UDISKS_PRESENTATION_HIDE}="1" }}} Es ist darauf zu achten, dass "sd?" durch die zu versteckende Partition ersetzt wird. = Probleme unter Ubuntu 11.10 und 12.04 LTS = * Unter Ubuntu 11.10 und 12.04 LTS funktioniert diese Anleitung unter Umständen nicht, was im Forum unter [topic:system-verschluesseln-geht-mit-11-10-nicht-mehr:] (detaillierte Fehlermeldung) und [topic:cryptsetup-findet-luks-device-nicht:] dargestellt ist. Abhilfe schafft die Installation von der [:System_verschlüsseln/Alternate_Installation:Alternate-CD]. * Wenn man beim Booten keinen Zugriff auf die entsprechende verschlüsselte LVM-Partition bekommt, fehlt vielleicht der Ordner '''/run/lock/''', worauf der bestehende [:Symlink:] '''/var/lock''' zeigt. Im obigen Abschnitt chroot greift "`update-initramfs -u -k all`" auf das LVM zu, um die '''/etc/crypttab''' auszulesen, um wiederum die nötigen Infos in die Ramdisk '''initrd.img-KERNELVERSION-generic''' zu schreiben. Das Auslesen der '''/etc/crypttab''' schlägt jedoch fehl, wenn das LVM-System nicht einen Ordner '''lvm''' unterhalb von '''/var/lock/''' anlegen kann, was nicht funktioniert, wenn '''/run/lock/''' nicht existiert. Auch ein schlichter Aufruf von `pvs` bzw. `lvs` schlägt dann schon fehl. Somit fehlt in der Ramdisk die Datei '''conf/conf.d/cryptroot''', in welcher der Hinweis auf die verschlüsselte Boot-Partition zu finden ist. Wird der fehlende Ordner von Hand angelegt, funktioniert `update-initramfs` und somit auch das Booten von der verschlüsselten LVM-Partition. * Ein weiteres Problem wird im Bug [bug:816267:] geschildert: Nach dem Laden von GRUB verhindert [:Plymouth:] die Passwortabfrage. Verschiedene Lösungsmöglichkeiten finden sich in den entsprechenden [:Plymouth#System-bleibt-haengen: Unterabschnitten] des Plymouth-Artikels. Die einfachste bzw. schnellste Möglichkeit ist der Eintrag folgender Zeile in '''/etc/default/grub''':{{{#!code bash GRUB_CMDLINE_LINUX_DEFAULT="noplymouth" }}}Anschließend noch ein{{{#!vorlage Befehl sudo update-grub }}}ausführen. = Alternative - Installation mit Hilfe eines Skripts = [http://readm3.org/os/ubuntu/full-disk-encryption-lvm-luks.sh full-disk-encryption-lvm-luks.sh] {en} ist ein OpenSource-[:Shell:]-Skript, welches ebenfalls ein via LUKS/LVM vollverschlüsseltes Ubuntu-System installieren kann. Das halbautomatische Skript erleichtert einem die Arbeit, da keine komplizierten Befehlsfolgen eingegeben werden müssen. Außerdem braucht man so im Vergleich zu einer Standardinstallation nur wenige Minuten länger, um ein vollverschlüsseltes System zu installieren. [[Vorlage(Fremd, Software)]] Sollte man sich für diese Methode entscheiden: 1. Von CD booten, um eine Live-Session zu starten. 1. Skript herunterladen und ausführen. Dazu einfach ein Terminal öffnen und folgende Befehle ausführen (Kopieren und Einfügen empfohlen): {{{#!vorlage Befehl wget "http://readm3.org/_export/code/os/ubuntu/full-disk-encryption-lvm-luks.sh?codeblock=1" -O "/tmp/full-disk-encryption-lvm-luks.sh" chmod a+rx /tmp/full-disk-encryption-lvm-luks.sh sudo /tmp/full-disk-encryption-lvm-luks.sh }}} 1. Den Anweisungen des Skripts folgen. Sofern man sich für die Hintergründe interessiert, findet sich im Artikel "[http://readm3.org/de/os/ubuntu/full-disk-encryption-lvm-luks Vollverschlüsseltes System mit Ubuntu (ab 9.04 Jaunty), LVM und LUKS]" {de} eine detaillierte Beschreibung. = Alternatives Entschlüsseln der Systempartition mit einem USB-Schlüssel = Möchte man das System mit Hilfe eines USB-Sticks entschlüsseln (ohne eine offensichtliche Schlüsseldatei auf besagtem Stick zu haben, der Stick kann demnach auch beliebig formatiert werden), hilft der Artikel [:System_verschlüsseln/Entschlüsseln_mit_einem_USB-Schlüssel:Entschlüsseln mit einem USB-Schlüssel] weiter. = Links = * [:Sicherheit:] {Übersicht} Übersichtsseite #tag: System, Sicherheit, Installation, Vollverschlüsselung, Systemverschlüsselung, Server