ubuntuusers.de

Datenrettung

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

ecryptfs-utils 🇬🇧 bietet eine sehr einfache Möglichkeit einen

eines Benutzers zu verschlüsseln. Die Ent- bzw. Verschlüsselung geschieht dabei automatisch beim Ein-/Ausloggen des Benutzers.

Hinweis:

Daten im "verschlüsselten" Bereich sind, sobald der jeweilige Benutzer sich angemeldet hat, auch prinzipiell von anderen Nutzern oder Anwendungen lesbar. Falls dies nicht gewünscht ist, sind die Rechte [3] entsprechend zu setzen.

Sollte es trotz aller Vorsichtsmaßnahmen hierbei zu Problem kommen, (etwa mit der Fehlermeldung "ERROR: Encrypted private directory is not setup properly"), soll die nachfolgende Beschreibung helfen, wieder Zugriff auf die verschlüsselten Daten zu erhalten. Manchmal möchte man auch einfach von einem anderen System, beispielsweise einem neu oder parallel installierten Ubuntu, Zugriff auf einen verschlüsselten Ordner bekommen.

Allgemeine Hinweise

Sollte das System nicht mehr bis zum Desktop gelangen, so startet man mit einem Live-System (CD/DVD bzw. USB-Stick) gleicher Architektur (i386, amd64 bzw. mac). Will man den Zugriff über einen Dateimanager ausführen, so muss dabei auch noch die Desktop-Variante (GNOME, KDE bzw. XFCE) berücksichtigt werden.

Achtung!

Ist die Partition mit dem Verzeichnis ~/.Private bzw. mit dem verschlüsselten Homeverzeichnis (integrierte oder auch separate Partition) so defekt, dass diese wie nachfolgend beschrieben nicht mehr einzubinden ist, so muss man davon ausgehen, das die Daten mit einfachen Mitteln nicht mehr zu retten sind.

Daten automatisiert auslesen

Mit dem Befehl ecryptfs-recover-private, kann man jeden verschlüsselten Ordner entschlüsseln und mit Lesezugriff einbinden lassen. Dabei muss das Login-Passwort des Benutzers, für den die Verschlüsselung angelegt wurde, bekannt sein.

Vorgehen:

Zunächst wird die Zielpartition, auf der sich die verschlüsselten Daten befinden, in einem funktionierenden System eingebunden. Das funktionierende System kann ein parallel installiertes Ubuntu oder ein Livesystem (CD/DVD bzw. USB-Stick) sein. Wichtig ist, dass das System die gleiche Architektur (i386, amd64) aufweist wie das System, auf dem den die verschlüsselten Verzeichnisse angelegt wurden.

Hinweis:

Auch wenn die ecryptfs-Verschlüsselung mit einer älteren Ubuntuversion erfolgte, lässt sich ecryptfs-recover-private anwenden. Entscheidend ist, dass das funktionierende System bzw. die Live-CD den Befehl ecryptfs-recover-private bereitstellt.

In einem Terminal gibt man nun

sudo ecryptfs-recover-private 

ein. Der Befehl durchsucht alle eingebundenen Partitionen nach Ordnern, die mit ecryptfs verschlüsselt wurden. Die Ausgabe sieht beispielsweise so aus:

INFO: Searching for encrypted private directories (this might take a while)...
INFO: Found [/home/.ecryptfs/BENUTZERNAME/.Private].
Try to recover this directory? [Y/n]: 

Standardmäßig wird das Verzeichnis nur für den Lesezugriff, also ohne Schreibzugriff, eingehängt. Will man es bearbeiten, muss man dem obigen Befehl die Option --rw hinzufügen.

sudo ecryptfs-recover-private --rw 

Gibt es mehrere verschlüsselte Benutzerverzeichnisse, werden diese der Reihe nach abgefragt. Bestätigt man die Wiederherstellung, muss man das Login Passwort von BENUTZERNAME eingeben.

Nach Eingabe des Passwortes wird das Verzeichnis von BENUTZERNAME automatisch entschlüsselt und eingebunden. Der Ort wird im Terminal angegeben, in der Regel wird dabei ein Ordner unter /tmp erstellt. Nun kann man mit jedem Dateibrowser auf die Dateien zugreifen. Man hat jedoch nur Lese- keinen Schreibzugriff. Will man die Daten verändern, muss man also zunächst eine Kopie anlegen.

Sollte der Zugriff auf die Dateien verweigert werden, liegt das wahrscheinlich an entsprechend gesetzten Zugriffsrechten [2]. In dem Fall hilft ein Dateimanager mit Root-Rechten oder das Kopieren in einem Root-Terminal.

Vorbereitungen für die manuelle Datenrettung

Wenn das automatische Auslesen mit ecryptfs-recover-private nicht möglich ist, kann eine manuelle Wiederherstellung und Entschlüsselung der Daten helfen.

Systempfade der Schlüsseldateien

Die für die Entschlüsselung erforderlichen Dateien befinden sich in einem für ecryptfs-utils reservierten Verzeichnis. Die Pfade dorthin unterscheiden sich abhängig von der Variante:

Bei der Variante Verzeichnis ~/Private befinden sich diese im Verzeichnis:

  • /home/BENUTZERNAME/.ecryptfs

für die Variante gesamtes Homeverzeichnis befinden sich diese im Verzeichnis:

  • /home/.ecryptfs/BENUTZERNAME/.ecryptfs

Hinweis:

Die Inhalte der beiden versteckten Verzeichnisse

  • /home/BENUTZERNAME/.ecryptfs bzw.

  • /home/.ecryptfs/BENUTZERNAME/.ecryptfs

unterscheiden sich nicht. Während in diesem "nur" die Schlüsseldaten liegen, sind im dazugehörigen Verzeichnis

  • /home/BENUTZERNAME/.Private bzw.

  • /home/.ecryptfs/BENUTZERNAME/.Private

die verschlüsselten Daten des jeweiligen Nutzers gespeichert.

Bei allen Varianten sollten sich im Verzeichnis .ecryptfs jeweils die folgenden Dateien befinden:

auto-mount  (Null-Byte Indikator-Datei)
auto-umount (Null-Byte Indikator-Datei)
Private.mnt (der relevante mount-point, in der Regel /home/BENUTZERNAME)
Private.sig (Hinweis auf Verschlüsselung von Ordnern und Files)
wrapped-passphrase (Verschlüsselungspasswort - encryptet)
.wrapped-passphrase.recorded (Null-Byte Indikator-Datei)

Daten einbinden

Man startet mit einer Live-CD (-DVD) bzw. Live-USB-Stick ein Ubuntu mit der gleichen Architektur und öffnet am Live-Desktop ein Terminal [1] und bindet das "beschädigte" System in das Ubuntu-Live-System ein.

Handelt es sich dabei um ein Software-RAID, LVM oder anderes System, so sind entsprechende Maßnahmen vorab im Live-System zu ergreifen. Nachfolgend die Partitions-Bezeichnungen verwenden, wie diese im Terminal mit

sudo blkid 

angezeigt werden.

Integriertes Homeverzeichnis

Befindet sich das Verzeichnis /home/BENUTZERNAME auf der selben Partition wie das Wurzelverzeichnis (nachfolgend wird als Beispiel /dev/sda1 für das Wurzelverzeichnis angenommen), dann gibt man ein:

sudo mount /dev/sda1 /mnt 

Separates Homeverzeichnis

Befindet sich das Verzeichnis /BENUTZERNAME auf einer vom Wurzelverzeichnis getrennten Partition (als Beispiel Wurzelverzeichnis = /dev/sda1, home = /dev/sda5 ), so muss das System beginnend mit root ( / ) in der richtigen Reihenfolge vorab aufgebaut werden.

sudo mount /dev/sda1 /mnt
sudo mount /dev/sda5 /mnt/home 

Sollten noch andere Verzeichnisse (siehe /etc/fstab) erforderlich sein, so sind auch diese einzubinden. Nun sollte man schon einmal überprüfen, ob man auf die (noch verschlüsselten) Daten als solche bzw. Schlüsseldateien schon zugreifen kann.

Falls man sich die Basisdaten zur Verschlüsselung nicht notiert hatte, sollte man diese jetzt erst einmal auslesen!

wrapped-passphrase auslesen

Zur Prüfung, ob die Passphrase (nicht das Login-Passwort) stimmt und dieses unbeschädigt ist, kann man sich dieses mit dem folgenden Befehl im Terminal [1] anzeigen lassen, nachdem man in das für den BENUTZERNAME relevante Verzeichnis .ecryptfs gewechselt ist (siehe Systempfade).

Achtung!

Hier weder ein sudo einsetzen noch ein Administrator-Terminal benutzen!

ecryptfs-unwrap-passphrase 

und schließt mit ab, danach folgt die Eingabe:

passphrase: 

Dort gibt man nun das Benutzerpasswort ein und schließt mit ab. Den angezeigten Schlüssel unbedingt notieren oder in eine Datei kopieren.

Daten manuell auslesen

Die Partition(en), auf denen die Daten zum Auslesen liegen, sollten gemäß der Beschreibung Daten einbinden fürs Live-System verfügbar gemacht werden.

Lesender Datenzugriff

Man erstellt im Live-System einen Benutzer mit dem identischen Benutzernamen (optional mit UserID) und Login-Passwort, wie dieses für die zu lesenden Daten vorgegeben ist mit:

Hinweis:

Bei der Abfrage wird das Login-Passwort als "UNIX-Passwort" bezeichnet, die Eingabe erfolgt blind, es erfolgt keine Anzeige bei der Eingabe!

ubuntu@ubuntu:~$ sudo adduser --encrypt-home [--uid xxxx] BENUTZERNAME
....
Geben Sie ein neues UNIX-Passwort ein:
Geben Sie ein neues UNIX-Passwort erneut ein:
... # Eingabe zu Name etc. kann vernachlässigt werden 

Anschließend fügt man den Benutzer noch der Gruppe sudo hinzu:

ubuntu@ubuntu:~$ sudo adduser BENUTZERNAME sudo 

Nun stellt man den Zugriff auf die oben eingebundenen, verschlüsselten Daten für das Livesystem her:

ubuntu@ubuntu:~$ sudo mount -o bind /mnt/home/.ecryptfs /home/.ecryptfs 

Man meldet sich nun aus dem "Ubuntu-Livesystem" ab und mit dem <Benutzername> am Login wieder an. Damit sollten die Daten wieder im Klartext lesbar sein. Nach Abschluss der Arbeiten sollte man sich abmelden und das eingehängte System vom Livesystem lösen bzw. das Livesystem herunter fahren.

Datenzugriff mit Bearbeitung

Werden über das Auslesen hinaus weitere Schritte erforderlich, sind um die erforderlichen Kernel-Informationen für ecryptfs-utils vom Ubuntu-Live-System zu erhalten, in das Terminal [1] folgende Eingaben / Schritte erforderlich:

ubuntu@ubuntu:~$ for fs in dev proc sys; do sudo mount --bind /$fs /mnt/$fs; done 

Nun wechselt man mit dem Befehl:

ubuntu@ubuntu:~$ sudo chroot /mnt 

in das "defekte" System.

Benutzer aktivieren

Man wechselt nun den Benutzer - dabei auf das Minus- und die Leer-Zeichen bei der Eingabe achten. Bei der Abfrage zum Passwort ist das <Login-Passwort> von BENUTZERNAME einzugeben. Die angezeigten Meldungen können ignoriert werden.

root@ubuntu:~$ su - BENUTZERNAME
Passwort: < Login-Passwort von BENUTZERNAME 

Verzeichnis aufschließen

Mit den nächsten Eingaben schließt man das "verschlüsselte" Verzeichnis auf:

BENUTZERNAME@ubuntu:~$ ecryptfs-add-passphrase --fnek
Passphrase: < notierte Passphrase
BENUTZERNAME@ubuntu:~$ ecryptfs-mount-private 

Jetzt hat man Zugriff auf die Daten, sowohl über den Dateimanager, als auch im Terminal, dazu noch folgende Eingabe

BENUTZERNAME@ubuntu:~$ cd ..
BENUTZERNAME@ubuntu:~$ cd BENUTZERNAME 

damit die Daten angezeigt, ausgelesen und auch extern gesichert werden können. Will man einen Dateimanager benutzen, dann diesen jetzt aus dem Terminal [1] heraus aufrufen.

Benutzer deaktivieren

Um keine Datenverluste zu erleiden, die eingebundenen Verzeichnisse richtig verlassen, dazu im Terminal [1] eingeben:

BENUTZERNAME@ubuntu:~$ ecryptfs-umount-private
BENUTZERNAME@ubuntu:~$ exit
logout
root@ubuntu:~$ exit
ubuntu@ubuntu:~$ 

Achtung!

Ist das Vorstehende nicht ohne Fehlermeldungen auszuführen, so sind aufgrund der Vielzahl der Möglichkeiten tieferes Basiswissen zu Linux und zu den aufgetretenen Fehlern erforderlich, die diese Beschreibung sprengen würde - wobei eine Wiederherstellung nicht grundsätzlich ausgeschlossen wird.

Schlüsseldaten reparieren

Wenn man bei einer Prüfung erkennt, dass die Schlüsseldateien nicht mehr brauchbar sind oder gar fehlen, so kann man dieses "reparieren".

Überprüfung der Schlüsseldateien

Dies setzt allerdings voraus, dass die Datei wrapped-passphrase entweder intakt ist und vorab ausgelesen werden konnte, eine Kopie von ihr existiert und das Passwort, mit dem das Verzeichnis ~/Private bzw. das Home-Verzeichnis verschlüsselt wurde, bekannt sind. Ist das nicht der Fall, ist eine Wiederherstellung der Daten nicht möglich. Die verschlüsselten Verzeichnisse können in diesem Fall nicht mehr entschlüsselt werden!

Reparatur vorbereiten

Man ruft ein Terminal auf, bindet zuerst wie unter Daten einbinden beschrieben, die Partition(en) ein und wechselt mit:

ubuntu@ubuntu:~$ sudo chroot /mnt
ubuntu@ubuntu:~$ su - BENUTZERNAME
Passwort: < Login-Passwort von BENUTZERNAME
BENUTZERNAME@ubuntu:~$ cd /mnt/home/.ecryptfs/BENUTZERNAME/.ecryptfs
BENUTZERNAME@ubuntu: /mnt/home/.ecryptfs/BENUTZERNAME/.ecryptfs>$ 

in das System vom "alten" Benutzer.

Hinweis:

Man sollte das Terminal solange nicht verlassen, bis alle Dateien angelegt wurden. Mit dieser Maßnahme werden bei der Erstellung die Rechte [3] und Benutzer-ID gleich richtig mit angelegt.

Obige Pfadangabe ist gemäß dem aktuellen Pfad zu den Schlüsseldateien anzupassen. Nachfolgend wird auf die "beispielhafte" Pfadangabe der Terminal-Zeile mit

  • BENUTZERNAME@ubuntu: /mnt/home/.ecryptfs/BENUTZERNAME/.ecryptfs>$

verzichtet und nur noch auf die Befehle an diesem Prompt eingegangen.

wrapped-passphrase erstellen

Ist das Verschlüsselungspasswort unbekannt, kann es (wie oben unter Passphrase auslesen beschrieben) aus einer intakten wrapped-passphrase-Datei ausgelesen werden. Nachdem es bekannt ist, kann die Datei wie folgt im Terminal [1] neu erstellt werden:

ecryptfs-wrap-passphrase wrapped-passphrase 

Die nachfolgenden Abfragen sind wie folgt zu beantworten (es erfolgt keine Anzeige, blinde Eingabe erforderlich):

Passphrase to wrap:  < Eingabe notierte Passphrase
Wrapping passphrase: < Eingabe Login-Passwort von BENUTZERNAME 

und die erforderlichen Zugriffs-Rechte [3] dieser Datei einschränken mit:

chmod 700 wrapped-passphrase 

auto-mount erstellen

Man erstellt im Terminal [1] die leere Datei auto-mount mit folgendem Befehl:

touch auto-mount 

auto-umount erstellen

Man erstellt im Terminal [1] die leere Datei auto-umount mit folgendem Befehl :

touch auto-umount 

Private.mnt erstellen

Man erstellt im Terminal [1] die Datei Private.mnt mit folgendem Befehl

  • für das Verzeichnis ~/Private

echo /home/BENUTZERNAME/Private > Private.mnt 
  • für ein gesamtes Homeverzeichnis

echo /home/BENUTZERNAME > Private.mnt 

Danach die Zugriffs-Rechte [3] dieser Datei einschränken mit:

chmod 700 Private.mnt 

Hinweis:

Wie man erkennen kann, kann man den Pfad, wohin die eigentlichen Daten aus dem Verzeichnis .Private eingebunden werden sollen, seinen Bedürfnissen anpassen - als Beispiel für einzelnes Ziel-Verzeichnis

  • /home/BENUTZERNAME/Dokumente/Geheim

Private.sig erstellen

Um die Basisdaten für diese Datei zu erhalten, gibt man in das Terminal [1] ein:

ecryptfs-add-passphrase --fnek
Passphrase: < Eingabe notierte Passphrase 

und erhält nun u.a. folgende Zeilen (hier beispielhaftes Ergebnis):

Inserted auth tok with sig [14140887552e0bec] into the user session keyring
Inserted auth tok with sig [de5d090606c60111] into the user session keyring

Man erstellt die Datei Private.sig, indem man die eigenen Schlüsselwerte zwischen den [ ] zeilenweise überträgt mit:

echo 14140887552e0bec > Private.sig
echo de5d090606c60111 >> Private.sig 

Bei der zweiten Zeile das doppelte ">>" beachten und danach die Rechte [3] einschränken mit:

chmod 700 Private.sig 

Um keine Datenverluste zu erleiden, nun im Terminal noch eingeben:

exit
logout
ubuntu@ubuntu:~$ 

Man sollte diese Daten / Dateien jetzt auch extern sichern, bevor man die Mount-Punkte wieder auflöst und versucht, das System erneut zu starten.

  • ecryptfs Das Homeverzeichnis bzw. ein Verzeichnis darin verschlüsseln

    • Einrichten - wie man eine Verschlüsselung installiert / entfernt

    • Nutzung - wie man seine Daten bearbeiten und nutzen kann

  • gddrescue - Datenrettung von defekten Datenträgern (z.B. CD-ROM, Disketten etc.)

Diese Revision wurde am 30. Mai 2018 20:38 von noisefloor erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Sicherheit