NBDE: Network-Bound Disk Encryption (Artikel 086)
Automatisierte Entschlüsselung von LUKS-Partitionen in sicheren Netzwerken. Implementierung von Network-Bound Disk Encryption (NBDE) mittels Tang und Clevis.
# NBDE: Automatisierte Festplatten-Verschlüsselung im Enterprise-Netz
TL;DR / Management Summary Festplatten-Verschlüsselung (LUKS) ist auf Servern oft mühsam, da bei jedem Reboot ein Passwort händisch eingegeben werden muss. Network-Bound Disk Encryption (NBDE) löst dieses Problem für RHEL-Umgebungen. Mittels Clevis (Client) und Tang (Server) wird die Festplatte automatisch entschlüsselt, solange der Server im Firmennetzwerk steht und den Tang-Server erreicht. Wird der Server aus dem RZ entfernt, bleiben die Daten sicher verschlüsselt.
# 1. Einführung & Architektur
Sicherheit ohne manuelles Passwort.
NBDE nutzt das Prinzip der “gebundenen Verschlüsselung”. Der Schlüssel liegt nicht auf der Disk, sondern wird kryptografisch aus Informationen des lokalen Netzwerks (Tang-Server) abgeleitet.
# Die Architektur-Kette (Mermaid)
graph LR
A[Encrypted RHEL Server] -->|Boot: Request Key| B[Internal Network]
B --> C[Tang Server: Key Provider]
C -->|Verified Token| A
A -->|Auto-Unlock| D[LUKS Partition]
subgraph "Untrusted Environment (Theft)"
E[Encrypted Disk] -.-x|No Tang Access| F[Locked Data]
end
# 2. Server-Side: Tang Setup
Den Schlüssel-Server bereitstellen.
Ein Tang-Server ist zustandslos und extrem leichtgewichtig.
# Installation & Start
# Auf dem dedizierten Security-Server
sudo dnf install tang
sudo systemctl enable --now tangd.socket
# 3. Client-Side: Clevis Setup
Den Server an das Netzwerk binden.
# Pakete installieren
sudo dnf install clevis clevis-luks clevis-dracut
# Disk an Tang-Server binden
# Bindet /dev/sdb1 an den Tang Server
sudo clevis luks bind -d /dev/sdb1 tang '{"url":"http://tang-server.company.com"}'
Sie müssen beim einmaligen Binden das aktuelle LUKS-Passwort eingeben. Clevis fügt einen neuen Key-Slot hinzu.
# Boot-Integration (für Root-Partitionen)
Wenn die Root-Partition verschlüsselt ist, muss das Initramfs aktualisiert werden:
sudo dracut -f
# 4. Day-2 Operations: Hochverfügbarkeit
Was, wenn der Tang-Server down ist?
# SSS (Shamir’s Secret Sharing)
Binden Sie eine Disk an mehrere Tang-Server. So kann der Server auch booten, wenn einer der Key-Server gewartet wird.
sudo clevis luks bind -d /dev/sdb1 sss \
'{"t":1, "pins":{"tang":[{"url":"http://tang1"},{"url":"http://tang2"}]}}'
(t:1 bedeutet: Einer von beiden Servern reicht aus).
# 5. Troubleshooting & “War Stories”
Wenn der Bootvorgang hängen bleibt.
# Story 1: “Der DNS-Loop”
Symptom: Der Server bootet nicht und fragt nach dem Passwort, obwohl der Tang-Server läuft. Ursache: Clevis versucht den Tang-Server via Hostnamen zu erreichen, aber das Netzwerk/DNS ist im Initramfs-Stadium noch nicht bereit. Lösung: Nutzen Sie immer die IP-Adresse des Tang-Servers in der Clevis-Konfiguration oder stellen Sie sicher, dass das Netzwerk via Cloud-Init/Static-IP im Bootloader korrekt gesetzt ist.
# Story 2: “Das abgelaufene Zertifikat”
Symptom: Plötzlich schlägt die automatische Entschlüsselung fehl.
Ursache: Der Tang-Server hat seine Schlüssel rotiert, aber der Client hat den neuen Key noch nicht als vertrauenswürdig eingestuft.
Lösung: Führen Sie eine Neubindung durch oder nutzen Sie clevis luks report, um den Status zu prüfen.
# 6. Fazit & Empfehlung
- Sicherheit: NBDE ist perfekt für Server in Außenstellen (Edge) oder gemieteten Racks.
- Fallback: Behalten Sie immer ein manuelles Passwort in einem der 8 LUKS-Slots für den Notfall (Netzwerkausfall).
- Monitoring: Überwachen Sie die Erreichbarkeit des Tang-Servers (Port 80/TCP).
# Anhang: Cheatsheet
| Aufgabe | Befehl |
|---|---|
| Bindung prüfen | clevis luks list -d /dev/sda2 |
| Bindung entfernen | clevis luks unbind -d /dev/sda2 -s 1 |
| Tang Keys anzeigen | curl http://tang-server/adv |
| Manual Unlock Test | clevis luks unlock -d /dev/sda2 |
| Dracut Update | dracut -f --add clevis |