Kann ich ext4
mit Kernel 4.1 unter Ubuntu 15.04 eine neue verschlüsselte Partition erstellen ?
Kann ich ext4
mit Kernel 4.1 unter Ubuntu 15.04 eine neue verschlüsselte Partition erstellen ?
Antworten:
Zunächst einmal ein Haftungsausschluss: Ich habe dies nicht mit Ubuntu gemacht, sondern auf einem Computer mit Debian "Stretch", der mit einem benutzerdefinierten Linux 4.2.3-Kernel installiert wurde, den ich aktiviert habe EXT4_FS_ENCRYPTION
.
Die Anweisungen von kmeaw funktionieren bei mir nicht genau wie angegeben. Einige Dinge wurden ausgelassen (Befehlszeilenparameter und Schritte).
e2fsprogs
wie oben gezeigtGenerieren Sie Ihr zufälliges Salz. 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 im Dateisystem verwenden zu können, muss im Superblock das Flag "encrypt" gesetzt sein. Dies ist nicht die Standardeinstellung, wenn das ext4-Dateisystem erstellt wird. Stellen Sie mit dem Dienstprogramm "tune2fs" von e2fsprogs 1.43 oder höher die Option "verschlüsseln" ein:
sudo tune2fs -O encrypt /dev/sda4
Mounten Sie das Dateisystem oder stellen Sie es erneut bereit, damit der Kernel über die Änderung informiert ist (möglicherweise erfolgt dies automatisch, aber ich habe dies nur auf einer separaten Partition durchgeführt, daher bin ich mir nicht sicher.)
Erstellen Sie ein Verzeichnis im Dateisystem, das mit aktivierter Verschlüsselung bereitgestellt wird:
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 kann mit dem add_key
Befehl der Schlüssel für die Entschlüsselung des Verzeichnisses und seiner Nachkommen 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 im vorherigen Schritt verwendet wurde, und Sie müssen sich nicht an die Deskriptor-Hex-Zeichenfolge erinnern.
Sie können auch add_key
direkt verwenden. Dies verwendet ein dateisystemspezifisches Salt (also haben alle Ordner unter dieser Partition 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.
cp .. /secret/home/$USER/.
bekomme ich: «cp: kann keine reguläre Datei '/secret/home/alexis/test-top-secret-image.svg' erstellen: Erforderlicher Schlüssel nicht verfügbar » . Ich habe gerade Ihre Anweisungen befolgt, also hat sich wohl etwas geändert.
/usr/bin/e4crypt
" fehlt das "s" in "/ [s] bin".
Linux 4.1 verfügt über eine neue Ext4-Funktion zum Verschlüsseln von Verzeichnissen eines Dateisystems. Verschlüsselungsschlüssel sind im Schlüsselbund gespeichert. Um loszulegen, stellen Sie sicher , haben Sie aktiviert CONFIG_KEYS
und CONFIG_EXT4_FS_ENCRYPTION
Kernel - Optionen und Sie haben Kernel 4.1 oder höher.
Zunächst müssen Sie e2fsprogs auf mindestens Version 1.43 aktualisieren, die zum Zeitpunkt des Schreibens noch WIP ist. Daher müssen wir sie aus dem Git-Repository abrufen :
$ 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 arbeiten zu können, 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 zuerst einen zufälligen Salzwert und bewahren Sie ihn an einem sicheren Ort auf:
$ 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üsselter Kauderwelsch angesehen. Seien Sie vorsichtig, wenn Sie alte Versionen von e2fsck auf Ihrem Dateisystem ausführen - verschlüsselte Dateinamen werden als ungültig behandelt.