Ich schaue mir die Festplattenverschlüsselung an. Die Lösung scheint dm-crypt mit LUKS unter Verwendung eines Passworts zu sein. Ich arbeite mit mehreren unabhängigen Festplatten, die zum Lesen in einen Festplattenpool eingebunden sind. In diesem Fall muss ich ein Passwort mehrmals eingeben.
Gibt es für mich eine Möglichkeit, die Festplatten mit einer Schlüsseldatei zu verschlüsseln, diese vielleicht auf einen USB-Stick zu packen und diesen bei Bedarf einfach anzuschließen??
Antwort1
Eine der besten Möglichkeiten hierfür ist die Verwendung einer Smartcard mit einem Kryptoschlüssel, um die Schlüssel für Ihre verschlüsselten Blockgeräte freizuschalten. Sie müssen die Passphrase (von den Tools „PIN“ genannt, aber eigentlich ist es eine Passphrase) nur einmal eingeben, danach wird sie zwischengespeichert. Dies hat den zusätzlichen Vorteil, dass die verschlüsselten Daten durch etwas geschützt werden, das Sie haben (die Smartcard selbst, aus der der private Schlüssel nicht extrahiert werden kann) und etwas, das Sie wissen (die Passphrase).
Formatieren Sie es /etc/crypttab
wie folgt:
mapper-name /dev/disk/raw-device /var/lib/filename-containing-encrypted-key \
luks,keyscript=/lib/cryptsetup/scripts/decrypt_opensc
Unter Debian und Derivaten erkennen die Initramfs-Tools das Keyscript und kopieren alle notwendigen Tools und Daemons für den Zugriff auf die Smartcard automatisch in das Initramfs.
Informationen zum Einrichten der Smartcard und zum Erstellen (und Verschlüsseln) der Schlüssel finden Sie in /usr/share/doc/cryptsetup/README.opensc.gz
.
Sie können einYubikey 4oderYubikey NEOunter anderem zu diesem Zweck.
Hinweise zur Implementierung: Diese Funktion hat Ecken und Kanten und funktioniert anscheinend nicht sofort, also kann Ihre Erfahrung abweichen. Als ich sie das letzte Mal erfolgreich implementiert habe, musste ich die folgenden Hacks hinzufügen:
- Deaktivieren Sie es
systemd
, weil es katastrophal versucht, den gesamten Prozess der Einrichtung verschlüsselter Geräte zu übernehmen,/etc/crypttab
aber nichts davon weiß,keyscript
was zu einem großen FEHLER führt. Glücklicherweise können Sie sich in Debian immer noch dagegen entscheidensystemd
. Installieren Sie dieses Fixer-Upper-Skript,
/etc/initramfs-tools/hooks/yubipin
da die integrierte Funktion nicht genügend Unterstützung installiert hat, um den Yubikey vom Initramfs aus nutzbar zu machen. Möglicherweise müssen Sie dies anpassen.#!/bin/sh PREREQ=cryptroot prereqs() { echo "$PREREQ" } case $1 in prereqs) prereqs exit 0 ;; esac # /scripts/local-top/cryptopensc calls pcscd with the wrong path ln -s ../usr/sbin/pcscd ${DESTDIR}/sbin/pcscd mkdir -p "${DESTDIR}/usr/lib/x86_64-linux-gnu" # opensc-tool wants this dynamically, copy_exec doesn't know that cp -pL /usr/lib/x86_64-linux-gnu/libpcsclite.so.1 "${DESTDIR}/usr/lib/x86_64-linux-gnu/libpcsclite.so.1" mkdir -p "${DESTDIR}/lib/x86_64-linux-gnu" # without this, pcscd aborts with a pthread_cancel error cp -pL /lib/x86_64-linux-gnu/libgcc_s.so.1 "${DESTDIR}/lib/x86_64-linux-gnu/libgcc_s.so.1" # this gets copied as a dangling symlink, fix it rm "${DESTDIR}/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist" cp -pL /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist "${DESTDIR}/usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist" # pcscd needs this to open the reader once it has found it cp -pL /lib/x86_64-linux-gnu/libusb-1.0.so.0 "${DESTDIR}/lib/x86_64-linux-gnu/libusb-1.0.so.0"
Installieren Sie ein weiteres Skript zum
/etc/initramfs-tools/scripts/local-bottom/killpcscd
Bereinigen:#!/bin/sh set -e PREREQ=cryptopensc prereqs() { echo "$PREREQ" } case $1 in prereqs) prereqs exit 0 ;; esac # because cryptopensc does not do it properly killall pcscd
Antwort2
Es ist möglich, das Luks-Passwort einfach in einer Datei zu speichern.
Ich verwende dies auf meinem Heimcomputer. Das Root-Dateisystem befindet sich auf einem regulären Luks-Volume, das ich beim Booten mit meiner Passphrase entsperre. Ein zusätzliches Laufwerk enthält ein Luks-Volume mit einem generierten Passwort.
Dieses zusätzliche Volume wird durch eine Kennwortdatei entsperrt, die sich auf dem verschlüsselten Root-Dateisystem befindet. Es wird beim Booten automatisch entsperrt, wenn das Root-Dateisystem entsperrt ist.
Meines /etc/crypttab
sieht so aus:
crypt-root UUID=c5a2cf25-0aae-457e-874f-fca7ea3d5742 none luks
crypt-data UUID=96d79323-246d-49e0-9149-ec3a4cfc1c1e /etc/crypt-data.key luks
Das dritte Feld ist die Schlüsseldatei none
für das Root-Dateisystem, jedoch /etc/crypt-data.key
für das Datendateisystem. /etc/crypt-data.key
Es enthält das Luks-Passwort:
Tm90IHJlYWxseSBteSBwYXNzd29yZC4K
Beachten Sie, dass ein Zeilenumbruch oder ein anderes Leerzeichen als Teil des Passworts verwendet wird! Achten Sie darauf, diese Datei ohne abschließenden Zeilenumbruch zu generieren. Stellen Sie außerdem sicher, dass sie über strenge Berechtigungen verfügt:
-rw------- 1 root root 59 Sep 14 23:57 /etc/crypt-data.key
Sie sollten diesen Ansatz für mehrere Datenträger duplizieren können (entweder mit unterschiedlichen Passwörtern oder einem gemeinsamen Passwort, ganz nach Ihrer Wahl).