Kann ich ext4
unter Ubuntu 15.04 eine neue verschlüsselte Partition mit Kernel 4.1 erstellen?
Antwort1
Zunächst ein Haftungsausschluss: Ich habe dies nicht mit Ubuntu gemacht, sondern auf einer Maschine, auf der Debian „Stretch“ mit einem benutzerdefinierten Linux 4.2.3-Kernel installiert war, den ich aktiviert habe EXT4_FS_ENCRYPTION
.
Die Anweisungen vonhmmmmmmmfunktioniert bei mir nicht genau so wie gepostet. Ein paar Dinge wurden ausgelassen (Befehlszeilenparameter und Schritte).
- Aktualisieren Sie
e2fsprogs
wie oben gezeigt Generieren Sie Ihr zufälliges Salt. Ich habe Folgendes verwendet, um es an einem „sicheren Ort“ aufzubewahren:
head -c 16 /dev/urandom | xxd -p >~/tmp-salt.txt echo 0x`cat ~/tmp-salt.txt` >~/.cryptoSalt
Um die Ext4-Verschlüsselung auf dem Dateisystem zu verwenden, muss das Flag „encrypt“ im Superblock gesetzt sein. Dies ist nicht die Standardeinstellung, wenn das Ext4-Dateisystem erstellt wird. Setzen Sie die Option „encrypt“ mit dem Dienstprogramm „tune2fs“ von e2fsprogs 1.43 oder höher:
sudo tune2fs -O encrypt /dev/sda4
Mounten Sie das Dateisystem oder mounten Sie es erneut, damit der Kernel über die Änderung informiert ist (vielleicht geschieht dies automatisch, aber ich habe dies nur auf einer separaten Partition getan, daher bin ich nicht sicher).
Erstellen Sie ein Verzeichnis im Dateisystem, das mit aktivierter Verschlüsselung gemountet ist:
sudo mkdir -p /secret/home/$USER sudo chown $USER:$USER /secret/home/$USER
Erstellen Sie den Schlüssel im Schlüsselbund und legen Sie damit die Richtlinie für das zu verschlüsselnde Verzeichnis fest (der
sudo
Befehl wird hier nicht benötigt):$ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt` Enter passphrase (echo disabled): Added key with descriptor [0132fed69f946c86] $ /usr/bin/e4crypt set_policy 0132fed69f946c86 /secret/home/$USER Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
Nach jedem Neustart
add_key
kann mit dem folgenden Befehl der Schlüssel zur Entschlüsselung des Verzeichnisses und seiner Unterverzeichnisse festgelegt werden:$ /usr/sbin/e4crypt add_key -S s:`cat ~/.cryptoSalt` Enter passphrase (echo disabled): Added key with descriptor [0132fed69f946c86]
Geben Sie dasselbe Kennwort ein, das Sie im vorherigen Schritt verwendet haben. Sie müssen sich die Hex-Deskriptorzeichenfolge nicht merken.
Sie können es auch
add_key
direkt verwenden. Dabei wird ein dateisystemspezifisches Salt verwendet (alle Ordner unter dieser Partition haben also das gleiche Salt).$ /usr/sbin/e4crypt add_key /secret/home/$USER Added key with descriptor [0132fed69f946c86] Key with descriptor [0132fed69f946c86] applies to /secret/home/theuser.
Antwort2
Linux 4.1 verfügt über eine neue Ext4-Funktion zum Verschlüsseln von Verzeichnissen eines Dateisystems. Verschlüsselungsschlüssel werden im Schlüsselring gespeichert. Stellen Sie zunächst sicher, dass Sie Kerneloptionen aktiviert haben CONFIG_KEYS
und CONFIG_EXT4_FS_ENCRYPTION
Kernel 4.1 oder höher installiert haben.
Zunächst müssen Sie e2fsprogs auf mindestens Version 1.43 aktualisieren, die zum Zeitpunkt des Schreibens noch in Bearbeitung ist, daher müssen wir sie vomGit-Repository:
$ git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
Die e4crypt-Quelle hat einen relevanten Abschnitt in ihrem Quellcode deaktiviert. Aktivieren Sie ihn, indem Sie misc/e4crypt.c bearbeiten und diese beiden Zeilen in der Nähe von Zeile 714 entfernen:
printf("arg %s\n", argv[optind]);
exit(0);
Erstellen und installieren Sie jetzt neue e2fsprogs:
$ sudo apt-get install devscripts build-essential gettext texinfo pkg-config debhelper m4
$ debuild
$ sudo dpkg -i e2fsprogs_1.43-WIP_amd64.deb
Überprüfen Sie jetzt Ihre Version, es sollte 1.43-WIP sein:
# e2fsck -V
e2fsck 1.43-WIP (18-May-2015)
Using EXT2FS Library version 1.43-WIP, 18-May-2015
Um mit Schlüsseln zu arbeiten, müssen wir das keyutils
Paket installieren:
$ sudo apt-get install keyutils
Lassen Sie uns ein Verzeichnis erstellen, das wir verschlüsseln werden. Die Verschlüsselungsrichtlinie kann nur für leere Verzeichnisse festgelegt werden:
$ sudo mkdir -p /encrypted/dir
Generieren Sie zunächst einen zufälligen Salt-Wert und speichern Sie ihn an einem sicheren Ort:
$ head -c 16 /dev/random | xxd -p
877282f53bd0adbbef92142fc4cac459
Generieren Sie nun einen neuen Schlüssel und fügen Sie ihn Ihrem Schlüsselbund hinzu: Dieser Schritt sollte jedes Mal wiederholt werden, wenn Sie Ihren Schlüsselbund leeren (Neustart).
$ sudo e4crypt -S 0x877282f53bd0adbbef92142fc4cac459
Enter passphrase (echo disabled):
Added key with descriptor [f88747555a6115f5]
Jetzt kennen Sie einen Deskriptor für Ihren Schlüssel. Stellen Sie sicher, dass Sie Ihrem Schlüsselbund einen Schlüssel hinzugefügt haben:
$ keyctl show
Session Keyring
1021618178 --alswrv 1000 1000 keyring: _ses
176349519 --alsw-v 1000 1000 \_ logon: ext4:f88747555a6115f5
Fast fertig. Legen Sie nun eine Verschlüsselungsrichtlinie für ein Verzeichnis fest:
$ e4crypt set_policy f88747555a6115f5 /encrypted/dir
Das ist alles. Wenn Sie versuchen, auf die Festplatte zuzugreifen, ohne einen Schlüssel zum Schlüsselbund hinzuzufügen, werden Dateinamen und deren Inhalt als verschlüsseltes Kauderwelsch angesehen. Seien Sie vorsichtig, wenn Sie alte Versionen von e2fsck auf Ihrem Dateisystem ausführen – es behandelt verschlüsselte Dateinamen als ungültig.