Einbinden und Verschlüsseln einer weiteren Partition ohne LVM

Aus Siduction Wiki DE
Wechseln zu: Navigation, Suche

Ausgangslage

  • Root-Partition ist mit cryptsetup/LUKS verschlüsselt (/dev/sda1, Mapping auf /dev/mapper/sda1crypt, eingebunden nach /)
  • Eine weitere Partition ist unverschlüsselt (/dev/sda2)
  • Ziel /dev/sda2 verschlüsseln und beim Aufstarten automatisch einbinden

In Klammern: Beispielkonfiguration. Gerätenamen müssen natürlich angepasst werden!
Bitte nur weiterfahren mit der Anleitung, falls das absolut klar war.

Vorgehen

cryptsetup mit LUKS unterstützt als Schlüssel sowohl ein Passwort als auch eine Datei. Damit beim Mounten der zweiten Partition nicht noch ein zweites Passwort angegeben werden muss, kann einfach eine (Schlüssel-)Datei auf der (verschlüsselten) Root-Partition verwendet werden.

Die notwendigen Schritte kurz zusammengefasst:

  1. Container auf der zweiten Partition (sda2) mit dem Keyfile (Schlüsseldatei) verschlüsselt anlegen
  2. Container öffnen und Dateisystem darin erstellen
  3. crypttab bearbeiten
  4. fstab bearbeiten, damit die Partition automatisch eingebunden wird

Also, los gehts.

Keyfile und Container erstellen

Zuerst benötigen wir das Keyfile (die Schlüsseldatei). Die kann x-beliebig sein, das aller einzige spezielle daran ist nur, dass man sie nicht verlieren sollte, weil die Daten auf der Partition sonst verloren sind. Was aber eigentlich auch gut so ist, sonst müsste man sie nicht verschlüsseln. Das andere spezielle daran ist noch, dass nicht jeder diese Datei haben sollte, sonst könnte auch wieder jeder die Partition einbinden und die ganze Arbeit wär für den Hund. die Katz.

Wenn man so richtig originell ist, macht man zum Beispiel das (der Name ist absichtlich so gewählt, damit niemand drauf kommt, dass das ein Keyfile sein könnte):

$ dd if=/dev/urandom of=bestimmtKeinKey bs=2048 count=1

Das kopiert einfach 2048 Bytes total zufällige Daten in die Datei bestimmtkeinKey. Das neu generierte Keyfile hat in diesem Moment bestimmt niemand sonst auf der Welt, und wenn doch, dann ist wahrscheinlich /dev/urandom kaputt. Mit cat bestimmtKeinKey kann man sich den Dateiinhalt ausgeben lassen, und wenn man da nichts lesen kann, ist das grundsätzlich schon mal ein gutes Zeichen. Mit tweak bestimmtKeinKey (ein anderer Hex-Editor geht auch; tweak kann man mit Ctrl-x Ctrl-c übrigens wieder verlassen) kann man auch die einzelnen Bytes anschauen.

Den Key sollte man jetzt an eine sichere Stelle kopieren verschieben. /root ist dafür zum Beispiel gut geeignet. (Wer häufig Dinge verliert, kann sich den Schlüssel auch noch auf einen anderen PC kopieren, so für alle Fälle)

# mv bestimmtKeinKey /root
# chown root\: bestimmtKeinKey
# chmod 660 bestimmtKeinKey

Jetzt ist der Schlüssel also unter /root/bestimmtKeinKey. Dann gehts mal weiter mit dem Container erstellen. Der wird mit dem vorher erstellten Keyfile verschlüsselt. Das hat nebenbei auch den Vorteil, dass man sich kein geheimes Passwort mit einem Post-It unter die Tastatur kleben kann, denn wer bringt da schon 2048 Zeichen drauf.

# cryptsetup -c aes-xts-plain -s 512 luksFormat /dev/sda2 /root/bestimmtKeinKey

Jetzt sind alle Daten, die vorher auf /dev/sda2 waren, weg. Das sollte niemanden erstaunen, denn cryptsetup sagt:

WARNING!
========
This will overwrite data on /dev/sda2 irrevocably.

Are you sure? (Type uppercase yes):

Wenn man kein Englisch versteht, versteht man «uppercase» nicht und es wird doch nichts überschrieben, und wenn man es verstanden hat, hat man vorher von allen wichtigen Daten, die noch auf /dev/sda2 lagen, ein Backup angefertigt.

Container öffnen und formatieren

Bis jetzt war das nun gar nicht mal so schwer, und leider ändert sich das auch nicht. Im nächsten Schritt öffnen wir den Container, damit er nachher formatiert werden kann:

# cryptsetup luksOpen --key-file /root/bestimmtKeinKey /dev/sda2 sda2crypt

Wenn alles funktioniert hat, sagt er nun:

Key slot 0 unlocked.

Und sonst hat man was falsch abgetippt oder beim Erstellen des Containers nicht genau gelesen.

Dann wird der Container mit dem persönlichen Lieblingsdateisystem formatiert. Wenn einem gerade nichts spezielles einfällt, nimmt man ext3 und sagt zusätzlich noch, dass die Partition am besten gar nie überprüft werden soll, weil das immer so ewig lang dauert und wir nicht ewig lang warten mögen, da das immer so lange dauert.

# mkfs.ext3 /dev/mapper/sda2crypt
# tune2fs -c 0 -i 0 /dev/mapper/sda2crypt

Partition testweise einbinden

Nun muss man sich überlegen, wohin die Partition überhaupt soll. Zum Beispiel kann man sie nach /media/sda2crypt einbinden, oder auch nach /data. Weil der zweite Fall weniger zu tippen gibt, da der Pfadname kürzer ist, wählen wir den. Also Verzeichnis erstellen, falls es nicht schon existiert, und dann testweise unsere neue Partition dort hinein einbinden:

# mkdir /data
# mount /dev/mapper/sda2crypt /data

fstab und crypttab anpassen

Wenn alles geklappt hat, wird es endlich mal ein wenig komplizierter. Nämlich muss die fstab angepasst werden. Wenn man nicht weiss, was die fstab ist, sollte man mal nach «fstab tutorial» suchen und findet zum Beispiel ein fstab-Tutorial. Wer hätte das gedacht. In der Datei /etc/fstab sagen wir nun also, wohin die Partition eingebunden werden soll. Das sieht etwa so aus:

/dev/mapper/sda2crypt     /data		     ext3	     defaults,errors=remount-ro,noatime,user_xattr         0      1

Es kann auch anders aussehen, zum Beispiel wenn man ein anderes Lieblingsdateisystem hat oder andere Argumente gewählt hat, aber bekanntlich führen ja viele Wege ins Jenseits nach Rom und auch überall sonst hin (aber letzteres wollen die Römer noch nicht wahrhaben).

Wenn man will, kann man die Pfadangabe /dev/mapper/sda2crypt auch durch die UUID dieser Partition ersetzen (die kann man mit tune2fs /dev/mapper/sda2crypt herausfinden), aber in diesem Fall macht das eigentlich keinen Sinn, da sda2crypt ja ein von uns gewählter Name ist, und wenn eine andere Partition auf einmal auf /dev/mapper/sda2crypt liegt, sind wir selber Schuld.


Und noch die /etc/crypttab bearbeiten, so dass der Container entschlüsset wird:

 #Label                       #device                    #key                            #options
 sda2crypt                   /dev/sda2                 /root/bestimmtKeinKey             luks


Zuletzt

So. Die Hälfte ist nun geschafft.

War ein Scherz, jetzt sollte es schon funktionieren. Also neustarten und probieren. Viel Glück in der Wildnis.

Entfernen

Um das Skript wieder zu entfernen, muss die gesamte Festplatte formatiert werden. Jedoch können auch einfach die beiden Zeilen aus fstab und cryttab rausgenommen werden.