Guten Tag, Nacht! Dieser Beitrag ist nützlich für diejenigen, die LUKS-Datenverschlüsselung verwenden und die Entschlüsselung von Festplatten unter Linux (Debian, Ubuntu) in der
Phase der Entschlüsselung der Root-Partition entschlüsseln möchten. Und ich konnte solche Informationen im Internet nicht finden.
In jüngerer Zeit stieß ich mit der Zunahme der Anzahl der Festplatten in den Regalen auf das Problem, Festplatten mit der mehr als bekannten Methode über / etc / crypttab zu entschlüsseln. Persönlich möchte ich einige Probleme bei der Verwendung dieser Methode hervorheben, nämlich, dass die Datei
erst nach dem Mounten (Mounten) der Root-Partition gelesen
wird , was sich negativ auf den ZFS-Import auswirkt, insbesondere wenn sie von Partitionen auf dem * _crypt-Gerät oder von mdadm-Raids gesammelt wurden auch aus Abschnitten gesammelt.
Wir alle wissen, dass Sie geteilte LUKS-Container verwenden können? Und auch das Problem des frühen Starts anderer Dienste, wenn noch keine Arrays vorhanden sind, aber etwas verwendet werden muss (ich arbeite mit Clustered Proxmox VE 5.x und ZFS über iSCSI).
Ein bisschen über ZFSoverISCSIiSCSI funktioniert für mich über LIO. Wenn das iscsi-Ziel gestartet wird und die ZVOL-Geräte nicht angezeigt werden, werden sie einfach aus der Konfiguration entfernt, wodurch das Laden der Gastsysteme verhindert wird. Daher kann entweder eine JSON-Dateisicherung wiederhergestellt oder Geräte mit den Kennungen jeder VM manuell hinzugefügt werden. Dies ist nur schrecklich, wenn Dutzende solcher Computer vorhanden sind und die Konfiguration jeweils mehr als eine Festplatte enthält.
Und die zweite Frage, die ich prüfen werde, ist, wie man entschlüsselt (dies ist der Schlüsselpunkt des Artikels). Und wir werden weiter unten darüber sprechen, gehen Sie unter den Schnitt!
Im Internet verwenden sie meistens eine Schlüsseldatei (den Befehl cryptsetup luksAddKey, der dem Slot vor sich selbst hinzugefügt wurde) oder in seltenen Ausnahmen (die russische Sprache enthält nur sehr wenige Informationen) - das Skript decrypt_derived in / lib / cryptsetup / script / (Natürlich gibt es immer noch Möglichkeiten, aber ich habe diese beiden verwendet, die die Grundlage des Artikels bildeten). Ich bemühte mich auch um eine vollständige autonome Aufnahme nach dem Neustart ohne zusätzliche Befehle in der Konsole, damit alles auf einmal „abhebt“. Warum also warten? - -
Fangen wir an!
Wir gehen davon aus, dass ein System, beispielsweise Debian, auf der Kryptopartition sda3_crypt installiert ist und ein Dutzend Festplatten bereit sind, alles zu verschlüsseln und zu erstellen, was Sie möchten. Wir haben eine Passphrase zum Entsperren von sda3_crypt. In diesem Abschnitt entfernen wir auf einem laufenden (entschlüsselten) System den "Hash" aus dem Kennwort und fügen ihn den anderen Laufwerken hinzu. Alles ist elementar, in der Konsole, die wir ausführen:
/lib/cryptsetup/scripts/decrypt_derived sda3_crypt | cryptsetup luksFormat /dev/sdX
Dabei ist X unsere Festplatten, Partitionen usw.
Nachdem Sie die Laufwerke mit einem "Hash" aus unserer Passphrase verschlüsselt haben, müssen Sie die UUID oder ID herausfinden - je nachdem, an wen und was Sie gewöhnt sind. Wir nehmen die Daten von / dev / disk / by-uuid bzw. by-id.
Der nächste Schritt ist die Vorbereitung von Dateien und Miniskripten für die notwendigen Funktionen. Wir fahren fort:
cp -p /usr/share/initramfs-tools/hooks/cryptroot /etc/initramfs-tools/hooks/ cp -p /usr/share/initramfs-tools/scripts/local-top/cryptroot /etc/initramfs-tools/scripts/local-top/
weiter
touch /etc/initramfs-tools/hooks/decrypt && chmod +x /etc/initramfs-tools/hooks/decrypt
weiter
touch /etc/initramfs-tools/hooks/partcopy && chmod +x /etc/initramfs-tools/hooks/partcopy
noch mehr
touch /etc/initramfs-tools/scripts/local-bottom/partprobe && chmod +x /etc/initramfs-tools/scripts/local-bottom/partprobe
und zuletzt müssen Sie vor update-initramfs die Datei / etc / initramfs-tools / scripts / local-top / cryptroot bearbeiten, beginnend mit Zeile ~ 360, ein Stück Code unten
und zu dieser Form bringen
Bitte beachten Sie, dass hier entweder UUID oder ID verwendet werden kann. Die Hauptsache ist, dass die erforderlichen Treiber für die HDD / SSD-Geräte zu / etc / initramfs-tools / modules hinzugefügt werden. Sie können herausfinden, welcher Treiber von
udevadm info -a -n / dev / sdX | verwendet werden soll egrep 'suchen | FAHRER' .
Nachdem wir fertig sind und alle Dateien vorhanden sind, führen Sie
update-initramfs -u -k all -v aus .
Es sollte keine Fehler bei der Ausführung unserer Skripte in der Protokollierung geben. Wir starten neu, geben die Passphrase ein und warten ein bisschen, abhängig von der Anzahl der Festplatten. Als nächstes wird das System gestartet und in der letzten Phase des Starts, dh nach dem "Mounten" der Root-Partition, wird der Befehl partprobe ausgeführt - es werden alle auf LUKS-Geräten erstellten Partitionen gefunden und abgerufen, und alle Arrays, ob ZFS oder mdadm, werden problemlos zusammengesetzt! Und das alles
vor dem Laden der Basisdienste und Dienste, die diese Festplatten / Arrays benötigen.
update1 : Wie
AEP feststellte , funktioniert diese Methode nur für LUKS1.