Mattschwarzes Server-Laufwerk, das wie eine Tresortür in einem dunklen Rechenzentrum steht, mit einem smaragdgrünen Schlüsselloch-Siegel auf der Vorderseite, beleuchtet von einem einzelnen Laserstrahl, der von außerhalb des Bildes einfällt
Anleitung

VPS-Festplatte mit LUKS verschlüsseln

Eine Festplatte zu verschlüsseln ist der leichte Teil. Es auf einer Maschine zu tun, die Sie nicht physisch anfassen können – sodass sie auch um 04:00 Uhr neu startet, ohne dass Sie an einer Konsole sitzen –, ist der Teil, den die meisten Anleitungen auslassen. Und klar zu benennen, was Verschlüsselung auf gemieteter Hardware tatsächlich bringt, ist der Teil, den fast alle von ihnen auslassen. Diese Anleitung deckt alle drei ab: ein LUKS2-Root-Volume, installiert aus dem Rescue-Modus, per SSH aus der Ferne entsperrt, mit einer nüchternen Aufstellung der Bedrohungen, die es abwehrt, und derer, die es nicht abwehrt.

„Sind meine Daten verschlüsselt?“ ist die Frage, die wir am häufigsten hören, und die ehrliche Antwort lautet: nicht, solange Sie sie nicht selbst verschlüsseln. Wir verschlüsseln Ihre Festplatten nicht für Sie, und das ist Absicht – ein Schlüssel, den wir besitzen, ist ein Schlüssel, zu dessen Herausgabe wir gezwungen werden können. Unsere Dokumentation sagt das in einem Satz; diese Anleitung ist die Langfassung, mit den Befehlen.

Was folgt, ist das Verfahren, das wir selbst verwenden: ein kleines unverschlüsseltes /boot, alles andere innerhalb eines LUKS2-Containers, und ein winziger SSH-Server im initramfs, sodass die Passphrase beim Booten von überall auf der Welt eingegeben werden kann. Es funktioniert identisch in allen vier unserer Regionen – Paris, Reykjavík, Zürich und Bucharest – weil die Hardware identisch ist. Es funktioniert auch bei jedem anderen Anbieter, der einen Rescue-Modus bereitstellt. Der letzte Abschnitt benennt die Grenzen, denn eine Anleitung, die nur erzählt, was Verschlüsselung behebt, will Ihnen etwas verkaufen.

Was Festplattenverschlüsselung auf einem VPS tatsächlich schützt

Verschlüsselung ist keine allgemeine Datenschutzeinstellung. Sie beantwortet genau eine Frage: Kann jemand diese Blöcke ohne den Schlüssel lesen? Alles andere – wer weiß, dass Sie den Server gemietet haben, ob sich der Datenverkehr Ihnen zuordnen lässt, ob ein Gericht irgendetwas erzwingen kann – spielt sich anderswo ab.

Auf einem VPS schützt LUKS wirksam gegen:

  • Ausgemusterte und defekte Hardware. NVMe-Laufwerke werden ersetzt. Secure-Erase auf einem defekten Gerät ist nicht immer möglich – manchmal ist es so kaputt, dass der Controller keine Befehle mehr annimmt, und es verlässt das Rack trotzdem.
  • Ein Offline-Image. Ein Volume, das kopiert wird, während der Server ausgeschaltet ist – bei einer Beschlagnahmung, einer Migration, einem Fehler –, ist Chiffretext und bleibt Chiffretext.
  • Backups und Snapshots, die die Maschine verlassen. Alles, was die Maschine verlässt, verlässt sie verschlüsselt, wenn es unterhalb Ihrer Kontrolle auf Blockebene entnommen wird, und sollte clientseitig verschlüsselt werden, wenn es oberhalb davon entnommen wird.
  • Restblöcke. Wenn Sie einen Server löschen, werden die zugrunde liegenden Extents irgendwann wiederverwendet. Verschlüsselung macht die Überbleibsel zu Rauschen statt zu Daten.

Sie schützt nicht vor einer laufenden Maschine. Solange Ihr Server läuft, liegt der Masterschlüssel im Kernel-Speicher, und jeder, der diesen Speicher auslesen kann, liest Ihre Festplatte, unabhängig von der Passphrase. Bei gemieteter Infrastruktur bedeutet das: der Hypervisor-Betreiber. Das sagen wir in unserem Datenschutzhinweis, und wir sagen es auch hier: Keine Disk-Encryption-Funktion irgendeines Anbieters ändert daran etwas, unsere eingeschlossen, und jeder Anbieter, der etwas anderes behauptet, beschreibt Marketing statt Kryptografie.

Drei Modelle – und welches Sie wirklich brauchen

Bevor Sie ein Terminal öffnen, wählen Sie das Modell. Sie unterscheiden sich enorm im Aufwand, und die meisten Menschen brauchen das erste.

1. Ein verschlüsseltes Datenvolume. Das System startet normal und unverschlüsselt; ein einzelner Verzeichnisbaum – ein Maildir, eine Datenbank, ein Archiv – liegt in einem LUKS-Container, den Sie nach jedem Boot von Hand öffnen. Zehn Minuten Arbeit, kein Rescue-Modus, kein Risiko, sich selbst auszusperren. Wenn es Ihnen um einen einzelnen Datenbestand geht und nicht um die gesamte Maschine, hören Sie hier auf – Sie erhalten den größten Teil des Nutzens bei einem Minimum an Störanfälligkeit. Das ist das Muster, das wir auf der Seite anonymer Mailserver empfehlen.

2. Ein verschlüsseltes Root-Volume mit Remote-Entsperrung. Alles außer /boot ist verschlüsselt, und jeder Boot hält im initramfs an, bis Sie sich per SSH einloggen und die Passphrase eingeben. Auf diesem Modell baut der Rest dieser Anleitung auf. Es kostet beim ersten Mal eine Stunde und danach einen SSH-Befehl pro Neustart, und es ist das einzige Modell, bei dem auch Logs, Paket-Caches, Shell-Verlauf und Swap abgedeckt sind – die Stellen, an denen Daten austreten, ohne dass es jemand so entschieden hätte.

3. Ein verschlüsseltes Root, das sich selbst gegen einen von Ihnen kontrollierten Schlüsselserver entsperrt. Wie Modell 2, aber Clevis holt das Entsperrmaterial von einem Tang-Server auf einer Maschine in einer anderen Jurisdiktion, sodass Neustarts unbeaufsichtigt ablaufen. Der Kompromiss ist präzise und lohnt sich zu verstehen: Der Server kann sich jetzt selbst entschlüsseln, solange Ihr Schlüsselserver zustimmt – das heißt, Sie haben das Geheimnis verlagert statt es zu beseitigen –, aber Sie haben auch einen Remote-Kill-Switch gewonnen. Mehr dazu weiter unten.

Warum wir Ihre Festplatte nicht für Sie verschlüsseln

Viele Hosting-Anbieter bewerben „Verschlüsselung im Ruhezustand“ als Häkchen auf einer Checkliste. Es lohnt sich, genau zu klären, was diese Formulierung meist bedeutet, denn dahinter verbergen sich zwei sehr unterschiedliche Dinge.

Verschlüsselung mit einem Schlüssel, den der Anbieter besitzt, schützt vor einer gestohlenen Festplatte und sonst nichts. Wenn der Anbieter Ihren Server booten kann, ohne Sie irgendetwas zu fragen, kann der Anbieter Ihren Server auch entschlüsseln, ohne Sie irgendetwas zu fragen – und das kann dann auch jeder, der den Anbieter dazu zwingen kann. Das ist ein echter Schutz gegen Diebstahl und ein rein dekorativer gegen rechtlichen Zwang.

Verschlüsselung mit einem Schlüssel, den Sie selbst besitzen, ist die Version, die etwas bringt, und sie verhindert konstruktionsbedingt den unbeaufsichtigten Neustart. Das ist kein Mangel, den man wegkonstruieren sollte – das ist genau die Eigenschaft, die die Arbeit leistet.

Wir liefern ausschließlich die zweite Option, unkonfiguriert, und überlassen Ihnen die Entscheidung. Was wir tatsächlich besitzen, ist enger gefasst und dokumentiert: Root-Passwörter der Server werden auf Zeilenebene AES-256-CBC-verschlüsselt gespeichert, wir bewahren keine Flow-Logs oder Paketmitschnitte auf, und ein signierter Warrant Canary wird nach Zeitplan veröffentlicht. Nichts davon ersetzt Ihren eigenen Schlüssel – es ist der Teil, an dem man uns in der Zwischenzeit messen kann.

Cipher, Schlüssellänge und die Argon2-Speicherfalle

Die Standardwerte sind gut. Zwei davon lohnt es sich zu überschreiben.

Cipher. aes-xts-plain64 mit einem 512-Bit-Schlüssel ist die Voreinstellung und die richtige Wahl – die 512 Bit sind zwei 256-Bit-Schlüssel, das ist also AES-256 im XTS-Modus, und jede CPU, die wir betreiben, hat AES-NI. Auf einer Maschine ohne AES-Beschleunigung würden Sie xchacha20,aes-adiantum-plain64 vorziehen, aber das ist nicht unsere Hardware und vermutlich auch nicht Ihre.

Schlüsselableitung. LUKS2 verwendet standardmäßig Argon2id, das absichtlich speicherintensiv ist. cryptsetup benchmarkt Ihre Maschine beim Formatieren und wählt anhand des sichtbaren RAM einen Speicherkostenwert – und hier liegt die Falle, die für die meisten Meldungen der Art „mein verschlüsselter Server startet nicht mehr“ verantwortlich ist: Im initramfs steht weniger nutzbarer Speicher zur Verfügung als im laufenden System, und wenn Sie das Volume in einer Rescue-Umgebung mit mehr RAM formatiert haben, als der Zielplan besitzt, kann die Entsperrung beim Booten fehlschlagen oder abgebrochen werden. Legen Sie den Wert deshalb explizit fest. Ein GiB Argon2-Speicher ist für einen Angreifer eine ernsthafte Hürde und für einen S1 mit 4 GB problemlos machbar:

cryptsetup luksFormat --type luks2 \
  --cipher aes-xts-plain64 --key-size 512 --hash sha256 \
  --pbkdf argon2id --pbkdf-memory 1048576 --pbkdf-parallel 4 \
  /dev/vda2

--pbkdf-memory wird in KiB angegeben, 1048576 entspricht also 1 GiB. Prüfen Sie im Anschluss mit cryptsetup luksDump /dev/vda2, was tatsächlich im Header gelandet ist – der Abschnitt zu den Key-Slots zeigt die Speicher- und Iterationswerte an, die verwendet werden, und das einmal nachzulesen ist billiger als ein fehlgeschlagener Boot.

Die Passphrase. Argon2 verschafft Zeit gegen eine schwache Passphrase; es rettet sie nicht. Verwenden Sie eine Diceware-Phrase aus mindestens sechs Wörtern. Sie ist das einzige Geheimnis im System, und keine Schlüsselableitungsfunktion gleicht eine schlechte aus.

Wie Remote-Entsperrung tatsächlich funktioniert

Ein Linux-Boot mit verschlüsseltem Root hat ein Henne-Ei-Problem: Kernel und initramfs müssen geladen werden, bevor überhaupt nach einer Passphrase gefragt werden kann, und beide liegen auf der Festplatte, die Sie entsperren wollen. Die Standardlösung ist eine kleine unverschlüsselte /boot-Partition mit Kernel, initramfs und Bootloader. Alles andere liegt innerhalb von LUKS.

Das initramfs hält dann an und fragt nach der Passphrase. Auf einem Laptop tippen Sie sie ein. Bei einem Server dreitausend Kilometer entfernt brauchen Sie eine von zwei Möglichkeiten:

  • Die Konsole. Jeder Server in Ihrem Dashboard hat eine noVNC-Konsole, und sie funktioniert – aber die Tastatureingaben durchlaufen unsere Infrastruktur, also genau die Partei, die Ihr Schlüssel eigentlich ausschließen soll. Für eine einmalige Rettungsaktion in Ordnung, als Routine falsch.
  • Ein SSH-Server im initramfs. dropbear-initramfs ist etwa 200 KB groß, bringt das Netzwerk hoch, lauscht auf einem Port Ihrer Wahl, akzeptiert einen Ihrer Public Keys und führt Sie direkt zur Passphrase-Abfrage. Die Passphrase ist Ende-zu-Ende verschlüsselt, von Ihrem Laptop bis zum initramfs. Das ist die richtige Antwort.

Zwei Details bringen Leute aus dem Konzept. Das Dropbear im initramfs hat seinen eigenen Host-Key, sein Fingerabdruck weicht also von dem Ihres normalen SSH-Daemons ab – das ist zu erwarten, kein Man-in-the-Middle, und es verdient eine eigene known_hosts-Datei statt der Angewohnheit, einfach yes einzutippen. Und der Interface-Name muss stimmen: virtio-NICs kommen unter Debian 13 meist als ens3 oder enp1s0 hoch, nicht als eth0. Prüfen Sie das mit ip -br link, bevor Sie die Konfiguration schreiben, denn ein falscher Name bedeutet ein initramfs ohne Netzwerk und einen Ausflug zur Konsole.

Unbeaufsichtigte Neustarts mit Clevis und Tang

Wenn die Maschine von selbst wieder hochkommen muss – nach einem Kernel-Update, einem Host-Neustart, einem Stromausfall –, ist das Eintippen einer Passphrase keine Option. Clevis bindet einen LUKS-Key-Slot an eine externe Richtlinie, und Tang ist ein winziger Schlüsselaustausch-Server, der die einfachste brauchbare davon umsetzt.

# on a small server you control, elsewhere
apt install -y tang
systemctl enable --now tangd.socket

# on the encrypted VPS
apt install -y clevis clevis-luks clevis-initramfs
clevis luks bind -d /dev/vda2 tang '{"url":"http://tang.internal:7500"}'
update-initramfs -u -k all

Beim Booten führt das initramfs einen McCallum-Relyea-Austausch mit Tang durch und gewinnt den Schlüssel zurück, ohne dass der Tang-Server ihn je erfährt oder die Passphrase zu sehen bekommt. Die Eigenschaften lohnt es sich, genau zu benennen:

  • Der VPS entschlüsselt sich selbst nur, solange er Tang erreichen kann. Schalten Sie Tang ab, oder rotieren Sie dessen Schlüssel, bleibt der nächste Boot stehen. Das ist ein echter Remote-Kill-Switch – ungewöhnlich und nützlich.
  • Tang sollte nicht im öffentlichen Internet stehen. Erreichen Sie es über WireGuard oder als Tor-Onion-Dienst; die Tunnel-Seite behandeln wir in der WireGuard-Anleitung.
  • Platzieren Sie Tang in einer anderen Jurisdiktion als die Daten. Unsere Jurisdiktionsseiten existieren genau für diese Art von Aufteilung.
  • Bewahren Sie eine Passphrase in einem weiteren Key-Slot auf. Clevis ist eine Komfortschicht, nicht Ihr einziger Weg hinein.

Machen Sie sich klar, was Sie da gebaut haben: Eine unbeaufsichtigte Maschine hält ihren eigenen Schlüssel stellvertretend bereit, sodass ein Angreifer, der den VPS im laufenden Betrieb beschlagnahmt oder Ihren Tang-Server erreichen kann, an die Daten kommt. Das ist eine echte Schwächung gegenüber einer Passphrase, die nur in Ihrem Kopf existiert. Wählen Sie diesen Weg, wenn Verfügbarkeit wichtiger ist als das letzte bisschen Geheimhaltung, und nicht standardmäßig.

Swap, temporäre Dateien und wo Klartext entweicht

Ein verschlüsseltes Root deckt den größten Teil der Angriffsfläche ab, aber ein paar Pfade schreiben daran vorbei oder überleben es.

  • Swap. Alles, was im RAM liegt, kann auf die Festplatte ausgelagert werden – Schlüssel, Nachrichteninhalte, entschlüsselte Puffer. Liegt Swap als Swapfile innerhalb des verschlüsselten Volumes, ist es abgedeckt. Eine separate Swap-Partition ist es nicht, außer Sie tragen sie mit einem zufälligen Schlüssel, der bei jedem Boot wechselt, in /etc/crypttab ein: cryptswap /dev/vda3 /dev/urandom swap,cipher=aes-xts-plain64,size=256. Auf einem VPS ist das Swapfile einfacher, und es gibt keinen Grund, die Partition vorzuziehen.
  • /tmp. Binden Sie es als tmpfs ein (tmpfs /tmp tmpfs defaults,nosuid,nodev,size=512M 0 0), damit es die Festplatte überhaupt nie berührt. Auch schneller.
  • Ruhezustand. Schreibt den gesamten RAM, einschließlich Ihres Masterschlüssels, auf das Swap-Gerät. Aktivieren Sie das nicht. Auf unseren Images ist es standardmäßig deaktiviert.
  • Das unverschlüsselte /boot. Kernel, initramfs-Images und die GRUB-Konfiguration sind für jeden mit Offline-Zugriff auf die Festplatte lesbar und, wichtiger noch, beschreibbar. LUKS gibt Ihnen Vertraulichkeit, keine Boot-Integrität. Wenn Ihr Bedrohungsmodell jemanden einschließt, der am Bootloader manipuliert, wird Verschlüsselung allein das nicht bemerken – protokollieren Sie die Hashes von /boot nach jedem Kernel-Update und prüfen Sie sie von außerhalb, oder nehmen Sie diese Lücke bewusst in Kauf.
  • Bestehende Snapshots und alte Volumes. Heute zu verschlüsseln bringt nichts für ein Image, das gestern erstellt wurde. Wenn der Server jemals unverschlüsselt mit Daten lief, die Ihnen wichtig sind, behandeln Sie diese Daten als offengelegt und rotieren Sie alles, was sich davon ableitet.

Performance: was es kostet und was sich abstimmen lässt

Der Overhead ist gering genug, dass er nicht die Entscheidung treiben sollte, aber er ist nicht null. Messen Sie, statt zu spekulieren:

cryptsetup benchmark

Auf unseren EPYC-Nodes benchmarkt aes-xts mit einem 512-Bit-Schlüssel im niedrigen einstelligen Gigabyte-pro-Sekunde-Bereich pro Kern – deutlich über dem, was ein einzelnes NVMe-Volume je verlangen wird. Was sich tatsächlich bemerkbar macht, sind Latenz und CPU-Last bei kleinen zufälligen Schreibzugriffen, nicht der Durchsatz.

Zwei LUKS2-Flags sind auf NVMe relevant, wo die dm-crypt-Work-Queues des Kernels eher Latenz hinzufügen als sie zu entfernen. Setzen Sie sie und schreiben Sie sie dauerhaft in den Header:

cryptsetup refresh cryptroot \
  --perf-no_read_workqueue --perf-no_write_workqueue --persistent

Das dritte Flag, --allow-discards, reicht TRIM an das darunterliegende Gerät durch. Es hält die Schreibverstärkung über die Lebensdauer des Volumes niedrig, auf Kosten dessen, dass sichtbar wird, welche Blöcke ungenutzt sind – was jedem, der das Rohgerät ausliest, die ungefähre Größe und Form Ihrer Daten verrät. Aktivieren Sie es für einen Allzweck-Server; lassen Sie es aus, wenn schon die Tatsache, dass ein Volume zu 3 % gefüllt ist, für sich genommen sensibel ist. Es gibt keine universell richtige Antwort, nur eine Entscheidung, die Sie bewusst treffen sollten.

Der Header, die Key-Slots und der Tag, an dem etwas schiefgeht

Der LUKS-Header ist etwa 16 MB groß und liegt am Anfang der Partition; er enthält die verschlüsselten Kopien des Masterschlüssels. Beschädigen Sie ihn – ein vertipptes dd, ein Partitionierungstool, das hilfsbereit den Anfang des Geräts überschreibt –, ist jedes Byte dahinter verloren. Es gibt keinen Wiederherstellungsdienst. Wir besitzen keine Kopie.

# back it up, off the server, before you put data on the volume
cryptsetup luksHeaderBackup /dev/vda2 \
  --header-backup-file luks-header-$(date +%F).img

# add a second passphrase while you still have the first
cryptsetup luksAddKey /dev/vda2

# see what is in the header
cryptsetup luksDump /dev/vda2

Zwei Dinge zu diesem Backup. Es ist genauso sensibel wie die Festplatte selbst: Es enthält Key-Slots, sodass ein altes Header-Backup, das nach einem Passphrase-Wechsel wiederhergestellt wird, klaglos die alte Passphrase akzeptiert. Bewahren Sie es so auf wie die Passphrase, und vernichten Sie veraltete Kopien, wenn Sie rotieren. Zweitens: LUKS2 gibt Ihnen 32 Key-Slots – nutzen Sie mindestens zwei, wobei der Ersatz eine lange, zufällige Passphrase sein sollte, die an einem anderen Ort aufbewahrt wird als Ihre tägliche. Der Fehlerfall, den das verhindert, ist banal und häufig: Sie rotieren die Passphrase, vertippen sie beim zweiten Mal auf dieselbe falsche Weise, und bemerken es erst beim nächsten Neustart statt beim nächsten Login.

Sorgen Sie auch für einen Weg zurück hinein. Der Rescue-Modus bootet den Server von unserer ISO mit Ihren injizierten SSH-Keys, ohne das verschlüsselte Volume anzurühren – das heißt, Sie können mit cryptsetup open /dev/vda2 rescue && mount /dev/mapper/rescue /mnt ein defektes crypttab oder ein kaputtes initramfs reparieren, ohne die Daten zu verlieren. Testen Sie das einmal bewusst, solange nichts kaputt ist.

Was Verschlüsselung nicht kann, unverblümt gesagt

Das Nützlichste, was eine Anleitung wie diese tun kann, ist, ihre eigenen Grenzen zu markieren.

  • Sie schützt keinen laufenden Server. Der Masterschlüssel liegt vom Entsperren bis zum Herunterfahren im Kernel-Speicher. Speicherzugriff auf Hypervisor-Ebene hebelt das aus. Speicherverschlüsselung – AMD SEV-SNP und Vergleichbares – ist die einzige Technologie, die daran wirklich etwas ändert, und wir bieten sie heute nicht an; ein Anbieter, der ohne SEV behauptet, Ihre laufende VM sei dagegen undurchsichtig, irrt sich oder lügt.
  • Sie macht Sie nicht anonym. Eine verschlüsselte Festplatte in Zürich hat trotzdem eine IP, eine Zahlungsspur und eine SSH-Sitzung, die irgendwo begonnen hat. Das ist ein anderes Problem, und wir haben aufgeschrieben, wie es dabei schiefgeht, in den Fehlern, die Sie deanonymisieren.
  • Sie ändert nichts daran, was ein Gericht anordnen kann. Jurisdiktion regelt den Zwang, Verschlüsselung regelt die Lesbarkeit. In manchen Jurisdiktionen können Sie persönlich zur Offenlegung einer Passphrase verpflichtet werden. Unsere Anleitung zu rechtlichen Verfahren beschreibt, was wir umsetzen und was nicht.
  • Sie übersteht keine verlorene Passphrase. Das ist Absicht, und es lohnt sich, es zu wiederholen, denn das Support-Ticket mit der Bitte um Hilfe erreicht uns etwa einmal im Monat, und die Antwort ist immer dieselbe.
  • Sie authentifiziert nicht die Boot-Kette. Vertraulichkeit ist keine Integrität. /boot ist offline lesbar und veränderbar.

Was sie tatsächlich tut: eine ganze Klasse von Angriffsfläche beseitigen – alles, was einer Festplatte passiert, wenn sie nicht läuft, und das ist das meiste, was Festplatten passiert. Das ist eine Stunde wert. Kombinieren Sie es mit einer No-KYC-Anmeldung, Zahlung mit Monero und einer bewusst gewählten Jurisdiktion, und jede Schicht deckt einen anderen Fehlerfall ab. Keine davon deckt sie alle ab.

  1. Server bereitstellen und in den Rescue-Modus booten

    Stellen Sie einen beliebigen Plan und eine beliebige Region mit einem Standard-Debian-13-Image bereit – das installierte System wird gleich ersetzt, die Wahl des Images spielt also kaum eine Rolle. Gehen Sie dann zu Server → Recovery → Boot into rescue. Die Rescue-Umgebung injiziert die SSH-Keys, die bereits in Ihrem Konto hinterlegt sind, und lässt die Festplatte unangetastet, sodass Sie eine Root-Shell erhalten, in der /dev/vda ausgehängt und frei ist. Beachten Sie, dass sich der Host-Key-Fingerabdruck des Rescue-Systems von dem des installierten Systems unterscheidet; das ist zu erwarten.

  2. Die Festplatte partitionieren: ein kleines Klartext-/boot, ein großer LUKS-Container

    Zwei Partitionen. Ein Gigabyte für /boot – genug für mehrere Kernel – und der Rest für das verschlüsselte Volume.

    sgdisk --zap-all /dev/vda
    sgdisk -n1:0:+1G   -t1:8300 -c1:boot   /dev/vda
    sgdisk -n2:0:0     -t2:8309 -c2:crypt  /dev/vda
    partprobe /dev/vda && lsblk /dev/vda

    Typ 8309 kennzeichnet die zweite Partition als Linux-LUKS-Volume. Falls Ihr Server im UEFI-Modus bootet, machen Sie Partition 1 zu einer ESP (-t1:ef00, mit FAT32 formatiert und unter /boot/efi eingehängt) und fügen Sie ein separates 1-GB-/boot hinzu; das BIOS-Layout oben ist das, was unsere Images standardmäßig verwenden.

  3. Das LUKS2-Volume erstellen und öffnen

    Legen Sie die Argon2-Speicherkosten explizit fest, damit das initramfs sie später auch stemmen kann.

    cryptsetup luksFormat --type luks2 \
      --cipher aes-xts-plain64 --key-size 512 --hash sha256 \
      --pbkdf argon2id --pbkdf-memory 1048576 --pbkdf-parallel 4 \
      /dev/vda2
    
    cryptsetup open /dev/vda2 cryptroot
    mkfs.ext4 -L root /dev/mapper/cryptroot
    mkfs.ext2 -L boot /dev/vda1

    Verwenden Sie eine Passphrase aus mindestens sechs Diceware-Wörtern und schreiben Sie sie physisch auf, bevor Sie fortfahren. Niemand kann sie für Sie wiederherstellen – das ist genau die Eigenschaft, für die Sie bezahlen.

  4. Debian in das verschlüsselte Volume installieren

    Hängen Sie das neue Root ein, debootstrappen Sie ein Basissystem hinein, und binden Sie die Kernel-Dateisysteme ein, damit sich der chroot korrekt verhält.

    mount /dev/mapper/cryptroot /mnt
    mkdir -p /mnt/boot && mount /dev/vda1 /mnt/boot
    
    debootstrap --arch=amd64 trixie /mnt http://deb.debian.org/debian
    
    for d in dev dev/pts proc sys run; do mount --bind /$d /mnt/$d; done
    chroot /mnt /bin/bash

    Installieren Sie innerhalb des chroot die Bestandteile, die ein verschlüsseltes Root bootfähig und erreichbar machen:

    apt update && apt install -y linux-image-amd64 grub-pc \
      cryptsetup cryptsetup-initramfs dropbear-initramfs \
      openssh-server ifupdown ca-certificates locales
  5. crypttab, fstab und die initramfs-Netzwerkkonfiguration schreiben

    crypttab teilt dem initramfs mit, welches Gerät entsperrt werden soll; initramfs.conf sagt ihm, wie es zuerst ins Netzwerk kommt. Verwenden Sie die LUKS-UUID, niemals /dev/vda2 – Gerätenamen können sich ändern.

    echo "cryptroot UUID=$(blkid -s UUID -o value /dev/vda2) none luks,discard" \
      > /etc/crypttab
    
    cat > /etc/fstab <<'EOF'
    /dev/mapper/cryptroot  /      ext4  defaults,noatime  0 1
    LABEL=boot             /boot  ext2  defaults          0 2
    tmpfs                  /tmp   tmpfs defaults,nosuid,nodev,size=512M 0 0
    EOF
    
    # DHCP on the virtio NIC. Confirm the name with `ip -br link` first.
    echo 'IP=:::::ens3:dhcp' >> /etc/initramfs-tools/initramfs.conf
    echo 'DEVICE=ens3'       >> /etc/initramfs-tools/initramfs.conf

    Lassen Sie ,discard aus der crypttab-Zeile weg, wenn Sie lieber nicht preisgeben möchten, welche Blöcke ungenutzt sind. Für eine statische Adresse statt DHCP lautet die Feldreihenfolge IP=<ip>::<gateway>:<netmask>::<iface>:off.

  6. Ihren Entsperr-Key im initramfs hinterlegen und Dropbear absichern

    Nur der Key, den Sie hier hinterlegen, kann die Maschine beim Booten entsperren. Halten Sie ihn getrennt von Ihrem alltäglichen SSH-Key, damit der Verlust des einen nicht auch den anderen kostet.

    install -d -m 0755 /etc/dropbear/initramfs
    cat > /etc/dropbear/initramfs/authorized_keys <<'EOF'
    ssh-ed25519 AAAAC3Nza... unlock@laptop
    EOF
    chmod 0600 /etc/dropbear/initramfs/authorized_keys
    
    cat > /etc/dropbear/initramfs/dropbear.conf <<'EOF'
    DROPBEAR_OPTIONS="-p 2222 -s -j -k -I 180 -c cryptroot-unlock"
    EOF
    
    update-initramfs -u -k all
    dropbearkey -y -f /etc/dropbear/initramfs/dropbear_ed25519_host_key | grep -i fingerprint

    -p 2222 hält den Entsperrdienst von Port 22 fern, sodass er nie mit dem sshd des laufenden Systems kollidiert; -s verbietet Passwort-Logins, -j und -k deaktivieren Port-Forwarding, -I 180 beendet inaktive Sitzungen, und -c cryptroot-unlock sorgt dafür, dass jeder erfolgreiche Login direkt zur Passphrase-Abfrage führt. Notieren Sie sich diesen Fingerabdruck jetzt – so erkennen Sie später, dass Sie mit Ihrem eigenen initramfs sprechen. Unter Debian 11 und älter liegen diese Dateien stattdessen unter /etc/dropbear-initramfs/.

  7. Bootloader installieren, Root-Passwort setzen, neu starten

    GRUB kommt auf die Festplatte, nicht auf die Partition. Da /boot unverschlüsselt ist, wird GRUB_ENABLE_CRYPTODISK nicht benötigt.

    grub-install /dev/vda
    update-grub
    passwd root
    echo 'cryptovps' > /etc/hostname
    exit                    # leave the chroot
    
    umount -R /mnt
    cryptsetup close cryptroot
    reboot

    Schalten Sie den Server anschließend im Dashboard aus dem Rescue-Modus, damit er von der Festplatte bootet. Lassen Sie für diesen ersten Boot die noVNC-Konsole offen – kommt das initramfs ohne Netzwerk hoch, sehen Sie es dort und können den Interface-Namen korrigieren, statt raten zu müssen.

  8. Aus der Ferne entsperren und bestätigen, dass das Volume wirklich verschlüsselt ist

    Warten Sie dreißig Sekunden, und verbinden Sie sich dann auf Port 2222 mit dem initramfs. Legen Sie dessen Host-Key in einer eigenen Datei ab, damit er sich nie mit Ihrer normalen known_hosts vermischt.

    ssh -p 2222 -o UserKnownHostsFile=~/.ssh/known_hosts.initramfs \
        -i ~/.ssh/id_ed25519_unlock root@<server-ip>
    # the passphrase prompt appears immediately; type it, the session closes,
    # and the machine finishes booting into the decrypted root.
    
    # once you are in the running system:
    lsblk -o NAME,FSTYPE,MOUNTPOINT
    cryptsetup status cryptroot
    cryptsetup luksDump /dev/vda2 | head -20

    cryptsetup status sollte type: LUKS2, cipher: aes-xts-plain64 und keysize: 512 bits melden. Erledigen Sie jetzt die zwei Dinge, die jeder aufschiebt: Sichern Sie den LUKS-Header außerhalb des Servers, und legen Sie einen zweiten Key-Slot an. Starten Sie dann absichtlich noch einmal neu, um zu beweisen, dass der Entsperrpfad auch dann funktioniert, wenn Sie es nicht erwarten.

Vergleich

Drei Wege zu verschlüsseln – und was jeder davon kostet

Die drei praktikablen Modelle der Festplattenverschlüsselung auf einem VPS im Vergleich, anhand der Frage, die zwischen ihnen entscheidet: was beim nächsten Neustart passiert.
ModellWas verschlüsselt istBeim nächsten NeustartEinrichtungsaufwandAm besten für
Verschlüsseltes DatenvolumeEin Verzeichnisbaum innerhalb eines LUKS-ContainersServer bootet normal; Sie öffnen den Container von Hand~10 Minuten, kein Rescue-ModusEin einzelner sensibler Datenbestand – Maildir, Datenbank, Archiv
Verschlüsseltes Root + Remote-Entsperrung per SSHAlles außer /boot – Logs, Swap, Caches, VerlaufBoot pausiert im initramfs, bis Sie sich per SSH einloggen und die Passphrase eingeben~1 Stunde, Installation aus dem Rescue-ModusEine Maschine, deren gesamter Zustand sensibel ist und deren Neustarts Sie begleiten können
Verschlüsseltes Root + Clevis/TangAlles außer /bootEntsperrt sich selbst, solange es Ihren Tang-Server erreicht; bleibt stehen, wenn nicht~1 Stunde, plus ein zweiter Server unter Ihrer KontrolleUnbeaufsichtigte Maschinen, bei denen Verfügbarkeit wichtiger ist als das letzte bisschen Geheimhaltung
FAQ

Fragen, die eine Antwort verdienen

Kann CryptoVpsHost die Daten auf meinem Server lesen?

Bei einem laufenden Server im Prinzip ja – und das gilt für jeden Anbieter virtualisierter Infrastruktur, auch für die, die etwas anderes behaupten. Der Masterschlüssel eines entsperrten LUKS-Volumes liegt im Kernel-Speicher, und dieser Speicher gehört dem Hypervisor. Was LUKS beseitigt, ist alles andere: ein abgeschaltetes Volume, ein ausgemustertes Laufwerk, ein kopiertes Image, ein Backup. Wir verschlüsseln Festplatten nicht für Sie, gerade weil ein Schlüssel, den wir besitzen, ein Schlüssel ist, zu dessen Herausgabe wir gezwungen werden können, und das sagen wir lieber offen, als ein Häkchen auf einer Liste zu verkaufen. Wenn Ihr Bedrohungsmodell den Betreiber einer laufenden Maschine einschließt, löst das keine Disk-Encryption-Funktion von irgendjemandem.

Verlangsamt vollständige Festplattenverschlüsselung einen VPS?

Kaum, auf Hardware mit AES-NI – und das ist bei uns jede. Führen Sie cryptsetup benchmark aus, und Sie werden aes-xts im niedrigen einstelligen Gigabyte-pro-Sekunde-Bereich pro Kern sehen, weit über dem, was ein einzelnes NVMe-Volume verlangt. Der messbare Preis ist etwas zusätzliche Latenz und CPU-Last bei kleinen zufälligen Schreibzugriffen, nicht beim Durchsatz. Auf NVMe entfernt das Setzen von --perf-no_read_workqueue und --perf-no_write_workqueue zusammen mit --persistent das meiste, was übrig bleibt.

Was passiert, wenn ich die Passphrase verliere?

Die Daten sind verloren. Es gibt keine Wiederherstellung, keinen bei uns hinterlegten Ersatzschlüssel und kein Support-Ticket, das daran etwas ändert – wir hatten nie eine Kopie. Das ist die Eigenschaft, für die Sie bezahlen, und deshalb sagt diese Anleitung zweimal: Sichern Sie den LUKS-Header außerhalb des Servers, und legen Sie einen zweiten Key-Slot mit einer anderen, langen Passphrase an, bevor Sie echte Daten auf das Volume legen. Eine Passphrase, die nur an einem einzigen Ort existiert, und sei es nur in Ihrem Kopf, ist ein Single Point of Failure.

Ist /boot auch verschlüsselt?

Nein, und das ist normal. Kernel und initramfs müssen lesbar sein, bevor überhaupt nach einer Passphrase gefragt werden kann, deshalb liegen sie auf einer kleinen Klartext-Partition. GRUB kann ein verschlüsseltes /boot mit GRUB_ENABLE_CRYPTODISK lesen, aber das verschiebt das Problem nur – die Bootloader-Stufe davor liegt weiterhin im Klartext. Ehrlich formuliert gibt Ihnen LUKS Vertraulichkeit der ruhenden Daten, keine Integrität der Boot-Kette. Wenn Offline-Manipulation an /boot Teil Ihres Bedrohungsmodells ist, hashen Sie es nach jedem Kernel-Update und prüfen Sie es von außerhalb der Maschine.

Kann der Server neu starten, ohne dass ich etwas eingeben muss?

Nur, wenn Sie ihm einen Weg geben, an den Schlüssel zu kommen, was die Garantie zwangsläufig schwächt. Die saubere Variante ist Clevis, gebunden an einen Tang-Server auf einer Maschine, die Sie in einer anderen Jurisdiktion kontrollieren: Der VPS entsperrt sich selbst, solange er Tang erreichen kann, und bleibt stehen, wenn nicht – was zugleich als Remote-Kill-Switch dient. Erreichen Sie Tang über WireGuard oder einen Tor-Onion-Dienst statt über das öffentliche Internet, und bewahren Sie eine Passphrase in einem zweiten Key-Slot auf, damit Clevis nie Ihr einziger Weg hinein ist.

Geht das mit jedem Betriebssystem-Image, oder nur mit Debian?

Jedes Linux-Image mit Rescue-Modus funktioniert; die Befehle hier sind für Debian 13 und übertragen sich direkt auf Ubuntu 24.04. Bei Rocky, Alma und Fedora ist das Tooling dracut statt initramfs-tools, weshalb die Remote-Entsperrung das Modul dracut-crypt-ssh oder ein netzwerkfähiges dracut-initramfs statt dropbear-initramfs verwendet – die LUKS-Seite ist identisch. Wenn Sie überhaupt nicht aus einer Rescue-Shell heraus aufbauen möchten, laden Sie eine eigene ISO mit bis zu 4 GiB hoch und verwenden Sie den Installer Ihrer Distribution, der verschlüsseltes LVM als Standardoption anbietet; die Remote-Entsperrung fügen Sie danach hinzu.

Sollte ich auf Verschlüsselung oder auf eine andere Jurisdiktion setzen?

Beides löst unterschiedliche Probleme, und die Frage ist eine falsche Alternative. Verschlüsselung entscheidet, ob Blöcke lesbar sind; Jurisdiktion entscheidet, wer was erzwingen kann, und wie schnell. Ein LUKS-Volume in Paris und ein Klartext-Volume in Zürich versagen auf völlig unterschiedliche Weise. Die meisten, die das fragen, wollen beides, dazu eine No-KYC-Anmeldung, damit es von vornherein nichts offenzulegen gibt – jede Schicht deckt eine Lücke ab, die die anderen offenlassen. Unsere Jurisdiktionsseiten legen dar, was jede unserer vier Regionen tatsächlich bietet.

Deploy your offshore server.

Wählen Sie eine Region. Wählen Sie einen Plan. Fügen Sie einen Schlüssel ein. Zahlen Sie. Die nächsten 47 Sekunden gehen auf uns.