Zugriff auf ein mit ecryptfs verschlüsseltes Home Verzeichnis unter Ubuntu wiederherstellen

Aus Thomas-Krenn-Wiki
Wechseln zu: Navigation, Suche

Dieser Artikel beschreibt wie der Zugriff auf ein mit ecryptfs verschlüsseltes Home Verzeichnis unter Ubuntu 12.04 (Precise Pangolin) wiederhergestellt werden kann. Voraussetzung dafür ist, dass entweder die entschlüsselte (unwrapped) Passphrase bekannt ist, oder die verschlüsselte (wrapped) Passphrase mit zugehörigem Benutzer-Passwort. Dies kann zum Beispiel dann notwendig werden wenn es durch ein Distributions-Upgrade, ein Software-Update, ein defektes X11-System oder einen sonstigen Fehler zu einer Wiederherstellung der verschlüsselten Daten kommen muss.

Auch mit Ubuntu 14.04 (Trusty Tahr) wurde der Artikel getestet. Dabei ist aufgefallen, dass die Variante mit ecryptfs-recover-private hier vereinzelt nicht funktioniert hat. Die Fehlermeldung lautet "mount: No such file or directory". In diesem Fall hat es jedoch mit der zweiten hier beschriebenen Variante (ecryptfs-add-passphrase) funktioniert.

ecryptfs Passphrase auslesen und sichern

Die Einrichtung eines mit ecryptfs verschlüsselten Home Verzeichnisses ist sehr einfach unter Ubuntu. Dies kann bei der Installation oder beim Anlegen von neuen Benutzern via GUI gemacht werden.

Beim Login eines Benutzers wird dessen verschlüsseltes Home Verzeichnis automatisch gemountet. Die verschlüsselten Daten selbst liegen im Verzeichnis /home/.ecryptfs/<username>/.Private. Diverse Einstellungen sowie die wrapped Passphrase liegen im Verzeichnis /home/.ecryptfs/<username>/.ecryptfs. Wie im Konsolen-Output ersichtlich werden die Dateinamen selbst auch mit FNEK verschlüsselt.

root@laptop:~# cd /home/.ecryptfs/testuser/.Private/
root@laptop:/home/.ecryptfs/testuser/.Private# ls
ECRYPTFS_FNEK_ENCRYPTED.FWYu9wfGtG-ejkTMYmw5UesOPRBas8EldOIbceaF2sXi-b3aNmm0WNRSd---
ECRYPTFS_FNEK_ENCRYPTED.FWYu9wfGtG-ejkTMYmw5UesOPRBas8EldOIbhcW2smZjH.MikNtmQ5zvP---
ECRYPTFS_FNEK_ENCRYPTED.FWYu9wfGtG-ejkTMYmw5UesOPRBas8EldOIbrjp2rqR7a7FJfoAlWYRg-k--
ECRYPTFS_FNEK_ENCRYPTED.FWYu9wfGtG-ejkTMYmw5UesOPRBas8EldOIbRSvlSnttwPRyjR7V6SRad---
ECRYPTFS_FNEK_ENCRYPTED.FWYu9wfGtG-ejkTMYmw5UesOPRBas8EldOIbyG9VmkqRBrezPsnDfnY48U--
ECRYPTFS_FNEK_ENCRYPTED.FXYu9wfGtG-ejkTMYmw5UesOPRBas8EldOIbLDrzIIxCzTc1LcxBkB5o8U0UxD07f1DHEILZXUFeqZ--

root@laptop:/home/.ecryptfs/testuser/.Private# cd /home/.ecryptfs/testuser/.ecryptfs/
root@laptop:/home/.ecryptfs/testuser/.ecryptfs# ls -l
total 12
-rw-r--r-- 1 testuser testuser  0 Aug  8 15:10 auto-mount
-rw-r--r-- 1 testuser testuser  0 Aug  8 15:10 auto-umount
-rw------- 1 testuser testuser 15 Aug  8 15:10 Private.mnt
-rw------- 1 testuser testuser 34 Aug  8 15:10 Private.sig
-rw------- 1 testuser root     48 Aug  8 15:10 wrapped-passphrase

Wichtig dabei ist jedoch, dass die zum Verschlüsseln verwendete Passphrase aufgeschrieben wird und an einem sicheren Ort aufbewahrt wird. Normalerweise wird diese Passphrase nicht benötigt, sollte die wrapped Passphrase Datei jedoch beschädigt werden oder abhanden kommen, sind sonst alle Daten verloren.

Mit folgendem Kommando kann die Passphrase ausgelesen werden (das Login Passwort muss dabei eingegeben werden):

root@laptop:~# ecryptfs-unwrap-passphrase /home/testuser/.ecryptfs/wrapped-passphrase 
Passphrase: 
9716357a5e7e531ed4eb4dfce9450cbf

Entschlüsseln mittels ecryptfs-recover-private

Der komfortabelste Weg auf ecryptfs-verschlüsselte Daten manuell zugreifen zu können ist das ecryptfs-recover-private Kommando.

Standardmäßig sucht dieses nach verschlüsselten Home-Verzeichnissen und bietet danach eine Auswahl an. Alternativ kann auch direkt das .Private Verzeichnis als Parameter angegeben werden.

root@laptop:~# ecryptfs-recover-private 
INFO: Searching for encrypted private directories (this might take a while)...
INFO: Found [/home/.ecryptfs/testuser/.Private].
Try to recover this directory? [Y/n]: ^C
root@laptop:~# ecryptfs-recover-private /home/.ecryptfs/testuser/.Private/
INFO: Found [/home/.ecryptfs/testuser/.Private/].
Try to recover this directory? [Y/n]: 
INFO: Found your wrapped-passphrase
Do you know your LOGIN passphrase? [Y/n] n
INFO: To recover this directory, you MUST have your original MOUNT passphrase.
INFO: When you first setup your encrypted private directory, you were told to record
INFO: your MOUNT passphrase.
INFO: It should be 32 characters long, consisting of [0-9] and [a-f].

Enter your MOUNT passphrase: 
INFO: Success!  Private data mounted read-only at [/tmp/ecryptfs.PkoGHtJf].

Danach wird das verschlüsselte Verzeichnis read-only in das ausgegebene Verzeichnis in /tmp/ gemountet.

Entschlüsseln mit Hilfe von ecryptfs-add-passphrase und mount

Zuerst muss die Passphrase zum Kernel Keyring hinzugefügt werden. Den zweiten Signatur-Schlüssel braucht man dann für die folgende Mount-Operation.

root@laptop:~# ecryptfs-add-passphrase --fnek
Passphrase: 
Inserted auth tok with sig [6e9048567480f4b6] into the user session keyring
Inserted auth tok with sig [3a2fcad2e5202abf] into the user session keyring

Danach kann mittels mount Kommando das .Private Verzeichnis in ein beliebiges anderes Verzeichnis gemountet werden. Die Option "-o ro" sorgt sicherheitshalber für einen read-only Mount. In den folgenden Dialogen muss überall die Default-Einstellung verwendet werden, außer "Enable filename encryption" muss mit "y" beantwortet werden und bei FNEK Signatur muss die letzte Ausgabe vom vorhergehenden ecryptfs-add-passphrase Kommando verwendet werden.

root@laptop:~# mount -t ecryptfs -o ro /home/.ecryptfs/testuser/.Private/ /mnt/
Passphrase: 
Select cipher: 
 1) aes: blocksize = 16; min keysize = 16; max keysize = 32 (loaded)
 2) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24 (not loaded)
 3) cast6: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
 4) cast5: blocksize = 8; min keysize = 5; max keysize = 16 (not loaded)
Selection [aes]: 
Select key bytes: 
 1) 16
 2) 32
 3) 24
Selection [16]: 
Enable plaintext passthrough (y/n) [n]: 
Enable filename encryption (y/n) [n]: y
Filename Encryption Key (FNEK) Signature [6e9048567480f4b6]: 3a2fcad2e5202abf            
Attempting to mount with the following options:
  ecryptfs_unlink_sigs
  ecryptfs_fnek_sig=3a2fcad2e5202abf
  ecryptfs_key_bytes=16
  ecryptfs_cipher=aes
  ecryptfs_sig=6e9048567480f4b6
WARNING: Based on the contents of [/root/.ecryptfs/sig-cache.txt],
it looks like you have never mounted with this key 
before. This could mean that you have typed your 
passphrase wrong.

Would you like to proceed with the mount (yes/no)? : yes
Would you like to append sig [6e9048567480f4b6] to
[/root/.ecryptfs/sig-cache.txt] 
in order to avoid this warning in the future (yes/no)? : no
Not adding sig to user sig cache file; continuing with mount.
Mounted eCryptfs
root@laptop:~# mount | grep testuser
/home/.ecryptfs/testuser/.Private on /mnt type ecryptfs (ro,ecryptfs_sig=6e9048567480f4b6,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_fnek_sig=3a2fcad2e5202abf,ecryptfs_unlink_sigs)

Weitere Informationen


Foto Christoph Mitasch.jpg

Autor: Christoph Mitasch

Christoph Mitasch arbeitet in der Abteilung Web Operations & Knowledge Transfer bei der Thomas-Krenn.AG. Er ist für die Betreuung und Weiterentwicklung der Webshop Infrastruktur zuständig. Seit einem Studienprojekt zum Thema Hochverfügbarkeit und Daten Replikation unter Linux beschäftigt er sich intensiv mit diesem Themenbereich. Nach einem Praktikum bei IBM Linz schloss er sein Diplomstudium „Computer- und Mediensicherheit“ an der FH Hagenberg ab. Er wohnt in der Nähe von Linz und ist neben der Arbeit ein begeisterter Marathon-Läufer und Jongleur, wo er mehrere Weltrekorde in der Team-Jonglage hält.

Icon-Twitter.png Icon-Xing.png 

Das könnte Sie auch interessieren

Hibernate (Ruhezustand) in Ubuntu 12.04 aktivieren
Linux Performance Auswertung mit collectd
Unison unter Ubuntu 11.04 kann sich nicht zum Server verbinden