[[Vorlage(getestet, general)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:Editor:Einen Editor nutzen] [:Rechte: Rechte für Dateien und Ordner ändern] [:Dateimanager#Root-Rechte: Root-Rechte erlangen] }}} [[Inhaltsverzeichnis]] [http://ecryptfs.sourceforge.net/ ecryptfs-utils] {en} bietet eine sehr einfache Möglichkeit einen * einzelnen Ordner ('''~/Private''') innerhalb eines nicht verschlüsselten [:Homeverzeichnis: Homeverzeichnisses], bzw. das * gesamte Homeverzeichnis eines Benutzers zu verschlüsseln. Die Ent- bzw. Verschlüsselung geschieht dabei automatisch beim Ein-/Ausloggen des Benutzers. {{{#!vorlage 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. {{{#!vorlage Warnung 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. {{{#!vorlage 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 {{{#!vorlage Befehl 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. {{{#!vorlage Befehl 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 [:Dateimanager#Root-Rechte: 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 »privates verschlüsseltes `~/Private` Verzeichnis« liegen die Daten in `/home/BENUTZERNAME/.ecryptfs`, bei der Variante »gesamtes Homeverzeichnis verschüsseln« in `/home/.ecryptfs/BENUTZERNAME/.ecryptfs`. Neben diesem Verzeichnis liegen die verschlüsselten Daten, also in `/home/BENUTZERNAME/.Private` für die eine bzw. `/home/.ecryptfs/BENUTZERNAME/.Private` für die andere Variante. Demnach sollte sich bei allen Varianten im Unterverzeichnis `.ecryptfs` 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:], [:Logical_Volume_Manager: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 {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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. {{{#!vorlage Befehl 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 diese mit dem Befehl `ecryptfs-unwrap-passphrase` im Terminal [1] anzeigen lassen. Sie ist für gewöhnlich mit dem Login-Passwort verschlüsselt und befindet sich in der Datei `wrapped-passphrase` im entsprechenden `.ecryptfs` Verzeichnis. (siehe [#Systempfade-der-Schluesseldateien Systempfade]). {{{#!vorlage Befehl ecryptfs-unwrap-passphrase .ecryptfs/wrapped-passphrase }}} Nach der Eingabe des Login-passwortes wird die Passphrase angezeigt. = Daten manuell auslesen = Die Partition(en), auf denen die Daten zum Auslesen liegen, sollten gemäß der Beschreibung [#Daten-einbinden 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: {{{#!vorlage Hinweis Bei der Abfrage wird das Login-Passwort als "UNIX-Passwort" bezeichnet, die Eingabe erfolgt blind, es erfolgt keine Anzeige bei der Eingabe! }}} {{{#!vorlage Befehl 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: {{{#!vorlage Befehl ubuntu@ubuntu:~$ sudo adduser BENUTZERNAME sudo }}} Nun stellt man den Zugriff auf die oben eingebundenen, verschlüsselten Daten für das Livesystem her: {{{#!vorlage Befehl ubuntu@ubuntu:~$ sudo mount -o bind /mnt/home/.ecryptfs /home/.ecryptfs }}} Man meldet sich nun aus dem "Ubuntu-Livesystem" ab und mit dem 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 [#Daten-auslesen 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: {{{#!vorlage Befehl ubuntu@ubuntu:~$ for fs in dev proc sys; do sudo mount --bind /$fs /mnt/$fs; done }}} Nun wechselt man mit dem Befehl: {{{#!vorlage 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 `` von `BENUTZERNAME` einzugeben. Die angezeigten Meldungen können ignoriert werden. {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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 {{{#!vorlage Befehl 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: {{{#!vorlage Befehl BENUTZERNAME@ubuntu:~$ ecryptfs-umount-private BENUTZERNAME@ubuntu:~$ exit logout root@ubuntu:~$ exit ubuntu@ubuntu:~$ }}} {{{#!vorlage Warnung 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 [#wrapped-passphrase-auslesen 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 Daten einbinden] beschrieben, die Partition(en) ein und wechselt mit: {{{#!vorlage Befehl 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. {{{#!vorlage 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 [#Systempfade-der-Schluesseldateien 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 [#wrapped-passphrase-auslesen 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: {{{#!vorlage Befehl ecryptfs-wrap-passphrase wrapped-passphrase }}} Die nachfolgenden Abfragen sind wie folgt zu beantworten (es erfolgt keine Anzeige, __blinde__ Eingabe erforderlich): {{{#!vorlage Befehl Passphrase to wrap: < Eingabe notierte Passphrase Wrapping passphrase: < Eingabe Login-Passwort von BENUTZERNAME }}} und die erforderlichen Zugriffs-Rechte [3] dieser Datei einschränken mit: {{{#!vorlage Befehl chmod 700 wrapped-passphrase }}} == auto-mount erstellen == Man erstellt im Terminal [1] die leere Datei '''auto-mount''' mit folgendem Befehl: {{{#!vorlage Befehl touch auto-mount }}} == auto-umount erstellen == Man erstellt im Terminal [1] die leere Datei '''auto-umount''' mit folgendem Befehl : {{{#!vorlage Befehl touch auto-umount }}} == Private.mnt erstellen == Man erstellt im Terminal [1] die Datei '''Private.mnt''' mit folgendem Befehl * für das Verzeichnis '''~/Private''' {{{#!vorlage Befehl echo /home/BENUTZERNAME/Private > Private.mnt }}} * für ein gesamtes Homeverzeichnis {{{#!vorlage Befehl echo /home/BENUTZERNAME > Private.mnt }}} Danach die Zugriffs-Rechte [3] dieser Datei einschränken mit: {{{#!vorlage Befehl chmod 700 Private.mnt }}} {{{#!vorlage 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl echo 14140887552e0bec > Private.sig echo de5d090606c60111 >> Private.sig }}} Bei der zweiten Zeile das doppelte ''">>"'' beachten und danach die Rechte [3] einschränken mit: {{{#!vorlage Befehl chmod 700 Private.sig }}} Um keine Datenverluste zu erleiden, nun im Terminal noch eingeben: {{{#!vorlage Befehl 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. = Links = * [:ecryptfs:] {Übersicht} Das [:Homeverzeichnis:] bzw. ein Verzeichnis darin verschlüsseln * [:ecryptfs/Einrichten:Einrichten] - wie man eine Verschlüsselung installiert / entfernt * [:ecryptfs/Nutzung:Nutzung] - wie man seine Daten bearbeiten und nutzen kann * [:ecryptfs/Nutzung#Wechsel-Login-Passwort:Wechsel-Login-Passwort] - dieser Abschnitt dient zur Problembehebung bei Passwortänderungen ## * [:ecryptfs/Problembehandlung: Problembehandlung] bei fehlerhafter [:Swap:] * [:gddrescue:] - Datenrettung von defekten Datenträgern (z.B. CD-ROM, Disketten etc.) * [https://help.ubuntu.com/community/EncryptedPrivateDirectory Weitere aktuelle Hinweise] {en} * [http://blog.dustinkirkland.com/2011/04/introducing-ecryptfs-recover-private.html Blogeintrag zu ecryptfs-recover-private] {en} #tag: Sicherheit