{{{#!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. Ohne ein sicheres Kennwort nutzt die stärkste Verschlüsselung nichts! Wie man Passwörter am besten wählt, steht hier: [:Sicherheits 1x1#Passwoerter:] }}} [[Vorlage(Getestet, bionic, focal, jammy, mantic)]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Ubuntu_Installation_im_BIOS-_oder_Legacy-_Modus: Ubuntu installieren im_BIOS-_oder_Legacy-_Modus] [:EFI_Installieren/#Installation-im-EFI-Modus: Installation-im-EFI-Modus] [:Partitionierung: Festplatten in Partitionen einteilen] [:Manuelle_Partitionierung:Manuelle Partitionierung eines Ubuntu-Systems] [:LUKS:Verschlüsselte Partitionen mit LUKS] [:Skripte/Gerät_mit_Pseudozufallszahlen_überschreiben:Gerät mit Pseudozufallszahlen überschreiben] [:Logical_Volume_Manager: Partitionen mit LVM erstellen] [:chroot/Live-CD:Von einer Live-Umgebung in ein installiertes System wechseln] [:Terminal: Ein Terminal öffnen] [:Systeminformationen_ermitteln#Festplatten:] [:GRUB_2/Konfiguration:Bootloader konfigurieren] }}} [[Inhaltsverzeichnis]] [[Bild(Wiki/Icons/security.png, 48, align=left)]] Das Ubuntu-System lässt sich seit Ubuntu 12.10 bereits automatisch bei der [:Installation:] verschlüsseln. Diese Anleitung installiert Ubuntu durch manuelle statt automatische [:Partitionierung:] in einem verschlüsselten Bereich, so dass man Einfluss auf die Partitionierung hat. Wie bei der automatischen Installation bleibt die Boot-Partition, und bei einem [:EFI: EFI-System] zusätzlich die EFI-Partition, unverschlüsselt. Hier befinden sich lediglich Bootlader und Kernel, weil der Bootlader keine Daten aus dem verschlüsselten Bereich lesen kann. Es wird der [:Logical_Volume_Manager:] eingesetzt, da mit diesem beim Start nur eine Passworteingabe nötig ist, der [:Archiv/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. 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. Diese Anleitung geht von der Installation auf einem Rechner der [:CPU-Architektur: Architektur] '''amd64''' aus, sozusagen einem heutigen Standard-PC. Verschlüsselung auf einem SoC wie z. B. dem Raspberry Pi funktioniert anders. = Ubuntu 23.10 = Die in Ubuntu 23.04 eingeführte Installationsroutine bietet derzeit keine Möglichkeit diesen Artikel um zu setzen. Das betrifft nur Ubuntu 23.04, Ubuntu 23.10.1 sowie Ubuntu Budgie 23.10.1, nicht jedoch die übrigen [:Ubuntu/Derivate: Derivate]. Man kommt mit der alternativ erhältlichen legacy-ISO zum Ziel, die die herkömmliche Installationsroutine mitbringt. vgl. [:Downloads/Mantic_Minotaur/:] = Vorbereitungen = {{{#!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! }}} 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-DVD benötigt. Diese einfach booten [1],[2]. Nachdem das Live-System geladen wurde, '''nicht das Installationsprogramm ausführen sondern die Versuchsversion starten'''. == Partitionierung == {{{#!vorlage Hinweis Man sollte sich vorab darüber informieren, ob der Rechner mit einem [:EFI_Bootmanagement:] versehen ist und wie die Festplatte(n) [:GRUB_2/Grundlagen:formatiert] wurden! Weitere Informationen stehen unter [:EFI_Grundlagen:] zur Verfügung! Bei EFI-Systemen ist zu beachten, dass auf jeden Fall neben der unverschlüsselten Boot-Partition noch eine unverschlüsselte [:GRUB_2/Grundlagen#Mit-EFI:EFI-Partition] anzulegen ist. Eine Alternative wäre die Nutzung des BIOS-Kompatibilitätsmodus CSM.}}} {{{#!vorlage Hinweis '''/dev/sdX1''', '''/dev/sdX2''' und '''/dev/sdX3''' müssen im Folgenden immer durch die tatsächliche Bezeichnung [10] der Partition ersetzt werden! Die Partitionsnummern werden hier nur stellvertretend verwendet. Die tatsächlichen Partitionsnummern können davon je nach System abweichen. }}} Folgende Partitionen werden benötigt [1],[2],[4] (vor allem Abschnitt "Vorüberlegungen"): * '''/dev/sdX1''' (nur bei EFI-Systemen) * EFI System-Partition * unverschlüsselt * Dateisystem: fat32 * Markierungen: `boot`, `esp` * '''/dev/sdX2''' * Boot-Partition * unverschlüsselt * unformatiert * '''/dev/sdX3''' * verschlüsselte LVM-Partition für das Ubuntu-System * unformatiert == Verschlüsselung der Ubuntu System-Partition == {{{#!vorlage Warnung Bei HDDs ist es aus Sicherheitsgründen empfehlenswert, die Partition einmal mit Zufallszahlen zu überschreiben, vor allen Dingen, wenn auf dieser vorher unverschlüsselte Daten gespeichert waren [6]. Ansonsten sind unter Umständen viele Dateien nach dem Verschlüsseln noch auslesbar. }}} Daraufhin wird die Partition '''sdX3''' [:LUKS/Partitionen_verschlüsseln:verschlüsselt] und anschließend unter dem virtuellen Gerätenamen '''sdX3_crypt''' geöffnet [5]. Der Gerätename ist frei wählbar. Beim Einsatz von [wikipedia_en:XEX-TCB-CTS#XTS:XTS] mit 256 Bit [wikipedia:Advanced_Encryption_Standard:AES] sehen die Befehle [9] wie folgt aus: {{{#!vorlage Befehl cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 /dev/sdX3 cryptsetup luksOpen /dev/sdX3 sdX3_crypt }}} 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-Volumes == Mit folgenden Befehlen [9] wird eine LVM ''Volume Group'' mit dem (frei wählbaren) Namen `vgubuntu` in der verschlüsselten Partition erzeugt.[7] {{{#!vorlage Befehl pvcreate /dev/mapper/sdX3_crypt vgcreate vgubuntu /dev/mapper/sdX3_crypt }}} Bei einer Standard-Installation von Ubuntu werden typischerweise zwei Partitionen angelegt, eine für den [:Swap: Swap-Speicher] - üblicherweise 1 GB - und eine für das Root-Dateisystem mit dem restlichen Speicherplatz. Diese werden wie folgt als ''Logical Volume'' [7] erstellt: {{{#!vorlage Befehl lvcreate -L 1024M -n swap vgubuntu lvcreate -l 100%FREE -n root vgubuntu }}} Sollten noch weitere LVM-Volumes benötigt werden, können diese genauso eingerichtet werden. Natürlich darf dann für root nicht 100% des verfügbaren Platzes vergeben werden. = Installation = [[Bild(Partitionierung.png, 250, right)]] Danach wird das Installationsprogramm gestartet [1],[2] und mit diesem bis [:Ubuntu_Installation_im_BIOS-_oder_Legacy-_Modus/#Varianten-der-automatischen-oder-halbautomatischen-Partitionierung: Auswahl der Partitionierung ] fortgefahren, bei dem die manuelle Partitionierung (''"Etwas Anderes"'') ausgewählt wird. Im nächsten Installationspunkt werden die Partitionen konfiguriert. Diese Vorgehensweise ist bis auf die abweichenden Namen der LVM-Volumes identisch zu einem unverschlüsselten System [4]. Folgende Partitionen müssen mindestens konfiguriert werden: * '''/dev/mapper/vgubuntu-root''' * Root-Partition * Dateisystem: '''ext4''' oder gewünschtes [:Dateisystem#Linux-Dateisysteme:Linux-Dateisystem] * Formatieren: ''"ja"'' * Einhängepunkt: '''/''' * '''/dev/sdX1''' (nur bei EFI-Systemen) * EFI System-Partition * benutzen als "EFI Boot-Partition" ([:EFI_Installieren#Installationsart-Etwas-Anderes:EFI System-Partition zuweisen])\\ '''Nur noch''' unter Ubuntu [:20.04:] hat man zusätzlich die Auswahl: * Formatieren: ''"nein"''. * Einhängepunkt: '''/boot/efi''' (ggf. händisch ergänzen). * '''/dev/sdX2''' * Boot-Partition * Dateisystem: '''ext4''' * Formatieren: ''"ja"'' * Einhängepunkt: '''/boot''' Es ist darauf zu achten, dass der Bootloader auf einem sinnvollen Gerät außerhalb des verschlüsselten Containers installiert wird, z.B. dem Master Boot Record der Festplatte (''„Device for Bootloader installation:“'' '''/dev/sdX'''). {{{#!vorlage Experten Sollte parallel Windows installiert und mit [:VeraCrypt:] verschlüsselt worden sein, muss GRUB in die Boot-Partition '''/dev/sdX2''' anstelle des MBRs installiert werden. Das muss unter [:Ubuntu_Installation_im_BIOS-_oder_Legacy-_Modus/#Geraet-fuer-die-Bootloaderinstallation:''"Gerät für die Bootloaderinstallation"''] eingestellt werden. Dort muss anstelle von '''hd0''' die Boot-Partition ausgewählt werden. GRUB erscheint dann, sobald [[Vorlage(Tasten, esc)]] im VeraCrypt Bootloader gedrückt wird. Bei EFI-Systemen ist es egal, welche Einstellung man für den Bootloader wählt. Er wird immer in die EFI System-Partition installiert. }}} {{{#!vorlage Warnung Eventuelle Änderungen an Partitionen können nicht mehr rückgängig gemacht werden! }}} Danach wird gemäß Anleitung [1],[2] mit der Installation fortgefahren, jedoch '''nach dem Abschluss der Installation nicht neugestartet'''. == Ins verschlüsselte System wechseln == {{{#!vorlage Hinweis Alle folgenden Befehle müssen in ein und demselben Terminal [9] ausgeführt werden. }}} Um die nötigen Anpassungen vorzunehmen, wird mittels [:chroot:] in das eigentliche, verschlüsselte System gewechselt [8]. Das geschieht durch die Eingabe der folgenden Befehle. Es ist dabei zu beachten, dass man, falls man zusätzliche Partitionen wie z.B. '''/var''' angelegt hat, diese ebenfalls vor dem `chroot` Befehl noch entsprechend mounten muss: {{{#!vorlage Befehl # root Filesystem mount /dev/mapper/vgubuntu-root /mnt # boot Filesystem mount /dev/sdX2 /mnt/boot mount /dev/sdX1 /mnt/boot/efi # nur bei EFI-Systemen nötig; entfällt nicht! # Notwendige system-interne Filesysteme mount -o rbind /dev /mnt/dev mount -t proc /proc /mnt/proc mount -t sysfs /sys /mnt/sys # DNS-Auflösung im verschlüsseltem System ermöglichen cp /etc/resolv.conf /mnt/etc/resolv.conf # In das verschlüsselte System wechseln chroot /mnt /bin/bash }}} === /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 LVM-Partition ermittelt werden. Das geschieht mit folgendem Befehl: {{{#!vorlage Befehl blkid /dev/sdX3 }}} Neuere Versionen von `cryptsetup` können die UUID auch selbst ermitteln: {{{#!vorlage Befehl cryptsetup luksUUID /dev/sdX3 }}} Daraufhin wird mit dieser Eingabe die nötige Zeile in '''/etc/crypttab''' eingefügt, wobei `` vorher durch die ermittelte UUID ersetzt werden muss. Die UUID muss dabei ohne Anführungszeichen in die '''/etc/crypttab''' eingetragen werden (also `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` statt `"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"`): {{{#!vorlage Befehl echo "sdX3_crypt UUID= none luks" >> /etc/crypttab }}} oder kompakt: {{{#!vorlage Befehl printf "sdX3_crypt\tUUID=%s\tnone\tluks\n" "$(cryptsetup luksUUID /dev/sdX3)" | tee -a /etc/crypttab }}} {{{#!vorlage Warnung Falls zuvor beim Öffnen der verschlüsselten Partition mit `luksOpen` ein anderer Name als `sdX3_crypt` 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. }}} === Kernel-Initramfs aktualisieren === Um die Änderungen an der crypttab zu übernehmen, muss noch {{{#!vorlage Befehl update-initramfs -u -k all }}} ausgeführt werden. == Beenden/Neustart == Mit den folgenden Befehlen wird die `chroot`-Umgebung geschlossen, die Dateisysteme soweit möglich ausgehängt und das System neugestartet. Das Installationsmedium (USB-Stick bzw. DVD) muss entfernt werden und beim anschließenden Bootvorgang sollte dann nach dem LUKS-Passwort gefragt werden. {{{#!vorlage Befehl # Das verschlüsselte System verlassen exit # Puffer für Datenträger schreiben sync # "Gemountete" Filesystem wieder entfernen umount /mnt/sys umount /mnt/proc umount /mnt/boot/efi # nur bei EFI-Systemen nötig umount /mnt/boot # swapoff -a # reboot }}} ## /mnt/dev/pts lässt sich nicht aushängen und damit auch /mnt/dev/ und /mnt nicht. ## Entsprechend geht auch lvchange -a n vgubuntu und cryptsetup luksClose sdX3_crypt nicht. = 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 cryptsetup luksAddKey /dev/sdX3 }}} == 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/sdX3 }}} = Informationen anzeigen = == Übersicht über den LUKS Header ausgeben == Der folgende Befehl gibt eine Übersicht über die Informationen, die der LUKS Header der verschlüsselten Partition enthält, aus. Damit ist z.B. zu erkennen, wie viele der 8 Schlüsselslots schon belegt und welche noch frei sind. Auch wird darüber Auskunft erteilt, welche Verschlüsselungsmethode für diese Partition verwendet wird, so wie einige weitere Informationen, wie z.B. auch über die schon weiter oben erwähnte UUID. {{{#!vorlage Befehl cryptsetup luksDump /dev/sdX3 }}} == Prüfen ob der TRIM-Befehl durchgereicht wird == Möchte man prüfen, ob der TRIM-Befehl, welcher für SSDs sinnvoll sein kann, bei einer LUKS Partition durchgereicht wird, so kann dies mit folgendem Befehl geprüft werden. {{{#!vorlage Befehl cryptsetup status /dev/mapper/sdX3_crypt }}} Man beachte, dass bei diesem Beispiel cryptsetup auf das virtuelle LUKS-Gerät und nicht auf die Partition '''/dev/sdX3''' angewendet wird. Wenn dann neben dem Feld ''"flags"'' die Option ''"discards"'' angezeigt wird, dann wird der Trim-Befehl durchgereicht. Falls nicht, dann muss TRIM, sofern man TRIM verwenden möchte, noch entsprechend aktiviert werden, siehe dazu [:SSD/TRIM:]. {{{#!vorlage Warnung Die Verwendung des TRIM Befehls im Zusammenhang mit der LUKS Verschlüsselung kann ein Sicherheitsrisiko sein. Mehr dazu steht in folgendem Artikel: [:SSD/TRIM#TRIM-mit-Festplattenverschluesselung:]. }}} = Problembehebung = == /run/cryptsetup is missing == Unter Ubuntu 20.04 konnte der erste Aufruf von `cryptsetup` zur Fehlermeldung `WARNING: Locking directory /run/cryptsetup is missing!` führen. Dies kann man durch Anlegen des fehlenden Verzeichnis beheben: {{{#!vorlage Befehl mkdir -m0700 /run/cryptsetup }}} Direkt im Anschluss wiederholt man das zuvor gescheiterte Kommando und macht ab dort weiter. == Raspberry & Co. == Für die nicht in diesem Artikel behandelte, nachträgliche Verschlüsselung eines Systems auf einem SoC sei trotzdem erwähnt, dass das Paket [packages:cryptsetup-initramfs:] installieren sein muss. = Links = * [:Sicherheit:] {Übersicht} Übersichtsseite #tag: System, Sicherheit, Installation, Verschlüsselung, Vollverschlüsselung, Systemverschlüsselung, Server