Erweiterte Einsatz-Szenarien des Linux Unified Key Setup Profi-Tipps zur Verschlüsselung mit LUKS

Von Thomas Joos 6 min Lesedauer

Ein fortgeschrittenes Thema bei der Nutzung von LUKS (Linux Unified Key Setup) ist die Konfiguration von Verschlüsselungs­mechanismen, die eine verbesserte Sicherheit und Flexibilität bieten. Das Feature dm-integrity in Kombination mit LUKS kann genutzt werden, um Datenintegrität zusätzlich zur Verschlüsselung sicherzustellen. Es gibt aber noch mehr Möglichkeiten.

Meistern Sie fortgeschrittene Techniken des Linux Unified Key Setup (LUKS) wie dm-integrity, Multi-Device-Verschlüsselung und Cloud-Integration für maximale Datensicherheit!(Bild:  Firefly / KI-generiert)
Meistern Sie fortgeschrittene Techniken des Linux Unified Key Setup (LUKS) wie dm-integrity, Multi-Device-Verschlüsselung und Cloud-Integration für maximale Datensicherheit!
(Bild: Firefly / KI-generiert)

Das Feature "dm-integrity" nutzt eine Prüfsummen- oder HMAC-basierte Überprüfung, die sicherstellt, dass die Daten auf der Festplatte nicht unbemerkt verändert wurden. Die dm-integrity ist eine Funktion des Device Mappers, die es ermöglicht, die Integrität von Daten auf Blockebene sicherzustellen.

Bildergalerie

dm-integrity in Verbindung mit LUKS

In Verbindung mit LUKS (Linux Unified Key Setup), das für die Verschlüsselung von Festplatten eingesetzt wird, bietet dm-integrity eine zusätzliche Schutzschicht, indem es sicherstellt, dass die verschlüsselten Daten nicht unbemerkt manipuliert werden können. Während LUKS den Schutz der Vertraulichkeit durch Verschlüsselung gewährleistet, sorgt dm-integrity dafür, dass jede Änderung an den Daten, die über den Block-Device-Treiber erfolgt, erkannt und verifiziert wird. Dies geschieht durch das Anlegen von Metadaten, die Prüfsummen für die gespeicherten Datenblöcke enthalten.

Diese Prüfsummen werden bei jedem Schreibvorgang aktualisiert und bei jedem Lesevorgang überprüft, um sicherzustellen, dass keine Datenkorruption oder Manipulation stattgefunden hat. In Kombination bieten dm-integrity und LUKS somit einen umfassenden Schutz sowohl vor unberechtigtem Zugriff als auch vor unentdeckter Datenmanipulation, was besonders in sicherheitskritischen Umgebungen von hoher Relevanz ist. Zuerst wird ein neuer LUKS-Container mit dm-integrity erstellt:

sudo cryptsetup luksFormat --integrity sha256 /dev/sdX1

Der Parameter --integrity gibt den Prüfsummen-Algorithmus an, hier SHA-256. Das gewährleistet, dass jede Veränderung an den verschlüsselten Daten erkannt wird. Nachdem der LUKS-Container erstellt wurde, öffnet man ihn wie gewohnt:

sudo cryptsetup open --integrity /dev/sdX1 my_integrity_volume

Ein Dateisystem wird jetzt auf dem geöffneten Volume angelegt:

sudo mkfs.ext4 /dev/mapper/my_integrity_volume

Mit dieser Methode wird ein zusätzlicher Schutzmechanismus integriert, der sicherstellt, dass jede Art von Datenmanipulation erkannt wird, selbst wenn der Angreifer in der Lage ist, die verschlüsselten Daten direkt auf dem Datenträger zu verändern.

Multi-Device-Verschlüsselung mit LUKS

Ein weiteres Szenario ist die Verwendung von LUKS zur Verschlüsselung von RAID-Arrays oder LVM-Volumes. Dies ermöglicht eine Kombination von Datensicherheit mit Redundanz oder flexibler Speicherverwaltung. LUKS auf einem RAID-Array. Zunächst wird ein RAID-Array erstellt, zum Beispiel mit mdadm:

sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdX1 /dev/sdY1

Danach kann das gesamte RAID-Array mit LUKS verschlüsselt werden:

sudo cryptsetup luksFormat /dev/md0sudo cryptsetup open /dev/md0 raid_luks

Jetzt wird wie gewohnt ein Dateisystem auf dem verschlüsselten RAID angelegt:

sudo mkfs.ext4 /dev/mapper/raid_luks

Mit Logical Volume Management (LVM) kann LUKS flexibel für einzelne Logische Volumes innerhalb einer Volume Group eingesetzt werden.

Zuerst wird ein Physical Volume erstellt:

sudo pvcreate /dev/sdX1

Eine Volume Group wird angelegt:

sudo vgcreate my_vg /dev/sdX1

Dann wird ein Logisches Volume erstellt:

sudo lvcreate -L 20G -n my_lv my_vg

Schließlich wird das Logische Volume mit LUKS verschlüsselt:

sudo cryptsetup luksFormat /dev/my_vg/my_lvsudo cryptsetup open /dev/my_vg/my_lv my_lv_lukssudo mkfs.ext4 /dev/mapper/my_lv_luks

Diese Kombination ermöglicht die Verschlüsselung einzelner Teile eines größeren Speichervolumens, was besonders in Umgebungen mit vielen unterschiedlichen Datenarten sinnvoll ist.

Bildergalerie

Automatisierte Entschlüsselung und Mounting mittels Network-Bound Disk Encryption (NBDE)

Für Unternehmensnetzwerke kann es sinnvoll sein, die Entschlüsselung von LUKS-Volumes bei Systemstart zu automatisieren, ohne dass ein manuelles Passwort erforderlich ist. Dies kann durch die Einrichtung von Network-Bound Disk Encryption (NBDE) erfolgen, wo der Entschlüsselungsschlüssel über ein Netzwerk bereitgestellt wird, beispielsweise mit Tang und Clevis.

Clevis auf dem Client installieren und konfigurieren, damit es den Schlüssel bei Systemstart automatisch abruft:

sudo clevis luks bind -d /dev/sdX1 tang '{"url": "http://tang-server"}'

Die Konfiguration ermöglicht es, dass das LUKS-Volume automatisch entschlüsselt wird, wenn das System mit dem Netzwerk verbunden ist, was den administrativen Aufwand in großen Netzwerken erheblich reduziert.

Ein weiterer Aspekt der erweiterten Nutzung von LUKS umfasst die Implementierung von zusätzlichen Sicherheitsmaßnahmen und komplexen Szenarien, die speziell auf individuelle Anforderungen abgestimmt sind. Hierbei können Techniken wie Key-Splitting, die Verwendung von HSMs (Hardware Security Modules) oder die Integration in Cloud-Infrastrukturen eine wichtige Rolle spielen.

Key-Splitting und Shamir Secret Sharing

Key-Splitting ist eine Technik, bei der ein Verschlüsselungsschlüssel in mehrere Teile aufgeteilt wird, von denen eine bestimmte Anzahl erforderlich ist, um den Schlüssel wieder zusammenzusetzen. Dies kann mit Shamir Secret Sharing umgesetzt werden, einer Methode zur sicheren Verteilung eines Geheimnisses. Um dies mit LUKS zu implementieren, könnte beispielsweise sss (Shamir Secret Sharing) verwendet werden, um den Schlüssel in mehrere Teile aufzuteilen:

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zur IT-Sicherheit

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung
cryptsetup luksDump /dev/sdX1 > luks-header.binopenssl rand -hex 32 > master_keysss-split -t 3 -n 5 < master_key > shards

Hier wird ein Master-Schlüssel generiert und in fünf Teile (Shards) aufgeteilt, von denen drei benötigt werden, um den Schlüssel wieder zusammenzusetzen. Schlüssel wiederherstellen und LUKS-Volume öffnen:

cat shards/1 shards/2 shards/3 | sss-combine > restored_keycryptsetup luksOpen --master-key-file restored_key /dev/sdX1 my_split_volume

Diese Methode stellt sicher, dass kein einzelner Benutzer oder Angreifer Zugriff auf das komplette Geheimnis hat, wodurch ein höheres Maß an Sicherheit gewährleistet wird.

Bildergalerie

Integration von Hardware Security Modules (HSMs)

Hardware Security Modules (HSMs) bieten eine besonders sichere Möglichkeit, kryptografische Schlüssel zu speichern und zu verwalten. LUKS kann so konfiguriert werden, dass die Entschlüsselungsschlüssel in einem HSM gespeichert werden. Um LUKS mit einem HSM zu integrieren, kann der folgende Ansatz verwendet werden:

pkcs11-tool --module /usr/lib/softhsm/libsofthsm2.so --login --keypairgen --key-type rsa:2048 --id 01 --label "LUKS Key"

LUKS so konfigurieren, dass der Schlüssel beim Entsperren aus dem HSM abgerufen wird:

cryptsetup luksAddKey /dev/sdX1 --key-file pkcs11:token=mytoken;object=LUKS Key;type=private

Diese Konfiguration bindet LUKS an den HSM, wodurch sichergestellt wird, dass die Schlüssel niemals im Arbeitsspeicher oder auf der Festplatte unverschlüsselt vorliegen.

Nutzung von LUKS in Cloud-Umgebungen

In Cloud-Infrastrukturen ist es notwendig, verschlüsselte Volumes dynamisch zu verwalten, wobei LUKS ebenfalls seine Stärken ausspielen kann. Besonders relevant ist dies bei der Verwaltung von encrypted block storage in Cloud-Diensten wie AWS, Azure oder Google Cloud. Automatisierte Entschlüsselung in Cloud-Umgebungen. In AWS kann beispielsweise AWS KMS (Key Management Service) genutzt werden, um die Entschlüsselungsschlüssel für LUKS zu verwalten:

aws kms encrypt --key-id alias/luks --plaintext fileb://master_key --output text --query CiphertextBlob > master_key_encrypted

Zum Entschlüsseln bei Volume-Attachments:

aws kms decrypt --ciphertext-blob fileb://master_key_encrypted --output text --query Plaintext > master_keycryptsetup luksOpen --master-key-file master_key /dev/xvdf my_cloud_volume

In Kubernetes-Umgebungen kann LUKS verwendet werden, um sicherzustellen, dass persistente Volumes (PVs) verschlüsselt sind. Ein CSI-Treiber kann eingerichtet werden, der automatisch LUKS-verschlüsselte Volumes bereitstellt. Secrets in Kubernetes können genutzt werden, um die Passphrase für die Entschlüsselung zu speichern und sicher zu verwalten.

apiVersion: v1kind: Secretmetadata: name: luks-passphrasetype: Opaquedata: passphrase: cGFzc3dvcmQ=

Diese Secret kann dann in einer StorageClass referenziert werden, die den CSI-Treiber nutzt, um LUKS-verschlüsselte Volumes zu erstellen.

Verschlüsselung von Swap und Temp Verzeichnissen

Ein oft vernachlässigter Bereich ist die Verschlüsselung von Swap-Partitionen und temporären Verzeichnissen, die ebenfalls sensible Informationen enthalten können. LUKS ermöglicht auch hier eine Absicherung. Um Swap mit LUKS zu verschlüsseln, wird zuerst eine Swap-Partition erstellt und dann mit LUKS geschützt:

sudo cryptsetup luksFormat /dev/sdX2sudo cryptsetup open /dev/sdX2 luks_swapsudo mkswap /dev/mapper/luks_swapsudo swapon /dev/mapper/luks_swap

Die Konfiguration in der /etc/crypttab sorgt dafür, dass die Verschlüsselung beim Booten automatisch aktiviert wird. Ähnlich kann das /tmp-Verzeichnis mit einem LUKS-verschlüsselten Volume abgesichert werden. Dies geschieht durch die Erstellung und Verschlüsselung eines temporären Volumes:

sudo cryptsetup luksFormat /dev/sdX3sudo cryptsetup open /dev/sdX3 luks_tmpsudo mkfs.ext4 /dev/mapper/luks_tmpsudo mount /dev/mapper/luks_tmp /tmp

Diese Konfiguration stellt sicher, dass alle temporären Dateien, die in /tmp gespeichert werden, verschlüsselt sind und beim Neustart des Systems gelöscht werden.

Bildergalerie

(ID:50177123)