Wie erstelle ich unter Debian eine zufällig verschlüsselte, verschlüsselte Swap-Partition, die sich auf "by-uuid" bezieht?

8

Wenn auf Ihrem GNU / Linux-System eine Blockgeräteverschlüsselung implementiert ist, ist es sinnvoll, auch Ihre Swap-Partition zu verschlüsseln, da entschlüsselte Daten jederzeit im Klartext in den Swap geschrieben werden können.

Wenn ich mir die Debian-Manpage für "crypttab" ansehe, sehe ich ein Beispiel für das Erstellen einer zufällig verschlüsselten Swap-Partition beim Booten, sodass der Schlüssel im Verlauf des Startvorgangs zufällig festgelegt wird und nur dem System selbst bekannt ist:

# Encrypted swap device
cswap /dev/sda6 /dev/urandom cipher=aes-cbc-essiv:sha256,hash=ripemd160,size=256,swap

In diesem Beispiel wird die Austauschvorrichtung durch einen herkömmlichen Entwicklungspfad bezeichnet, d. H. /dev/sda6

Absolute Gerätepfade können sich ändern und werden beim Booten neu zugewiesen, wenn beispielsweise ein USB-Laufwerk angeschlossen ist. Ein Benutzer wäre sehr unglücklich, wenn /dev/sda6es sich um eine andere Partition als erwartet handeln würde, die anschließend mit zufälligen Auslagerungsdaten überschrieben wurde !!

Die Lösung scheint also zu sein: Verwenden Sie eine UUID anstelle eines Gerätepfads (da sich eine UUID nicht ändern sollte) und ersetzen Sie sie /dev/sda6durch/dev/disk/by-uuid/<whatever the uuid of dev/sda6 is>

ABER ... hier ist das Problem: Jedes Mal, wenn cryptsetup die verschlüsselte Swap-Partition beim Booten neu erstellt, wird eine neue UUID dafür generiert! Doh!

Wir müssen also die UUID dieses verschlüsselten Dateisystems irgendwie beibehalten. Ich denke, Cryptsetup kann dies mit seinem --offsetSchalter tun , wodurch der LUKS-Header und damit die UUID erhalten bleiben.

Ich habe diese URL gefunden: https://wiki.archlinux.org/index.php/System_Encryption_with_LUKS#Using_UUIDs_with_encrypted_swap_partitions

Weiß jemand, wie man die für Arch Linux beschriebene Lösung auf dem Debian-Betriebssystem implementiert? Die im Dokument genannten Init-Skripte scheinen auf dem Debian-Betriebssystem nicht vorhanden zu sein

Vielen Dank!

EDIT Man könnte verwenden ecryptfs die gleichen Enden (verschlüsselte Swap - Speicher) mit dem Befehl zu erreichen: ecryptfs-setup-swap Ohne die Probleme , die bedrängt Block - Device - Verschlüsselung. Schauen Sie sich diese AskUbuntu-Abfrage an

Geeb
quelle
"Man könnte ecryptfs verwenden, um die gleichen [...] Ziele zu erreichen, ohne die Probleme, die mit der Blockgeräteverschlüsselung verbunden sind." Nein, denn ecryptfs-setup-swapnur ein Helfer , dass konfiguriert dm-crypt/ crypttabfür Sie. Da ecryptfses sich um einen Treiber auf Dateiebene handelt, werden nicht ganze Partitionen verarbeitet dm-crypt. Möglicherweise finden Sie diese Methode benutzerfreundlicher, aber letztendlich erreichen Sie nichts anderes. Wenn überhaupt, machte die Macken dieser Methode (einschließlich der UUID) wahrscheinlich mich mehr verwirrt , als wenn ich hatte gerade getan mich von Grund auf ... obwohl ich mehr gelernt.
underscore_d

Antworten:

6

Jedes Mal, wenn cryptsetup die verschlüsselte Swap-Partition beim Booten neu erstellt, wird eine neue UUID dafür generiert! Doh!

Verwenden Sie in / etc / crypttab / dev / disk / by-id anstelle von / dev / disk / by-UUID , um auf Ihre Swap-Partition zu verweisen. Zum Beispiel Ihr / etc / fstab - Eintrag für Swap könnte sein ,

#<file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/cswap none swap sw 0 0

Dann wäre der richtige entsprechende Eintrag in / etc / crypttab so etwas wie

# <name> <device> <password> <options>
cswap /dev/disk/by-id/ata-SAMSUNG_SSD_830_Series_S0XYNEAC762041-part5 /dev/urandom swap,cipher=aes-cbc-essiv:sha256,size=256

Beachten Sie, dass auf das obige Gerät mit / dev / disk / by-id verwiesen wird, was Sie für Ihr Laufwerk herausfinden können, indem Sie Folgendes in die CLI eingeben:

ls -lF /dev/disk/by-id
Jun_in_Jeju
quelle
Beachten Sie, dass sich der Name der
By
... was für Leser, die sich vielleicht fragen, eine sehr gute Sache ist. Sie möchten Ihren verschlüsselten Swap nicht so konfigurieren /dev/sdaN, dass Sie eines Tages eine andere Festplatte anschließen und feststellen, dass Ihre Kernel-Namensreihenfolge geändert wurde und eine Ihrer Nicht-Swap-Partitionen in den Papierkorb verschoben wurde. UUID wäre auch nett, aber ich denke, das Hauptproblem ist, dass es in den ersten Bytes der Partition gespeichert ist, sodass wir das unlösbare Henne-Ei-Szenario erhalten, das hier diskutiert wird.
underscore_d
3

In meiner / etc / crypttab habe ich

# <target name>  <source device>        <key file>   <options>
swap             /dev/mapper/cswap      /dev/random  swap

Hier ist / dev / mapper / cswap ein von LVM erstelltes logisches Volume, das dafür sorgt, dass logische Volume-Namen unabhängig von den Laufwerksbuchstaben korrekt zugewiesen werden. Außerdem kann ich die Größe meiner Swap-Partition problemlos ändern.

Andrew Schulman
quelle
0

Versuchen Sie, den Rest der Lösung zu implementieren, und ignorieren Sie die Init-Datei. Es sieht so aus, als ob dieses Teil des Init-Skripts nur dazu da ist, Sie zu schützen. Entweder schützt Debian Sie nicht auf diese Weise, oder es wird eine Fehlermeldung angezeigt, wenn Sie versuchen, damit zu booten, die Sie hoffentlich an den richtigen Ort führt.

Ich würde auch darauf achten, dass IIRC Debian und ArchLinux unterschiedliche Formate für / etc / crypttab haben (verrückt, ich weiß, aber ich bin vor ein paar Jahren von Ubuntu zu Arch gewechselt und habe mich schließlich entschieden, Straight Bash zu verwenden, anstatt mich in Crypttabs einzumischen).

idupree
quelle
Vielen Dank für Ihre Antwort. Ja, ich würde zustimmen, dass das Arch-Skript eine Überprüfung der Integrität ist, um sicherzustellen, dass die Partition eine Swap-Partition zu sein scheint. Aber ich stelle mir vor, ein USB-Laufwerk angeschlossen zu haben und neu zu starten, um eine Nicht-Swap-Partition zu finden, die verwendet wird. Ich glaube, ich würde echte Tränen weinen ... Ich bin dankbar für alle Gesundheitsprüfungen, die ich bekommen kann!
Geeb
Das sollte nicht passieren, weil Sie die UUID verwenden, um sie überhaupt zu finden. Alles, was es finden wird, ist die Swap-Partition oder nichts.
idupree
0

Führen Sie ecryptfs-setup-swap oder manuell aus:

Diese Konfiguration verwendet beim Booten zufällig generierte Schlüssel und unterstützt den Ruhezustand auf der Festplatte nicht! Sie sollten den Ruhezustand über Ihr DE Power Management-Dienstprogramm deaktivieren und auf Kritisch herunterfahren setzen, um Datenverlust zu vermeiden!

Wechseln Sie zu einem Administrator- / Root-Konto

su root oder sudo für jeden Befehl

Swap deaktivieren

Swapoff -a

Suchen Sie die vorhandene Swap-Partition

lsblk

Beispiel: sda3 8: 3 0 8G 0 Teil [SWAP]

Alten Swap überschreiben

dd if = / dev / zero bs = 1024000 von = / dev / sda <#>

Beispiel: dd if = / dev / zero bs = 1024000 von = / dev / sda3

FSTAB-Setup

vim / etc / fstab

Ersetzen Sie das alte SWAP-Gerät durch den Namen des Crypttab-Mappers: / dev / mapper / cswap

ALTE UUID = d03f3d8e-7888-48a5-b3cc-41de8dbbcfdc Swap-Swap-Standardeinstellungen 0 0

NEU

/ dev / mapper / cswap none swap pri = 1, Standardeinstellung 0 0

Krypto-Setup

ls -lF / dev / disk / by-id

Beispiel: ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 -> ../../sda3

vim / etc / crypttab

cswap / dev / disk / by-id / ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 / dev / urandom Swap, Chiffre = aes-cbc-essiv: sha256, Größe = 256

Aktiver verschlüsselter Swap

Starten Sie den Computer neu

Überprüfen Sie die Enctypted Swap-Vorgänge

dmsetup -C info

Beispiel: cswap 253 0 L - w 2 1 0 CRYPT-PLAIN-cswap

lsblk

Beispiel ├─sda3 8: 3 0 8G 0 Teil
│ cs cswap 253: 0 0 8G 0 Krypta [SWAP]

cat / proc / swaps

Beispiel: Dateiname Typ Größe Verwendet Priorität / dev / dm-0 Partition 8385532 0 -1

Timothy Butterworth
quelle