Arch manual pages

CRYPTTAB(5) crypttab CRYPTTAB(5)

crypttab - Konfiguration für verschlüsselte Blockgeräte

/etc/crypttab

Die Datei /etc/crypttab beschreibt verschlüsselte Blockgeräte, die während der frühen Systemstartphase eingerichtet werden.

Leere Zeilen und Zeilen, die mit dem Zeichen »#« beginnen, werden ignoriert. Jede andere verbleibende Zeile beschreibt ein verschlüsseltes Blockgerät. Felder werden durch Leeraum begrenzt.

Jede Zeile hat die Form

Laufwerksname verschlüsseltes_Gerät Schlüsseldatei Optionen

Die ersten zwei Felder sind verpflichtend, die verbleibenden zwei optional.

Die Einrichtung eines verschlüsselten Blockgerätes mittels dieser Datei kann in drei Verschlüsselungsmodi erfolgen: LUKS, TrueCrypt und einfach. Siehe cryptsetup(8) für weitere Informationen über jeden Modus. Wenn kein Modus in dem Optionsfeld festgelegt wurde und das Blockgerät eine LUKS-Signatur enthält, dann wird es als LUKS-Gerät geöffnet. Andernfalls wird angenommen, dass es in rohem DM-Crypt-Format (einfacher Modus) ist.

Das erste Feld enthält den Namen des resultierenden verschlüsselten Laufwerks; sein Blockgerät wird unterhalb von /dev/mapper/ eingerichtet.

Das zweite Feld enthält einen Pfad zu dem darunterliegenden Blockgerät oder der Datei oder eine Festlegung eines Blockgerätes mittels »UUID=« gefolgt von der UUID.

Das dritte Feld gibt einen absoluten Pfad auf eine Datei an, aus der der Verschlüsselungsschlüssel gelesen werden soll. Optional kann dem Pfad »:« und eine Fstab-Geräteangabe folgen (z.B. beginnend mit »LABEL=« oder ähnlichem). In diesem Fall ist der Pfad relativ zu der Wurzel des Gerätedateisystems. Falls das Feld nicht vorhanden oder auf »none« oder »-« gesetzt ist, wird eine Schlüsseldatei, die nach dem zu entsperrenden Laufwerk benannt ist (d.h. der ersten Spalte der Zeile), der ».key« angehängt ist, automatisch aus den Verzeichnissen /etc/cryptsetup-keys.d/ und /run/cryptsetup-keys.d/ geladen, falls vorhanden. Andernfalls muss das Passwort während des Systemstarts manuell eingegeben werden. Für die Verschlüsselung des Auslagerungsbereichs kann /dev/urandom als Schlüsseldatei verwandt werden.

Das vierte Feld, falls vorhanden, ist eine Kommata-getrennte Liste von Optionen. Die folgenden Optionen werden erkannt:

cipher=

Legt die zu verwendende Chiffre fest. Siehe cryptsetup(8) für mögliche Werte und den Vorgabewert dieser Option. Eine Chiffre mit unvorhersagbaren IV-Werten, wie »aes-cbc-essiv:sha256«, wird empfohlen.

discard

Erlaubt die Durchleitung von Discard-Anfragen an das verschlüsselte Blockgerät. Dies verbessert die Leistung bei SSD-Speichern, hat aber Auswirkungen auf die Sicherheit.

hash=

Legt den für Passwörter zu verwendenden Hash fest. Siehe cryptsetup(8) für mögliche Werte und den Vorgabewert dieser Option.

header=

Verwendet ein abgetrenntes (separates) Metadatengerät oder -datei, in der die LUKS-Kopfzeilen gespeichert sind. Diese Option ist nur für LUKS-Geräte relevant. Siehe cryptsetup(8) für mögliche Werte und den Vorgabewert dieser Option.

keyfile-offset=

Legt die Anzahl der am Anfang der Schlüsseldatei zu überspringenden Byte fest. Siehe cryptsetup(8) für mögliche Werte und den Vorgabewert dieser Option.

keyfile-size=

Legt die maximale Anzahl der aus der Schlüsseldatei zu lesenden Byte fest. Siehe cryptsetup(8) für mögliche Werte und den Vorgabewert dieser Option. Diese Option wird im einfachen Verschlüsselungsmodus ignoriert, da dann die Schlüsseldateigröße durch die Schlüsselgröße gegeben ist.

keyfile-erase

Falls aktiviert, wird die angegebene Schlüsseldatei gelöscht, nachdem das Laufwerk aktiviert wurde oder wenn die Aktivierung fehlschlug. Dies ist insbesondere nützlich, wenn die Schlüsseldatei vor der Aktivierung nur flüchtig erlangt wurde (z.B. über eine Datei in /run/, die durch einen vor der Aktivierung ausgeführten Dienst erzeugt wurde) und nach der Verwendung entfernt werden muss. Standardmäßig aus.

key-slot=

Legt die Schlüsselposition, mit der die Passphrase oder der Schlüssel verglichen werden soll, fest. Falls die Schlüsselposition nicht auf die übergebene Passphrase oder den Schlüssel passt, aber eine andere passen würde, schlägt die Einrichtung des Gerätes dennoch fehl. Diese Option impliziert luks. Siehe cryptsetup(8) für mögliche Werte. Die Vorgabe ist, alle Schlüsselpositionen sequenziell durchzuprobieren.

keyfile-timeout=

Legt die Zeitüberschreitung für das Gerät, auf dem die Schlüsseldatei liegt, fest und fällt auf ein Passwort zurück, falls dieses Gerät nicht eingehängt werden kann. Siehe systemd-cryptsetup-generator(8) für Schlüsseldateien auf externen Geräten.

luks

Erzwingt den LUKS-Modus. Wenn dieser Modus verwandt wird, werden die folgenden Optionen ignoriert, da sie durch die LUKS-Kopfzeilen auf dem Gerät bereitgestellt werden: cipher=, hash=, size=.

bitlk

Entschlüsselt Bitlocker-Gerät. Entschlüsselungsparameter werden durch Cryptsetup aus dem Bitlocker-Header abgeleitet.

_netdev

Markiert, dass dieses Kryptogerät Netzwerk benötigt. Es wird nach der Verfügbarkeit des Netzwerkes gestartet, ähnlich wie mit _netdev markierte systemd.mount(5)-Units. Die Dienste-Unit zur Einrichtung dieses Gerätes wird zwischen remote-fs-pre.target und remote-cryptsetup.target einsortiert, statt zwischen cryptsetup-pre.target und cryptsetup.target.

Tipp: Falls dieses Gerät für einen in fstab(5) festgelegten Einhängepunkt verwandt wird, sollte die Option _netdev auch für den Einhängepunkt verwandt werden. Andernfalls könnte eine Abhängigkeitsschleife erstellt werden, bei der der Einhängepunkt durch local-fs.target hereingezogen, während der Dienst zur Konfiguration des Netzwerkes normalerweise nach dem Einhängen des lokalen Dateisystems gestartet wird.

noauto

Dieses Gerät wird nicht zu cryptsetup.target hinzugefügt. Das bedeutet, dass es beim Systemstart nicht automatisch entsperrt wird, außer etwas anderes zieht es herein. Falls insbesondere das Gerät als Einhängepunkt verwandt wird, wird es während des Systemstarts automatisch entsperrt, außer der Einhängepunkt selbst ist auch mit noauto deaktiviert.

nofail

Dieses Gerät wird keine harte Abhängigkeit von cryptsetup.target sein. Es wird weiterhin hereingezogen und gestartet, aber das System wird nicht darauf warten, dass das Gerät auftaucht und entsperrt wird und der Systemstart wird nicht fehlschlagen, falls das nicht klappt. Beachten Sie, dass andere Units weiterhin von dem entsperrten Gerät abhängen und weiterhin fehlschlagen könnten. Falls insbesondere das Gerät als Einhängepunkt verwandt wird, muss der Einhängepunkt selbst auch die Option nofail haben, oder der Systemstart wird fehlschlagen, falls das Gerät nicht erfolgreich entsperrt wurde.

offset=

Anfangsversatz im Gerät im Hintergrund, in 512-Byte-Sektoren. Diese Option ist nur für einfache Geräte relevant.

plain

Erzwingt den einfachen Verschlüsselungsmodus.

read-only, readonly

Richtet das verschlüsselte Blockgerät schreibgeschützt ein.

same-cpu-crypt

Führt die Verschlüsselung auf der gleichen CPU aus, auf der E/A übergeben wurde. Die Vorgabe ist die Verwendung einer unbegrenzten Arbeitswarteschlange, so dass die Verschlüsselungsarbeit automatisch zwischen verfügbaren CPUs ausbalanciert wird.

Dies benötigt Kernel 4.0 oder neuer.

submit-from-crypt-cpus

Deaktivert das Abladen von Schreibaktionen in einen separaten Thread nach der Entschlüsselung. Es gibt einige Situationen, bei denen das Abladen der Schreibaktionen aus Entschlüsselungs-Threads in einen dedizierten Thread die Leistung deutlich senkt. Die Vorgabe ist, Schreibaktionen auf einen dedizierten Thread abzuladen, da es für den CFQ-Scheduler von Vorteil ist, wenn Schreibaktionen im gleichen Kontext übergeben werden.

Dies benötigt Kernel 4.0 oder neuer.

skip=

Wie viele 512-Byte-Sektoren der verschlüsselten Daten am Anfang übersprungen werden sollen. Dies unterscheidet sich von der Option offset= im Hinblick auf die im Initialisierungsvektor (IV) für die Berechnung verwandte Anzahl an Sektoren. Durch die Verwendung von offset= wird die IV-Berechnung durch die gleiche negative Anzahl verschoben. Falls daher offset=n übergeben wird, wird Sektor n eine Sektorennummer 0 für die IV-Berechnung erhalten. skip= bewirkt, dass Sektor n auch der erste Sektor des zugeordneten Gerätes ist, aber dabei die Nummer n für die IV-Erstellung hat.

Diese Option ist nur für einfache Geräte relevant.

size=

Legt die Schlüsselgröße in Bits fest. Siehe cryptsetup(8) für mögliche Werte und den Vorgabewert dieser Option.

sector-size=

Legt die Sektorgröße in Byte fest. Siehe cryptsetup(8) für mögliche Werte und den Vorgabewert dieser Option.

swap

Das verschlüsselte Gerät wird als Auslagerungsgerät benutzt. Es wird nach der Einrichtung des verschlüsselten Blockgerätes entsprechend mit mkswap(8) formatiert. Diese Option impliziert plain.

WARNUNG: Durch Verwendung der Option swap wird der Inhalt der benannten Partition während jedes Systemstarts zerstört. Stellen Sie daher sicher, dass das zugrundeliegende Blockgerät korrekt angegeben ist.

tcrypt

Verwendet den TrueCrypt-Verschlüsselungsmodus. Beim Einsatz dieses Modus werden die folgenden Optionen ignoriert, da sie durch die TrueCrypt-Kopfzeilen bereitgestellt oder nicht anwendbar sind: cipher=, hash=, keyfile-offset=, keyfile-size=, size=.

Beim Einsatz dieses Modus wird die Passphrase aus der im dritten Feld übergebenen Datei gelesen. Es wird nur die erste Zeile dieser Datei ohne das Zeilenvorschubszeichen gelesen.

Beachten Sie, dass das TrueCrypt-Format sowohl Passphrasen als auch Schlüsseldateien zur Ableitung eines Passworts für das Laufwerk verwendet. Daher müssen die Passphrase und alle Schlüsseldateien angegeben werden. Verwenden Sie tcrypt-keyfile=, um den absoluten Pfad zu allen Schlüsseldateien anzugeben. Bei der Verwendung einer leeren Passphrase in Kombination mit einer oder mehrerer Schlüsseldateien verwenden Sie »/dev/null« als Passwortdatei im dritten Feld.

tcrypt-hidden

Verwendet das versteckte TrueCrypt-Laufwerk. Diese Option impliziert tcrypt.

Dies bildet das versteckte Laufwerk, das sich innerhalb des im zweiten Feld angegebenen Laufwerks befindet, ab. Beachten Sie, dass es keinen Schutz für das versteckte Laufwerk gibt, falls stattdessen das äußere Laufwerk eingehängt wird. Siehe cryptsetup(8) für weitere Informationen über diese Beschränkung.

tcrypt-keyfile=

Legt den absoluten Pfad zu der für ein TrueCrypt-Laufwerk zu verwendenden Schlüsseldatei fest. Dies impliziert tcrypt und kann mehr als einmal zur Angabe mehrerer Schlüsseldateien verwandt werden.

Lesen Sie beim Einsatz des TrueCrypt-Verschlüsselungsmodus den Eintrag zu tcrypt für das Verhalten der Passphrase und Schlüsseldateien.

tcrypt-system

TrueCrypt im Systemverschlüsselungsmodus verwenden. Diese Option impliziert tcrypt.

tcrypt-veracrypt

Prüft auf ein VeraCrypt-Laufwerk. VeraCrypt ist eine Abspaltung von TrueCrypt, die größtenteils kompatibel ist, aber andere, stärkere Schlüsselableitungsalgorithmen verwendet, die ohne diesen Schalter nicht erkannt werden können. Aktivierung dieser Option könnte das Entsperren deutlich verlangsamen, da die Schlüsselableitung von VeraCrypt viel länger als die von TrueCrypt dauert. Diese Option impliziert tcrypt.

timeout=

Legt die Zeitüberschreitung für die Abfrage eines Passworts fest. Falls keine Einheit angegeben ist, werden Sekunden verwandt. Unterstützte Einheiten sind s, ms, us, min, h, d. Eine Zeitüberschreitung von 0 wartet unendlich lang (dies ist die Vorgabe).

tmp=

Das verschlüsselte Blockgerät wird für den Einsatz als /tmp/ vorbereitet; es wird mittels mkfs(8) formatiert. Akzeptiert einen Dateisystemtyp als Argument, wie »ext4«, »xfs« oder »btrfs«. Falls kein Argument angegeben ist, ist »ext4« die Vorgabe. Diese Option impliziert plain.

WARNUNG: Durch Verwendung der Option tmp wird der Inhalt der benannten Partition während jedes Systemstarts zerstört. Stellen Sie daher sicher, dass das zugrundeliegende Blockgerät korrekt angegeben ist.

tries=

Legt die maximale Anzahl an Abfragen des Benutzers nach einem Passwort fest. Die Vorgabe ist 3. Falls auf 0 gesetzt, wird der Benutzer unendlich oft nach einem Passwort gefragt.

verify

Falls das Verschlüsselungspasswort aus der Konsole ausgelesen wird, muss es zweimal eingegeben werden, um Tippfehler zu vermeiden.

pkcs11-uri=

Akzeptiert eine RFC7512 PKCS#11 URI[1], die auf einen privaten RSA-Schlüssel zeigt, der zum Enschlüsseln des in der dritten Spalte der Zeile festgelegten Schlüssels verwandt wird. Dies ist nützlich, um verschlüsselte Datenträger mittels Sicherheits-Token oder Smartcards zu entsperren. Weiter unten finden Sie ein Beispiel, wie Sie diesen Mechanismus zum Entsperren eines LUKS-Datenträgers mit einem YubiKey-Sicherheits-Token verwenden können. Die festgelegte URI kann sich entweder direkt auf einen privaten, auf dem Token gespeicherten RSA-Schlüssel oder alternativ nur auf ein Position oder einen Token beziehen. In letzterem Fall wird eine Suche nach einem geeigneten privaten RSA-Schlüssel durchgeführt. Werden in diesem Fall mehrere geeignete Objekte gefunden, wird der Token abgelehnt. Der in der dritten Spalte konfigurierte Schlüssel wird unverändert an die RSA-Entschlüsselung weitergegeben. Der daraus entstehende entschlüsselte Schlüssel wird dann Base64-kodiert, bevor er zum Entsperren des LUKS-Datenträgers verwandt wird.

try-empty-password=

Akzeptiert ein logisches Argument. Falls aktiviert, wird zuerst versucht, das Laufwerk mit einem leeren Passwort zu entsperren, bevor der Benutzer nach einem Passwort gefragt wird. Dies ist für Systeme nützlich, die mit einem verschlüsselten Laufwerk initialisiert werden, bei dem nur ein leeres Passwort gesetzt ist, das dann während des ersten Systemstarts aber nach der Aktivierung mit einem geeigneten Passwort ersetzt werden muss.

x-systemd.device-timeout=

Legt fest, wie lange Systemd auf das Auftauchen eines Gerätes warten soll, bevor es bei dem Eintrag aufgibt. Das Argument ist eine Zeit in Sekunden oder in einer explizit angegebenen Einheit (»s«, »min«, »h«, »ms«).

x-initrd.attach

Richtet dieses verschlüsselte Blockgerät in der Initramfs ein, ähnlich zu mit x-initrd.mount markierten systemd.mount(5)-Units.

Obwohl es nicht notwendig ist, den Einhängeeintrag für das Wurzeldateisystem mit x-initrd.mount zu markieren, wird x-initrd.attach weiterhin für verschlüsselte Blockgeräte empfohlen, die das Wurzeldateisystem enthalten, da Systemd andernfalls versuchen wird, das Gerät während des regulären Herunterfahrens des Systems abzuhängen, während es noch verwandt wird. Mit dieser Option wird das Gerät weiterhin abgehängt, aber später, wenn das Wurzeldateisystem ausgehängt wird.

Alle anderen verschlüsselten Blockgeräte, die in der Initramfs eingehängte Dateisysteme enthalten, sollten diese Option verwenden.

In der frühen Systemstartphase und wenn die Konfiguration des Systemverwalters neu geladen wird, wird diese Datei durch systemd-cryptsetup-generator(8) in eine native Systemd-Unit übersetzt.

Beispiel 1. /etc/crypttab-Beispiel

Richtet vier verschlüsselte Blockgeräte ein. Eines mittels LUKS für die normale Speicherung, ein anderes für die Verwendung als Auslagerungsgerät und zwei TrueCrypt-Laufwerke.

luks       UUID=2505567a-9e27-4efe-a4d5-15ad146c258b
swap       /dev/sda7       /dev/urandom       swap
truecrypt  /dev/sda2       /etc/container_password  tcrypt
hidden     /mnt/tc_hidden  /dev/null    tcrypt-hidden,tcrypt-keyfile=/etc/keyfile
external   /dev/sda3       keyfile:LABEL=keydev keyfile-timeout=10s

Beispiel 2. Yubikey-basierte Datenträger-Entsperrung

Die PKCS#11-Logik erlaubt das Einbinden jedes kompatiblen Sicherheits-Tokens, der in der Lage ist, RSA-Entschlüsselungsschlüssel zu speichern. Als Beispiel hier die Einrichtung eines Yubikey-Sicherheits-Tokens mittels ykmap(1) aus dem Yubikey-manager-Projekt zu diesem Zweck:

# Sicherstellen, dass außer uns keiner die erstellten Dateien lesen kann
umask 077
# Alle alten Schlüssel auf dem Yubikey zerstören (Vorsicht!)
ykman piv reset
# Erstellt ein neues Schlüsselpaar (privat/öffentlich) auf dem Gerät, speichert den öffentlichen Schlüssel in »pubkey.pem«.
ykman piv generate-key -a RSA2048 9d pubkey.pem
# Erstellen Sie ein selbstsigniertes Zertifikat aus diesem öffentlichen Schlüssel und speichern Sie es auf dem
# Gerät. Das »subject« sollte eine beliebige Zeichenkette sein, um den Token in der
# nachfolgenden p11tool-Ausgabe zu identifizieren
ykman piv generate-certificate --subject "Knobelei" 9d pubkey.pem
# Prüft, ob der frisch erstellte Schlüssel auf dem Yubikey als Token in PKCS#11 auftaucht. Betrachten Sie die Ausgabe und
# kopieren Sie die sich ergebende Token-URI in die Zwischenablage.
p11tool --list-tokens
# Erstellen Sie einen (geheimen) Zufallsschlüssel, um diesen als LUKS-Entschlüsselungsschlüssel zu verwenden.
dd if=/dev/urandom of=plaintext.bin bs=128 count=1
# Kodieren Sie den geheimen Schlüssel auch als Base64-Text (dabei ist sämtlicher Leerraum entfernt)
base64 < plaintext.bin | tr -d '\n\r\t ' > plaintext.base64
# Entschlüsseln Sie den frisch erstellten (binären) LUKS-Entschlüsselungsschlüssel mittels des öffentlichen Schlüssels, dessen privater Schlüssel auf dem
# Yubikey ist, und speichern Sie das Ergebnis in /etc/cryptsetup-keys.d/mytest.key, wo während der frühen Systemstartphase danach gesucht wird.
mkdir -p /etc/cryptsetup-keys.d
sudo openssl rsautl -encrypt -pubin -inkey pubkey.pem -in plaintext.bin -out /etc/cryptsetup-keys.d/mytest.key
# Konfiguriert den LUKS-Entschlüsselungsschlüssel auf dem LUKS-Gerät. Wir nutzen sehr niedrige Pbkdf-Einstellungen, da der Schlüssel bereits
# über eine hohe Qualität verfügt (er kommt schließlich direkt aus /dev/urandom) und daher keine umfangreiche
# Schlüsselableitung erfolgen muss. Ersetzen Sie »/dev/sdXn« durch die zu verwendende Partition (z.B. sda1)
sudo cryptsetup luksAddKey /dev/sdXn plaintext.base64 --pbkdf=pbkdf2 --pbkdf-force-iterations=1000
# Löschen Sie jetzt den LUKS-Schlüssel im Klartext sicher, da er nicht mehr benötigt wird und da er das geheime Schlüsselmaterial
# enthält, sollte er von der Platte gründlich entfernt werden.
shred -u plaintext.bin plaintext.base64
# Wir brauchen den öffentlichen Schlüssel nicht mehr, daher wird er auch entfernt. Da er nicht sicherheitsrelevant
# ist, führen wir einfach ein reguläres »rm« hier aus.
rm pubkey.pem
# Testen: Führen Sie »systemd-cryptsetup« aus, um zu testen, ob alles funktioniert. Die Optionszeichenkette sollte die komplette
# PKCS-URI aus unserer Zwischenablage enthalten; sie teilt dem Werkzeug mit, wie der verschlüsselte LUKS-Schlüssel entschlüsselt werden soll.
# Beachten Sie, dass systemd-cryptsetup automatisch nach dem verschlüsselten Schlüssel in /etc/cryptsetup-keys.d/ sucht, daher
# ist es nicht notwendig, den Schlüsseldateipfad hier explizit anzugeben.
sudo systemd-cryptsetup attach mytest /dev/sdXn - 'pkcs11-uri=pkcs11:…'
# Falls das funktionierte, fügen Sie die gleiche Zeile für die Zukunft dauerhaft zu /etc/crypttab hinzu.
sudo bash -c 'echo "mytest /dev/sdXn - \'pkcs11-uri=pkcs11:…\'" >> /etc/crypttab'

Ein paar Hinweise zu obigem:

•Wir verwenden RSA (und nicht ECC), da Yubikeys PKCS#11 Decrypt() nur RSA-Schlüssel unterstützt.
•Wir verwenden RSA2048, das die längste, derzeit von Yubikeys unterstützte Schlüssellänge ist.
•Aufgrund von RSA-Padding müssen die LUKS-Schlüsselgrößen kleiner als 2048 Bit sein, daher verwenden wird 128 Byte.
•Wir verwenden die Yubikey Schlüssel-Position 9d, da dies offensichtlich die für Entschlüsselungszwecke zu verwendende Position ist, siehe Dokumentation[2].

systemd(1), systemd-cryptsetup@.service(8), systemd-cryptsetup-generator(8), fstab(5), cryptsetup(8), mkswap(8), mke2fs(8)

1.
RFC7512 PKCS#11 URI
2.
siehe Dokumentation

Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.

systemd 246