Linux: LUKS und mehrere Festplatten

11

Ich habe ein Debian Linux-System (amd64) auf einem RAID-1-System-verschlüsselten Gerät (LVM auf LUKS) installiert und habe ein RAID-6 mit> = 4 Festplatten, auf denen ich meine Daten ablegen werde (LUKS und möglicherweise LVM).

Ich denke, die Grundidee ist, die systemverschlüsselte Partition (beim Booten lokal oder über ssh) zu entsperren und eine Schlüsseldatei in / etc / crypttab für die RAID-6-verschlüsselte Partition zu speichern. Ist das ein Sicherheitsrisiko? Ich meine ... es ist ziemlich nutzlos, wenn jemand mein System nur lokal / remote betreten kann und ich denke, dass auf Servern, die für "Rooting" anfällig sind (z. B. SSH), viele Dienste ausgeführt werden. Gibt es eine Alternative (neben dem Entsperren der Partition über SSH, was ein Problem sein kann, da z. B. Sicherungsvorgänge bereits vor dem Mounten der Datenpartition gestartet werden).

Auf einem anderen Computer verwende ich mehrere Festplatten mit LUKS + greyhole (kein RAID-6) für Backups, und es wird ein echtes Problem sein, 10 Festplatten zu entsperren, indem man das 10-fache des gleichen Passworts eingibt ...

user51166
quelle
Wenn jemand in Ihr System eindringen und root werden kann, muss er den Schlüssel für Ihre verschlüsselte Partition nicht erhalten. Es macht keinen Sinn, es vor Root zu schützen (und es ist nicht möglich ohne spezielle Hardware wie ein TPM oder die Ausführung in einer virtuellen Maschine).
Gilles 'SO - hör auf böse zu sein'
Entschuldigen Sie ? Selbst wenn ich root bin, muss ich die Schlüsseldatei / Passphrase angeben, um LUKS-Partitionen freizuschalten. Ich nehme an, Sie meinen, wenn jemand root wird, hat er vollen Zugriff auf meine verschlüsselten Daten. Leider ist das einfach wahr, denn sobald die verschlüsselte Partition bereitgestellt ist, spielt es keine Rolle, ob sie verschlüsselt ist oder nicht. Was wäre dann der Vorteil einer virtuellen Maschine? Warum sollte Verschlüsselung überhaupt helfen? Ist die einzige Lösung, um den Zugriff auf Root über SSH und ähnliche Dienste zu verweigern? Aber wenn ein Hacker als normaler Benutzer in das System eindringt, hat er normalerweise Lesezugriff auf jede Datei, nicht wahr?
user51166
1
Wenn jemand auf Ihrem System root ist, hat er Zugriff auf alles. Eine VM kann bedeuten, dass sie Zugriff auf alles in der VM hat. Die Verschlüsselung wird nur verwendet, wenn jemand Ihre Hardware stiehlt.
Gilles 'SO - hör auf böse zu sein'
Ja gut ... in diesem Fall können wir argumentieren, dass die einzige fast sichere Möglichkeit zum Speichern von Daten in einem verschlüsselten Computer besteht, der vom gesamten Netzwerk getrennt und in das Gebäude integriert ist. Dann könnte immer noch jeder mit einer Tastatur kommen und Ihre Daten stehlen, ohne Ihr System neu zu starten. Ich kann meine Systeme auch vom Internet isolieren, da es sich um einen Sicherungsserver handelt. Daher ist nur ein LAN-Zugriff erforderlich. Andererseits ... sollte ein VPN verwendet werden oder einer der LAN-Computer infiziert wird, wird auch der Sicherungscomputer freigelegt. Was würden Sie tun, um diese Probleme zu lösen?
user51166

Antworten:

7

Sie können /lib/cryptsetup/scripts/decrypt_derivedin Ihrem verwenden crypttab, um den Schlüssel von einer Festplatte automatisch für eine andere zu verwenden.

Das decrypt_derived Skript ist Teil von Debians Cryptsetup-Paket.

Kleines Beispiel zum Hinzufügen des Schlüssels von sda6crypt zu sda5:

/lib/cryptsetup/scripts/decrypt_derived sda6crypt > /path/to/mykeyfile
cryptsetup luksAddKey /dev/sda5 /path/to/mykeyfile
ls -la /dev/disk/by-uuid/ | grep sda5
echo "sda5crypt UUID=<uuid> sda6crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived" >> /etc/crypttab
shred -u /path/to/mykeyfile # remove the keyfile

Da es heutzutage sehr schwierig ist, eine Datei wirklich zu löschen, stellen Sie sicher, dass sich / path / to / mykeyfile auf einem verschlüsselten Laufwerk befindet ( sda6cryptin meinem Beispiel eine gute Lösung).

Im Allgemeinen können Sie eine zusätzliche Sicherheitsschicht hinzufügen, indem Sie die Dateisystemverschlüsselung für den Benutzerbereich verwenden, z. B. über encfs . .

Jofel
quelle
Auf diese Weise sollte ich die Schlüsseldatei nicht auf der Festplatte speichern müssen. Das wäre nett. Denken Sie jedoch, dass sich die Mühe lohnt (dh das Speichern der Schlüsseldatei auf dem verschlüsselten Root-Gerät ist "sicher genug")? Ich frage nach einer Meinung, da ich einige Zweifel habe. Danke für den Vorschlag.
user51166
Die Lösung mit decrypt_derivedhat den einzigen Vorteil, dass es keine Schlüsseldatei gibt. Wenn jemand Root-Zugriff erhalten kann, sind Sie normalerweise sowieso verloren. Das Lesen von Schlüsseldateien kann für einen Eindringling etwas einfacher sein als das Ausführen eines Skripts. Um mehr Sicherheit zu erhalten, können Sie Ihr System mit TOMOYO Linux, AppAmor, SMACK, SELinux, grsecurity usw. härten. Dies erfordert jedoch zusätzliche Anstrengungen. Und die Frage, ob es sich lohnt, ist dann wichtiger. Vergessen Sie nicht, eine Sicherungskopie des Schlüssels oder einen separaten Schlüssel für den Fall zu erstellen, dass das Laufwerk abstürzt, wenn der Schlüssel von / abgeleitet ist oder darauf gespeichert ist.
Jofel
Ich hatte vor, auch grsecurity oder ähnliche Software zu verwenden (nicht am Anfang, aber wenn ich Zeit habe, würde ich sie sichern). Ich denke daran, wenn möglich nur Passwörter und keine Schlüsseldateien zu verwenden. Nun, das Passwort wird im RAM gespeichert, also können Sie sich auch darüber streiten.
user51166
Es gibt keine gute Möglichkeit, eine Schlüsseldatei irgendwo zu löschen, ohne das gesamte Dateisystem zu überschreiben (und möglicherweise auch dann nicht, wenn die Festplatte ausfällt). Ein Journaling-Dateisystem macht die Sache nicht merklich schlimmer.
Gilles 'SO - hör auf böse zu sein'
@ Gilles Da ich kein Experte für sicheres Löschen von Dateien bin, habe ich meine Antwort bearbeitet. Ich empfehle jetzt, die Schlüsseldatei auf dem verschlüsselten Laufwerk zu speichern.
Jofel
1

Basierend auf der Antwort von jofels ist hier das gleiche Beispiel, ohne dass der Schlüssel in einer Datei gespeichert werden muss. Der Schlüssel wird in einer Named Pipe übergeben, in der nichts auf der Festplatte gespeichert ist.

Sie können /lib/cryptsetup/scripts/decrypt_derivedin Ihrem Crypttab den Schlüssel von einer Festplatte automatisch für eine andere verwenden. Das decrypt_derivedSkript ist Teil von Debians Cryptsetup-Paket.

Geändertes Beispiel zum Hinzufügen des Schlüssels von sda6crypt zu sda5:

mkfifo fifo
/lib/cryptsetup/scripts/decrypt_derived sda6crypt > fifo &
cryptsetup luksAddKey /dev/sda5 fifo
rm fifo

ls -la /dev/disk/by-uuid/ | grep sda5
echo "sda5crypt UUID=<uuid> sda6crypt luks,initramfs,keyscript=/lib/cryptsetup/scripts/decrypt_derived" >> /etc/crypttab

Die keyscriptOption funktioniert nur, wenn sie crypttabvon Debians ursprünglichen Cryptsetup-Tools verarbeitet wird. Die Neuimplementierung durch das System wird derzeit nicht unterstützt. Wenn Ihr System systemd verwendet (was die meisten Systeme sind), müssen Sie die initramfsOption erzwingen , dass die Verarbeitung in der initrd durch die Cryptsetup-Tools erfolgt, bevor systemd gestartet wird.

JanKanis
quelle