[[Vorlage(Getestet, hardy, lucid, maverick, natty, oneiric)]] {{{#!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] }}} [[Vorlage(Fortgeschritten)]] {{{#!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:] }}} [[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 cryptsetup, ab Karmic bereits vorhanden }}} {{{#!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 der Partitionen ersetzt werden! }}} Zwei Partitionen werden benötigt [5]: * '''/dev/sdX1''' (ext3) * 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.ext3 /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: '''ext3''' * Formatieren: ja * Einhängepunkt: '''/boot''' * '''/dev/mapper/vgubuntu-root''' * Root-Partition * Dateisystem: '''ext3''' 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 === 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 }}} === /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: {{{ 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/boot umount /mnt cryptsetup luksClose vgubuntu-root 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 den Schlüssel aus Slot 1 vom angegeben Laufwerk: {{{#!vorlage Befehl sudo cryptsetup luksDelKey /dev/sdX2 1 }}} = 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: {{{ KERNEL=="sd?", ENV{UDISKS_PRESENTATION_HIDE}="1" }}} Es ist darauf zu achten, dass "sd?" durch die zu versteckende Partition ersetzt wird. = Probleme unter Ubuntu 10.10 = Kommt es nach abgeschlossener Verschlüsselung zu Boot-Problemen, liegt die Ursache häufig darin, dass bereits während der Einrichtung der Verschlüsselung die Zuordnung der Laufwerke, Partitionen, RAID-, LVM-, oder CRYPT-Devices fehlerhaft war. Der Boot-Prozess bleibt dann ohne Passwortabfrage etwa mit der Fehlermeldung {{{ Gave up waiting for root device. Common problems: -Boot args (cat /proc/cmdline) -Check rootdelay= (did the system wait long enough?) -Check root= (did the system wait for the right device?) -Missing modules (cat /proc/modules; ls /dev) ALERT! /dev/mapper/root does not exist Dropping to a shell! }}} stehen, und man landet in der Busybox. Wer bei der obigen Anleitung vorgeht, bekommt schon zu einem früheren Zeitpunkt eine Fehlermeldung, die jedoch leicht übersehen werden kann: {{{#!vorlage Befehl # update-grub grub-probe: error: cannot find a device for /. }}} Eine Ursache dafür ist z.B., dass im Zuge der Verschlüsselung die Partitionstabelle geändert wurde, diese aber aus verschiedenen Gründen nicht neu eingelesen werden konnte. Dann stimmen die UUIDs nicht, die man von den folgenden Kommandos erhält: {{{#!vorlage Befehl blkid vol_id ls -al /dev/disk/by-uuid/ }}} Hier hilft nur das Fortsetzen der Verschlüsselung nach einem Reboot. Eine andere Ursache könnte der devicemapper sein. Mit der Ubuntu 10.10 Live-CD wird eine Version von dmsetup ausgeliefert, die ein geändertes Verhalten zeigt. crypt-devices unter '''/dev/mapper/...''' werden neuerdings als Symlinks angelegt. Beispiel: {{{#!vorlage Befehl # ls -l /dev/mapper/ insgesamt 0 crw-rw---- 1 root root 10, 60 30. Nov 11:25 control lrwxrwxrwx 1 root disk 254, 0 30. Nov 11:25 root -> ../dm-0 }}} Weiterhin könnte ein bug in cryptsetup die Ursache sein, der sich beim erstellen der initramfs mit folgender Fehlermeldung äussert (Zeile mit "WARNING"): {{{#!vorlage Befehl # dpkg-reconfigure linux-image-2.6.35-30-generic Running depmod. update-initramfs: Generating /boot/initrd.img-2.6.35-30-generic cryptsetup: WARNING: invalid line in /etc/crypttab - Not updating initrd symbolic links since we are being updated/reinstalled }}} Abhilfe dazu unter http://forum.ubuntuusers.de/topic/update-initramfs-mag-meine-etc-crypttab-nicht/#post-3581682 Problematisch ist dieses geänderte Verhalten stets dann, wenn das Verhalten von dmsetup des verschlüsselten Systems und des zur Verschlüsselung benutzten Live-Systems voneinander abweicht (z.B. Verschlüsselung von Ubuntu 10.04 oder Debian Lenny mit einer Ubuntu 10.10 Live-CD). In diesem Fall kann helfen, den Symlink zu entfernen und durch eine Kopie des Block-Devices zu ersetzen, __bevor__ mit `chroot` in das System gewechselt wird: {{{#!vorlage Befehl rm /dev/mapper/ && cp -R /dev/dm-X /dev/mapper/ }}} (siehe auch [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=544577#10 Debian Bug Report] {en}) = 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), kann hierfür ein Workaround über das initramfs genutzt werden. Folgender Artikel beschreibt detailliert die notwendigen Schritte unter Ubuntu 11.04 (Natty). Benötigt werden, neben einer Ubuntu_Installation und Internetzugang, Wissen im Umgang mit der Konsole und einem Editor. Der Artikel ist auf Anfänger zugeschnitten, sodass weiterführendes Wissen von Vorteil, aber nicht zwingend notwendig ist. [http://dafinchi.bplaced.net/2011/09/datensicherheit-2-%E2%80%93-verschlusseltes-system-reloaded Datensicherheit 2 – Verschlüsseltes System Reloaded] {de} #tag: System, Sicherheit, Installation, Vollverschlüsselung, Systemverschlüsselung