Verschlüsselte Backups über das Internet

Warum Online Backups?

Ich bin schon eine ganze Weile unzufrieden mit dem Backup meiner privaten Daten. Bisher habe ich in mehr oder weniger regelmäßigen Abständen die Daten auf eine externe USB-Platte gesichert. Die Sicherung auf Platte hat aber vor allem zwei Nachteile:

  • Das Backup lässt sich schlecht automatisieren (da die Platte jedesmal manuell angeschlossen werden muss)
  • Das Backup ist nicht räumlich getrennt von den Originaldaten. Bei z.B. einem Wohnungsbrand wären im Zweifel alle Daten verloren

Aus diesem Grund habe ich mir vorgenommen die wichtigsten meiner Daten zusätzlich über das Internet zu sichern.

Ich nehme an, dass auch aundere Leute sich Gedanken um Online Backups machen und habe deshalb einige Informationen zu dem Thema hier zusammengestellt. Der Artikel beschäftig sich auschließlich mit Backups unter Linux.

Welcher Anbieter?

In der Wikipedia gibt es eine ganz gut Übersicht über Anbieter von Online Backup Diensten.

Ich habe mir einige dieser Anbieter angesehen und mich letztendlich für einen ganz anderen entschieden. Und zwar für den Dienst Strato HiDrive. Ausschlaggebend waren für mich folgende Punkte:

  • Strato ist ein deutscher Anbieter und muss sich an die vergleichsweise strengen Datenschutzgesetzte in Deutschland halten. Zum anderen kann man bei dem Dienst einfach per Bankeinzug bezahlen.
  • Es werden sehr viele Protokolle unterstützt: smb, ftp, sftp, scp, webdav und was entscheidend war:  rsync!
  • Ein nettes Feature ist außerdem das Anlegen von Snapshots (z.B. tägliche Snapshots oder manuelle Snapshots), die sich komplett wiederherstellen lassen.
  • Meiner Meinung nach sind die Preise angemessen ( 3,90€ /Monat für 100 GB: Stand 28.07.2010)

Da es sich bei den Backups um sehr private Daten handelt ist es mir besonders wichtig, dass kein Unbefugter Zugang zu den Daten erhalten kann – auch kein Administrator von Strato. Deshalb müssen die Daten zuverlässig verschlüsselt werden.

Welche Verschlüsselungssoftware?

Für die Verschlüsselung kommen zwei grundlegend verschiedene Ansätze in Frage:

  • Verwendung von verschlüsselten Partitionen oder Containern (TrueCrypt, dm-crypt, LUKS…)
  • Verwendung verschlüsselter Verzeichnisse (Ecryptfs, Encfs)

Für Backups über das Internet (geringe Bandbreite) haben Ecryptfs und Encfs einen entscheidenden Vorteil. Beide verschlüsseln auf Dateiebene, und können deshalb einfach per rsync inkrementell gesichert werden.

Bei den anderen Verfahren ist das regelmäßige Sichern ganzer Container oder Partitionen über das Internet nicht praktikabel.

Aus diesen Gründen betrachte ich im Folgenden nur Ecryptfs und Encfs.

Ecryptfs

Ecryptfs wird in Ubuntu verwendet, um das ~/Private Verzeichnis zu verschlüsseln (http://wiki.ubuntuusers.de/ecryptfs-utils). Dies hab ich bisher eingesetzt und war damit auch zufrieden (warum ich zu encfs wechseln musste ist in den Hinweisen erläutert).

Unter ~/.Private werden die Daten verschlüsselt im Dateisystem gespeichert. – Dieses Verzeichnis wird dann unter ~/Private automatisch beim Anmelden gemountet. Über ~/Private kann man dann auf die entschlüsselten Daten zugreifen.

dummy@kiste:~$ ls -l .Private/
insgesamt 524
-rw-r--r-- 1 dummy dummy 466944 2009-12-03 19:12 ECRYPTFS_FNEK_ENCRYPTED.FWaDK6X0QtKq3-RPjKXYmPiXaVkmO5fqpZ.HFD.GpjHXV7a.C2D3i2O7qU--
drwxr-xr-x 4 dummy dummy   4096 2009-12-03 19:10 ECRYPTFS_FNEK_ENCRYPTED.FWaDK6X0QtKq3-RPjKXYmPiXaVkmO5fqpZ.HhcjptJ1jpHpq4RE-u5OhsU--
drwxr-xr-x 2 dummy dummy   4096 2009-12-03 19:10 ECRYPTFS_FNEK_ENCRYPTED.FWaDK6X0QtKq3-RPjKXYmPiXaVkmO5fqpZ.H-lZjo5RNNFHOWf99S1D1kk--
-rw-r--r-- 1 dummy dummy  36864 2009-12-03 19:12 ECRYPTFS_FNEK_ENCRYPTED.FWaDK6X0QtKq3-RPjKXYmPiXaVkmO5fqpZ.HT801TN.uzYWjul6XOl8aV---
-rw-r--r-- 1 dummy dummy  12288 2009-12-03 19:11 ECRYPTFS_FNEK_ENCRYPTED.FWaDK6X0QtKq3-RPjKXYmPiXaVkmO5fqpZ.HVTkqLq-yXshQD95aNOrFAk--
-rw-r--r-- 1 dummy dummy  12288 2009-12-03 19:10 ECRYPTFS_FNEK_ENCRYPTED.FXaDK6X0QtKq3-RPjKXYmPiXaVkmO5fqpZ.HEVmJJE8T6yffoA1K.YJlARuB-EoEoA0QRZIHuG1Ji0g-

dummy@kiste:~$ ls -ltrs Private/
insgesamt 512
 4 drwxr-xr-x 2 dummy dummy   4096 2009-12-03 19:10 dosdevices
 4 drwxr-xr-x 4 dummy dummy   4096 2009-12-03 19:10 drive_c
 12 -rw-r--r-- 1 dummy dummy   2461 2009-12-03 19:11 userdef.reg
 36 -rw-r--r-- 1 dummy dummy  27631 2009-12-03 19:12 user.reg
456 -rw-r--r-- 1 dummy dummy 454968 2009-12-03 19:12 system.reg

Achtung: Dateinamen werden erst in aktuellen Ubuntu Versionen verschlüsselt (fnek Option). Wurde ein ~/Private Verzeichnis in einer älteren Version erstellt, dann kann es sein dass die Dateinamen nicht verschlüsselt sind (nur der Dateiinhalt).

Encfs

Encfs unterscheidet sich von Ecryptfs nur unwesentlich. Die Einrichtung kann unter Ubuntu allerdings etwas komplizierter sein. Wer einfach nur ein verschlüsseltes Verzeichnis irgendwo anlegen möchte, ohne dass dieses beim anmelden automatisch zur Verfügung steht, dem empfehle ich das Programm cryptkeepter (Installationn unter Ubuntu: apt-get install cryptkeeper). Dieses bietet eine einfache grafische Oberfläche zum Anlegen und Mounten der verschlüsselten Verzeichnisse. Sollen encfs Verzeichnisse beim Anmelden automatisch gemounted werden, dann muss manuell pam_encfs konfiguriert werden (eine gute Anleitung gibts hier: https://help.ubuntu.com/community/FolderEncryption).

Bei Encfs gibt es auch ein Verzeichnis mit den verschlüsselten Daten und einen Pfad über den auf die entschlüsselten Daten zugegriffen werden kann:

user@kiste:~$ ls -l .crypted_encfs
insgesamt 0
-rw-r--r-- 1 user user 0 2010-07-28 21:33 3Hghvpu,JQrhuovq-,v1bnmv
-rw-r--r-- 1 user user 0 2010-07-28 21:33 fOm83vxkl3Iq0yXMa0d5zFvl
-rw-r--r-- 1 user user 0 2010-07-28 21:33 ,jhvvli6Ex2oxNtYZndhd-Iu
-rw-r--r-- 1 user user 0 2010-07-28 21:33 Pdhw2u-z4SgVDmNauXNARteH
user@kiste:~$ ls -l crypted/
insgesamt 0
-rw-r--r-- 1 user user 0 2010-07-28 21:33 aaa
-rw-r--r-- 1 user user 0 2010-07-28 21:33 bbb
-rw-r--r-- 1 user user 0 2010-07-28 21:33 cc
-rw-r--r-- 1 user user 0 2010-07-28 21:33 ddddd

Welche Dateien müssen bei Encfs und Ecryptfs gesichert werden

Beim Backup ist darauf zu achten,  dass alle relevanten Verzeichnisse gesichert werden, die für das entschlüsseln benötigt werden. Sonst steht man später mit einem Backup da, mit dem man nichts mehr anfangen kann.

Bei Ecryptfs sollten folgende Verzeichnisse gesichert werden:

  • ~/.Private (enthält die verschlüsselten Daten und kann natürlich auch anders benannt sein)
  • ~/.ecryptfs (enthält die verschlüsselte Passphrase)

Das .ecryptfs Verzeichnis ist nicht zwingend notwendig. Wenn man sich die Passphrase gemerkt hat, können die Daten auch ohne dieses Verzeichnis wiederhergestellt werden.
Achtung: wird das ~/.ecryptfs Verzeichnis mitgesichert, dann ist die Verschlüsselung der Daten nur so gut wie das Anmeldepasswort (mit dem die Passphrase verschlüsselt wurde). Jemand der euer Anmeldepasswort errät kann eure Daten entschlüsseln. Für Paranoide Leute empfiehlt es sich daher das ~/.ecryptfs Verzeichnis nicht mitzusichern und sich die Passphrase gut (!) zu merken!

Bei Encfs sollte das verschlüsselte Verzeichnis gesichert werden:

  • also z.B. ~/.crypted_encfs (enthält sowohl die verschlüsselten Daten, als auch den verschlüsselten Schlüssel, der für das Entschlüsseln benötigt wird)

Achtung: Die Verschlüsselung der Daten ist nur so gut wie das verwendete Passwort! Für Paranoide Anwender besteht die Möglichkeit die Datei ~/.crypted_encfs/encfs6.xml aus der Sicherung auszuschließen und getrennt aufzubewahren. Aber Vorsicht! Ohne diese Datei sind die Daten nicht mehr zu entschlüsseln.

Verschlüsselte Daten sichern oder Backup neu verschlüsseln?

Beim Backup verschlüsseln

Sind die Daten, die zu sichern sind, noch nicht verschlüsselt, dann können diese mit Hilfe von Encfs oder Ecryptfs auf dem Backupmedium (Webdav-Order, CIFS-Share, etc.) beim Durchführen des Backups verschlüsselt werden. Dies bietet sich auch an, wenn z.B. komplett (mit dm-crypt, TrueCrypt,…) verschlüsselte Partitionen gesichert werden sollen.

Beispiel:

Zu sicherndes (unverschlüsseltes) Verzeichnis

  • /home/dummy/private_daten

Das Backupmedium ist per webdav (mit fusedav bzw. davfs)  gemountet unter:

  • /tmp/backup

Unter /tmp/backup wird nun ein verschlüsseltes Encfs Verzeichnis angelegt:

dummy@kiste:~$ encfs /tmp/backup/.encrypted /tmp/backup/encrypted
Das Verzeichnis "/tmp/backup/.encrypted/" existiert nicht. Soll es angelegt werden? (y,n) y
Das Verzeichnis "/tmp/backup/encrypted" existiert nicht. Soll es angelegt werden? (y,n) y
Neues verschlüsselter Datenträger wird angelegt.
Bitte wählen Sie eine der folgenden Optionen:
 "x" für den Experten-Modus,
 "p" für den vorkonfigurierten Paranoia-Modus,
 etwas anderes oder eine Leerzeile wählt den Standard-Modus.
?> p

Paranoide Konfiguration gewählt.

Konfiguration abgeschlossen. Das angelegte Dateisystem hat die
folgenden Eigenschaften:

[...]

Neues EncFS-Passwort:
EncFS-Passwort bestätigen: 

dummy@kiste:~$ mount | grep encfs
encfs on /tmp/backup/encrypted type fuse.encfs
(rw,nosuid,nodev,default_permissions,user=dummy)

Das Verzeichnis ~/private_daten wird nun in das gemountete Encfs Verzeichnis gesichert:

dummy@kiste:~$ rsync -a --delete --inplace private_daten/ /tmp/backup/encrypted/

Die Daten liegen nun unter /tmp/backup/.encrypted in verschlüsselter Form vor:

dummy@kiste:/tmp/backup$ ls -l /tmp/backup/.encrypted/
insgesamt 12
drwxr-xr-x 2 dummy dummy 4096 2010-07-30 18:22 2xHGT,wzYomV7fDlREiINoJI
drwxr-xr-x 2 dummy dummy 4096 2010-07-30 18:22 JCbv-Pbw6EbZuy281XfNJxnL
-rw-r--r-- 1 dummy dummy    8 2010-07-30 18:27 prihQ3d,GP-gZ8n4vwR,RF-i

Die Sicherung ist nun komplett und die Verzeichnisse können wieder abgehängt werden:

dummy@kiste:~$ fusermount -u /tmp/backup/unencrypted/
dummy@kiste:~$ fusermount -u /tmp/backup

Hinweis: Bis Version 1.6 von encfs (in Ubuntu 10.04 ist erst 1.5.2 enthalten) gibt es einen Bug, der bewirkt, dass beim Verschieben einer Datei die verschobene Datei einen aktuellen Zeitstempel erhält.
Sollen regelmäßige inkrementelle Backups per Rsync durchgeführt werden, dann sollte beim syncen die Option –inplace verwendet werden. Rsync kann sonst beim Syncen von schon existierenden Dateien nicht den Zeitstempel erhalten. Die Folge ist, dass bei jedem Rsync alle Dateien übertragen werden.

Schon verschlüsselte Daten sichern

Sind die Daten auf dem Rechner schon mit Ecryptfs oder Encfs verschlüsselt, dann kann man sich das erneute Verschlüsseln auf dem Backupmedium sparen. Im Prinzip müssen nur noch die verschlüsselten Verzeichnisse auf das Backupmedium kopiert werden

Beispiel A (über Webdav):

Zu sicherndes, mit ecryptfs verschlüsseltes Verzeichnis

  • /home/dummy/.Private ist unter /home/dummy/Private gemountet

Das Backupmedium ist per webdav (mit fusedav bzw. davfs)  gemountet unter:

  • /tmp/backup

Das verschlüsselte Verzeichnis kann nun einfach per rsync kopiert werden:

dummy@kiste:~$ rsync -a --delete .Private /tmp/backup/

Paranoide Leute sollten jetzt wegschauen (und sich die ecryptfs Passphrase sehr gut merken):

dummy@kiste:~$ rsync -a --delete .ecryptfs /tmp/backup/
Beispiel B (direkt über Rsync)

Zu sicherndes, mit ecryptfs verschlüsseltes Verzeichnis

  • /home/dummy/.encrypted ist unter /home/dummy/encrypted gemountet

Gesichert wird auf das per rsync erreichbare HiDrive von Strato:

dummy@kiste:~$ rsync -vxrltDz --delete --progress -e ssh /home/dummy/.encrypted \
stratouser@rsync.hidrive.strato.com:/users/stratouser/backup/

Um später für einen Restore wieder an die Daten zu gelangen, können diese per Webdav gemountet werden. Anschließend kann dann das encfs Verzeichnis vom Backup gemountet werden:

dummy@kiste:~$ fusedav -u stratouser -o ro \
https://stratouser.webdav.hidrive.strato.com /tmp/backup/

Realm 'User Auth' requires authentication.
Password: 

dummy@kiste:~$ encfs /tmp/backup/.encrypted /tmp/encrypted
EncFS-Passwort:

Von /tmp/encrypted können nun die gewünschten Dateien wiederhergestellt werden.

Hinweise

  • Auf webdav und cifs Verzeichnisse können u.U.  keine symbolischen links gesichert werden. Ggf. kann man vor der Sicherung ein Tar-File mit allen symbolischen links erzeugen und dieses dann mitsichern:
dummy@kiste:~$ find /home/dummy/ -xdev -type l  > list_of_links.txt
dummy@kiste:~$ tar -cT list_of_links.txt -f link.tar
  • Der Rsync Server von Strato HiDrive hat scheinbar Probleme mit sehr langen Dateinamen (wie sie z.B. ecryptfs bei Verwendung der fnek Option erzeugt). Der Rsync bricht nach dem Start sofort mit folgender Fehlermeldung ab – Bei Encfs tritt das Problem nicht auf  (deshalb verwende für die Strato Backups Encfs und nicht Ecryptfs):
dummy@kiste:~$ rsync -vrltDzr --dry-run -e "ssh" .Private \
stratouser@rsync.hidrive.strato.com:/users/stratouser/backup/

stratouser@rsync.hidrive.strato.com's password:
sending incremental file list
rsync: writefd_unbuffered failed to write 4 bytes to socket [sender]: Broken pipe (32)
rsync: connection unexpectedly closed (9 bytes received so far) [sender]
rsync error: error allocating core memory buffers (code 22) at io.c(601) [sender=3.0.7]
Da es sich bei den Backups um sehr private Daten handelt ist es mir besonders wichtig, dass kein Unbefugter Zugang zu den Daten erhalten kann – auch kein Administrator von Strato. Deshalb müssen die Daten zuverlässig verschlüsselt werden.

16 Responses to Verschlüsselte Backups über das Internet

  1. Ramdi says:

    Vielen Dank für den informativen Artikel, der mich auf die Fehlerquelle rsync-Strato-lange Pfade gestoßen hat. Ich habe unter Ubuntu 10.04 das gleiche Problem. Hat sich Strato irgendwie dazu geäußert? Liegt es u. U. vielleicht doch an dem rsync-Paket von Ubuntu? Ich habe das zwar mal mit einem lokalen Sync getestet, aber man weiß ja nie… Für mich sind jedenfalls verschlüsselte Dateinamen ein Muss, deswegen kann ich nicht auf sie verzichten. Lieber verzichte ich dann doch auf HiDrive und schaffe mir doch ein lokales NAS an.

    Grüße Ramdi

  2. neuntoeter says:

    ich bin leider noch nicht dazu gekommen bei Strato einen Fehler zu melden.
    Wenn ich das richtig gesehen habe, dann läuft auf Strato-Seite ein rsync in der Version 3.0.5 (kann aber auch sein, dass ich mich irre). Die 3.0.7er Version (von 10.04) kommt zumindest lokal mit der FNEK Verschlüsselung klar.

    Vielleicht teste ich nächste Woche mal einen lokalen Sync mit ner 3.0.5er Version – mich würde es allerdings wundern, wenn das nicht funktionieren würde.

  3. Ramdi says:

    Ich habe lokal bei mir inzwischen auch sogar über den ssh-Umweg bestätigen können, das die Ubuntu-Version die Pfade verarbeiten kann. Wenn ich

    http://old.nabble.com/rsync-3.0.5—ERROR:-buffer-overflow-in-recv_file_entry–generator–td22037782.html

    richtig interpretiere kommt es auf den Kompilierungsvorgang an, wie lange Pfade rsync verarbeiten kann, weniger auf die Version.

    • neuntoeter says:

      Hallo,

      danke für den Link. Was dort beschrieben wird könnte auch bei Strato das Problem sein.

      Ich habe soeben das Problem bei Strato gemeldet und auch den Link mitgeschickt.

      Mal sehen (ob) was zurückkommt.

      Volker

      • pi says:

        Hallo Volker,

        hast du mittlerweile ein Feedback von Strato erhalten? Ich habe das Problem, das rsync mit ecryptfs abbricht auf einer Synology DS109 und entsprechend verschlüsselten foldern…

        Gruß
        Holger

  4. Ramdi says:

    Meine Reaktion von Strato war:
    Die Pfade sind grundsätzlich begrenzt, wir wissen nicht auf welche Länge und ob/wann das Problem behoben wird, können wir nicht sagen…

    Inzwischen schaue ich mir lokale NAS an und habe bei Strato gekündigt, was aber ein theoretischer Ausweg wäre: Zuerst via VPN zu Strato verbinden, HiDrive per SMB mounten und danach rsync über diesen mount benutzen. Dann würde man nur die eigene rsync-Version verwenden.

  5. neuntoeter says:

    Hallo Pi,

    ich habe leider noch nichts von Strato gehört…
    Denke auch nicht, dass die sich nochmal melden.

    Gruß,

    Volker

    • Azarius says:

      Strato ist da ein wenig unbeholfen habe ich das Gefühl.
      Ich habe meine ersten Hosting und Domains alle bei STrato “gehabt” … Nachdem ich bemerkt habe wie dort mit Kunden und auch “wirklich wichtigen” Probleme umgegangen wird, musste ich kündigen.

  6. Verschlüsselung auf Onlinefestplatten…

    Onlinefestplatten sind ja eine feine Sache: Überall hat man seine Daten verfügbar geschützt gegen Brand, Erdbeben und vieles mehr. Doch ein schaler Nachgeschmack bleibt. Schließlich liegen die Daten auf der Onlinefestplatte unverschlüsselt. Das ist nat…

  7. 0x46616c6b says:

    Ich hab das Problem, dass bei größeren Dateien (Torrents), die Transferraten enorm klein sind ~30 kB/s.

    Wie schaut das bei dir aus?

  8. Ich habe gerade eine Festplatte vom HiDrive Send-In-Service hier liegen. Auf dem Beipackzettel steht, dass Dateinamen auf 251 Zeichen und Pfade auf 1023 Zeichen begrenzt sind.

    Meine längsten eCryptfs-Dateinamen haben ausgerechnet 252 Zeichen, trotzdem konnte ich sie per rsync (3.0.8, Debian/unstable) erfolgreich auf das HiDrive schreiben.

    Ich werde die (wenigen) Dateien mit langen Namen beim Send-In weglassen und nachträglich mit rsync speichern.

    • neuntoeter says:

      Hallo,

      danke für den Hinweis – ich werds vielleicht bei Gelegenheit bei mir auch nochmal mit der fnek-Option probieren….

      Vielleicht wurde der Bug gefixt.

      Gruß,

      Volker

  9. Rootserver says:

    Mietserver…

    Verschlüsselte Backups über das Internet « Neuntoeter's Blog…

  10. Es gibt auch Software, die das ganze bereits out-of-the-box macht. Wer also das ganze Basteln leid ist oder unter Windows nicht die mächtigen Werkzeuge der Linux-.Welt nutzen kann, findet kostenlose Backupsoftware (Open Source), die verschlüsselte, inkrementelle Backups auf verschiedenen Online-Speichern ablegt. Duplicati z.B. macht genau das über FTP, SSH, WebDAV, Amazon S3 etc.

    Duplicati ist übrigens sehr ähnlich zu duplicity, was für euch auch interessant sein könnte. Denn duplicity macht ebenfalls verschlüsselte, inkrementelle Backups und speichert sie online. Duplicati ist sozusagen “duplicity für Windows”.

    Im Gegensatz zu der Lösung mit Rsync hat man bei Duplicati und duplicity ein echtes Backup mit mehreren Versionen, die wiederhergestellt werden können.

  11. Azarius says:

    wo is den mein comment von eben?!

  12. Azarius says:

    Also nochmal… in kurz sorry.

    Ich hatte meine ersten Hosting alle bei Strato.
    Nach und nach hat sich echt gezeigt wie wenig die scheinbar von Kundensupport verstehen auch wenn es sich um solch wichtige Dinge handelt!!

    Günstig ja. Zuverlässig – im Rahmen. Wer professionelles Hosting bzw. auch den dazu gewünschten Support sucht, sollte meiner Meinung nach 1,2 € mehr investieren…😦

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: