Nutzung
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:
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 [1] entsprechend zu setzen.
Nutzung¶
ecryptfs-utils 🇬🇧 bietet eine sehr einfache Möglichkeit
einen einzelnen Ordner (~/Private) zu verschlüsseln. Die Ent- bzw. Verschlüsselung geschieht dabei automatisch beim Ein-/Ausloggen des Benutzers.
oder
das gesamte Homeverzeichnis eines Benutzers zu verschlüsseln. Die Entschlüsselung geschieht dabei automatisch beim Einloggen des Benutzers, die Verschlüsselung jedoch erst beim Herunterfahren des Rechners!
In vielen Fällen reicht das für die Nutzung schon aus.
Experten-Info:
Es kann vorkommen, dass Programme noch vor dem Einloggen bzw. gleich danach auf das Homeverzeichnis zugreifen wollen, aber weil die "Freigabe" noch nicht abgeschlossen ist, einen Fehler melden. Dieses muss man gezielt behandeln und ggf. in den init-Dateien die Startsequenz verändern oder die Programme aus den Diensten heraus nehmen bzw. neu orientieren! Siehe u.a Beispiel unter Separate Partition einbinden.
Um das Volumen für die Codierung/Decodierung in Grenzen zu halten, sollte man auf Folgendes achten: Symbolische Links wirken nur von außen nach innen, d.h. Daten, die im codierbaren Bereichen liegen, können von außen mit einem symbolischen Link aufgerufen werden und werden codiert, Daten die außerhalb liegen und mit symbolischen Links vom inneren Bereich angesprochen werden, werden nicht codiert.
Mit diesem Wissen kann man nun dafür sorgen, das Daten, die nicht unbedingt codiert werden müssen oder ein sehr großes Volumen darstellen (z.B. ISOs, Videos), via symbolischen Link nach außerhalb zu verlegen und somit die Rechenarbeit (-zeit) zu verringern.
Automatisches Login¶
Achtung!
Bei einem automatischen Login ist eine direkte Nutzung des Verzeichnisses nicht möglich, weil sonst der Aspekt der Daten-Sicherheit unterlaufen würde.
Um die Daten nach einem automatischen Login zugänglich zu machen, muss man das Homeverzeichnis des Benutzers oder das Verzeichnis ~/Private öffnen und auf die Datei Access Your Private Data klicken. Es öffnet sich daraufhin ein Terminal [2], in das man das Login-Passwort eingeben kann. Nach Schließen des Terminals und des Verzeichnisses sind die Daten wie oben beschrieben zugänglich. Oder benutzt das folgend beschriebene manuelle Entsperren.
Manuelles Sperren Entsperren¶
Will man das Verzeichnis ~/Private sperren, während man eingeloggt ist, gibt man im Terminal [1] ein:
ecryptfs-umount-private
Umgekehrt kann man das Verzeichnis ~/Private auch wieder manuell entsperren und damit den Zugriff auf die Daten freigeben, indem man in einem Terminal [1] eingibt:
ecryptfs-mount-private
Wechsel Login-Passwort¶
Bei einer Änderung des Benutzerpassworts wird automatisch im Verschlüsselungssystem die relevante Anpassung der Verschlüsselung durchgeführt. Dies geschieht unabhängig davon, ob die Passwortänderung mittels einer Desktop-Anwendung oder in einer Konsole mittels Befehl passwd
durchgeführt wird. Allerdings greift dieser Mechanismus nicht, wenn der Administrator einem anderen Benutzer ein (neues) Passwort setzt. In diesem Fall können folgende Anweisungen weiterhin hilfreich sein.
Für den reibungslosen Ablauf der Ver- und Entschlüsselung der Daten ist es notwendig, dass das Benutzerpasswort mit dem Passwort übereinstimmt, welches zum Schutz des ecryptfs-Schlüssels verwendet wird. Normalerweise kümmert sich das System um diesen Aspekt. Sollte es dennoch vorkommen, dass das (aktuelle) Benutzerkennwort und Schutzkennwort nicht mehr übereinstimmen, kann dies auf folgende Weise korrigiert werden. Wahrscheinlich ist es in diesen Fällen so, dass das Schutzkennwort noch einem früheren Benutzerkennwort entspricht.
Achtung!
Bei allen folgenden Befehlen weder ein sudo
einsetzen noch ein Administrator-Terminal
benutzen!
Backup der wrapped-passphrase Datei erstellen
cd /home/<benutzername>/.ecryptfs cp -f wrapped-passphrase wrapped-passphrase.old
Danach die Passphrase notieren
ecryptfs-unwrap-passphrase wrapped-passphrase passphrase: < altes Benutzerpasswort >
Sollte dieser Befehl mit der Meldung "Error: Unwrapping passphrase failed" quittiert werden, so war das gewählte Passwort nicht das notwendige Schutzpasswort. Eventuell auch auf Probleme mit Umlauten oder Tastaturbelegung achten. Ansonsten die ausgegebene Text/Zahlenfolge (Passphrase) notieren.
Optional: Benutzerpasswort ändern
passwd
Dieser Schritt kann auch alternativ über die grafische Oberfläche (Gnome, KDE, etc.) gemacht werden.
Passphrase mit aktuellem Benutzerpasswort schützen
ecryptfs-wrap-passphrase wrapped-passphrase
Es kommen die Aufforderungen:
Passphrase to wrap: < Hier die Passphrase eingeben, die oben notiert wurde Wrapping passphrase: < Eingabe des neuen (aktuellen) Benutzerpassworts
Nun sollte man sich abmelden, wieder anmelden und den Erfolg obiger Maßnahme überprüfen. Falls nicht erfolgreich, muss man sich in der Konsole (STRG-ALT-F5) mit seinem Benutzernamen einloggen und man mit passwd sein Passwort zurücksetzen. Falls der Login immer noch nicht klappt kann man versuchen wrapped-passphrase.old zurückzukopieren. (Dabei natürlich auch die neue wrapped-passphrase sichern)
Passphrase extern auslagern¶
Es ist grundsätzlich möglich, die Passphrase und zugehörige Dateien getrennt auf ein externes Medium (USB-Stick, Smartcard oder ähnlichen Medien) zu verlagern. Wichtig dabei ist nur, dass dieses Speichermedium beim Booten eingesteckt/verbunden ist, vom System erkannt wird und in der /etc/fstab eingetragen wurde z.B.:
UUID=xxxx /home/.ecryptfs/<Benutzername>/.ecryptfs ext2 defaults 0 0
Hinweise zum korrekten Pfad (siehe Systempfade) der Schlüsseldateien. Wird eine getrennte Partition für /home benutzt, so ist obiger Eintrag in der /etc/fstab danach anzuordnen!
Wurden die Benutzerdaten nun auf diesem Speichermedium abgelegt (durch Verschieben der jeweiligen Nutzerdaten), werden sie nun von dort beim Einloggen abgefragt.
Beispiele Nutzung¶
SSH-Keys oder GnuPG-Keys sowie andere persönliche Daten z.B. Thunderbird sollte man möglichst sicher aufbewahren, damit diese nicht in die falschen Hände geraten. Um dies zu verhindern, sollte man diese verschlüsselt auf der Festplatte ablegen. Dazu kann man die Festplatte komplett verschlüsseln, hat aber dann den Nachteil, dass sämtliche Schreib- und Lesezugriffe auf die Festplatte erstmal ver-/entschlüsselt werden müssen. Dies kann für manche Anwendungen einen massiven Geschwindigkeitsverlust bedeuten.
Mit verschlüsselten Verzeichnissen kann man diese Schlüssel, Verzeichnisse bzw. Dateien in das Verzeichnis
~/Private
verschieben. Die Basis-Programme suchen aber nach den Daten in der Regel in eigens angelegten Verzeichnissen. Das kann man dann einfach mit einen Link abfangen (siehe im Terminal, man ln
).
Beispiel: .ssh-Daten
cd /home/<Benutzername> mv .ssh Private/ ln -s /home/<Benutzername>/Private/.ssh
Beispiel: Thunderbird (persönliche Daten)
cd /home/<Benutzername>/.thunderbird/ujfyk3gt.default mv Mail /home/<Benutzername>/Private/ ln -s /home/<Benutzername>/Private/Mail
Anwendung Server¶
Hat man auf einem Server ein "verschlüsseltes" Verzeichnis mit
/home/<Benutzername> bzw.
/home/<Benutzername>/Private
angelegt, so kann man auf dieses auch über eine SSH-Verbindung zugreifen. Dafür ist auf dem Server nach dem Hochfahren keine Anmeldung durch einen dort angelegten Benutzer erforderlich (wichtig: normal hochfahren bis zum Login, nicht den Recovery Modus verwenden). Die Freischaltung des Verzeichnisses erfolgt dabei über SSH, indem man sich von einem entfernten Rechner im Terminal z.B. mit
ssh <Benutzername>@192.168.1.88 -p 4711 <Benutzername>@192.168.1.88 passwort: << Login-Passwort von <Benutzername>
am Server anmeldet. Dabei wird analog zu einer normalen Anmeldung das "verschlüsselte" Verzeichnis und damit die Daten freigegeben und genau so wird nach der Eingabe im Terminal von
<Benutzername>@SERVER-NAME:~$ exit
das Verzeichnis wieder gesperrt und die Verbindung abgebrochen.
Trash bereinigen¶
Hinweis:
Das folgende gilt nur für das Verzeichnis ~/Private:
Will man Daten aus dem Verzeichnis ~/Private löschen, so muss man die Funktion "Löschen" im Kontext-Menü (-Klick auf dem zu löschenden Objekt) des eingesetzten Datei-Browsers wählen. Das Löschen mittels Kontext-Menü und der Option "In den Müll verschieben" belässt die Daten im versteckten Verzeichnis
~/Private/.Trash-<User-ID>
so dass sich auf diese Weise "gelöschte" Dateien mit der Zeit ansammeln und ggf. zu Speicherplatz-Problemen führen können. Ist diese Funktion bei den relevanten Datei-Browsern nicht aktiviert, so kann man das einstellen - Informationen geben die jeweilige WIKI-Seite.
Achtung!
Dieses ist kein Fehler im Programm, sondern so vorgesehen, damit keine Daten unbeabsichtigt nach außerhalb des Verzeichnisses gelangen.
Daten sichern¶
Man kann die Daten, sowohl verschlüsselt als auch im Klartext einem Backup zuführen - das ist nun ganz von den Gegebenheiten sowie eigenen Wünschen abhängig. Nachfolgend werden beide Möglichkeiten beschrieben. Es ist auf jeden Fall ausreichend (externer) Speicherplatz bereit zu halten.
Dieses lässt sich im Terminal [1] bewerkstelligen bzw. es eignet sich dazu jedes Backup-Programm. Es sind nur die jeweils relevanten Pfade zu beachten.
Systemdateien sichern¶
Man sollte auf jeden Fall sich eine Kopie der Dateien
Private.mnt
Private.sig
wrapped-passphrase
anfertigen und getrennt von den Daten des "Backup" aufbewahren. Das kann ggf. auch in schriftlicher Form geschehen, da der Inhalt dieser Dateien überschaubar ist. Siehe die Ausführungen unter Daten wieder herstellen.
Daten im Klartext¶
Dazu muss der Benutzer angemeldet sein.
* gesamtes Homeverzeichnis
rsync -ap /home/<Benutzername> /Pfad_zum_Ziel/ --delete
* Verzeichnis ~/Private
rsync -ap /home/<Benutzername>/Private /Pfad_zum_Ziel/ --delete rsync -ap /home/<Benutzername> /Pfad_zum_Ziel/ --delete --exclude='.Private'
Hinweis:
Man sollte das Backup bei einem Verzeichnis ~/Private auf dieses Verzeichnis beschränken (erste Befehlszeile). Wird ein gesamtes Backup vom Homeverzeichnis ausgeführt, so muss man die Daten aus dem versteckten Verzeichnis ~/.Private ausklammern (zweite Befehlszeile)!
Daten in codierter Form¶
Dabei muss der Benutzer nicht eingeloggt sein - der Pfad zu den verschlüsselten Daten ist immer zugänglich.
Verzeichnis Private
rsync -ap /home/<Benutzername>/.Private /Pfad_zum_Ziel/<Benutzername>/ --delete
gesamtes Homeverzeichnis
rsync -ap /home/.ecryptfs/<Benutzername>/.Private /Pfad_zum_Ziel/<Benutzername>/ --delete
Sicherung einsetzen¶
Es sind die Daten mit umgekehrter Verzeichnisstruktur zurück zu sichern.
Separate Partition einbinden¶
Hat man sich zum (insgesamt) verschlüsselten Homeverzeichnis auch noch eine separate Datenpartition angelegt bzw. will man eine beim Starten vorhandene externe Festplatte benutzen, so kann man diese auch innerhalb des verschlüsselten Bereiches fest zugeordnet einbinden.
Folgende Annahmen sollen realisiert werden:
Datenpartition mit folgendem Eintrag in der /etc/fstab:
UUID=d40fbac8-bd8a-44b2-a0c8-6801626cfa0d /media/daten ext4 defaults 0 2
Homeverzeichnis mit folgender Verzeichnisstruktur
/home/<Benutzername>/DATEN
Das Verzeichnis /media/daten und das Zielverzeichnis ~/DATEN (oder adäquate Bezeichnungen eigener Wahl) müssen parallel zum Eintrag in der /etc/fstab angelegt werden!
Hinweis:
Ein direktes Einbinden über die /etc/fstab ist nicht möglich, weil das Zielverzeichnis zum Einbinden erst nach dem Login vorhanden ist.
Um diesen Sachverhalt zu umgehen, wird das folgende Skript als z.B.: mount-daten erstellt, ausführbar gemacht und nach /etc/init.d kopiert:
code bash #! /bin/sh ### BEGIN INIT INFO # Provides: mount-daten # Required-Start: $remote_fs $syslog $all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: Run a mount-option after ecryptfs started and the directory exist ### END INIT INFO PATH=/sbin:/usr/sbin:/bin:/usr/bin . /lib/init/vars.sh . /lib/lsb/init-functions do_start() { while true; do sleep 2 [ ! -d $HOME/DATEN ] && continue mount -o bind /media/daten $HOME/DATEN break done return } case "$1" in start) do_start ;; *) echo "Usage: $0 start" >&2 exit 3 ;; esac
Nun muss man nur noch im Terminal [2] eingeben:
sudo update-rc.d mount-daten start 99 2 3 4 5 .
Die erfolgreiche Verarbeitung wird danach im Terminal angezeigt - nach einem Reboot sollte die Datenpartition nach der Anmeldung an der vorgesehenen Stelle eingebunden und benutzbar sein. Ggf. sind die Benutzer- und Gruppenrechte [1] noch anzupassen.
Achtung!
Die in diesem Verzeichnis abgelegten Daten werden nicht verschlüsselt und sind jederzeit offen auslesbar!
Dateinamen mit locate anzeigen¶
Mit dem Kommando locate kann man sehr schnell Dateien finden. Hierfür werden alle Dateinamen in einer Datenbank indiziert.
Allerdings zeigt locate
keine Dateinamen aus verschlüsselten Homeverzeichnissen an. Der Grund dafür ist, dass auch Root keinen Zugang zu diesen verschlüsselten Verzeichnissen hat. Da die Datenbank mit den Dateinamen durch einen regelmäßigen Root-Prozess aktualisiert wird, bleiben die verschlüsselten Verzeichnisse außen vor.
Um auch Dateien aus dem verschlüsselten Homeverzeichnis mit Hilfe von locate
anzuzeigen braucht man eine eigene Datenbank im Homeverzeichnis, die für locate als zusätzliche Quelle angegeben wird. Zusätzliche Datenquellen können locate mit Hilfe der Umgebungsvariable $LOCATE_PATH
zur Verfügung gestellt werden.
Erzeugung der Datenbank:
updatedb -l 0 -o $HOME/.mlocate.db -U $HOME
Damit die Datenbank aktuell bleibt ist es empfehlenswert, dieses Kommando zur Aktualisierung auch in die Startprogramme aufzunehmen.
Dann muss noch die Umgebungsvariable in ~/.xsessionrc ergänzt werden:
echo export LOCATE_PATH="$HOME/.mlocate.db" >> ~/.xsessionrc
Das Skript ~/.xsessionrc wird beim Start der grafischen Oberfläche ausgeführt. Die Umgebungsvariable steht damit auch in Ubuntu / Unity zur Verfügung und die Ergebnisse von locate werden bei der Anzeige im Dash berücksichtigt.
Wenn nun locate
ausgeführt wird, wird zuerst die Standard-Datenbank durchsucht und dann die Datenbank aus $LOCATE_PATH
. Da die zusätzliche Datenbank Bestandteil des Homeverzeichnis ist, wird auch sie verschlüsselt und gibt die Namen der vorhandene Dateien nicht öffentlich preis.
Links¶
ecryptfs Das Homeverzeichnis bzw. ein Verzeichnis darin verschlüsseln
Einrichten - wie man eine Verschlüsselung installiert / entfernt
Datenrettung - Struktur der Schlüsseldaten und Datenrettung