Original-URL des Artikels: https://www.golem.de/news/datenschutz-private-dropbox-mit-bittorrent-sync-einrichten-1502-112082.html    Veröffentlicht: 02.02.2015 12:05    Kurz-URL: https://glm.io/112082

Datenschutz

Private Dropbox mit Bittorrent Sync einrichten

Wer Dropbox und Co. seine Daten nicht anvertrauen will, kann mit Bittorrent Sync einen eigenen Cloud-Server aufsetzen. Mit einer speziellen Linux-Version lässt sich das leicht erledigen.

Von überall Zugriff auf seine aktuellen privaten Daten zu haben, ist einer der Vorzüge, die Cloudspeicher wie Dropbox so populär machen. Solche Datenspeicher bieten aber zusätzliche Vorteile, etwa um Dritten zeitweilig Daten zur Verfügung zu stellen. Dort liegen die Daten aber in fremden Händen, was nicht allen behagt. Es gibt Lösungen, die keine externen Server benötigen. Eine davon ist Bittorrent Sync. Mit einer speziell angepassten Linux-Variante lässt sich eine private Dropbox schnell einrichten und an die persönlichen Bedürfnisse anpassen.

Bittorrent Sync speichert die Daten nur auf den Geräten des Nutzers, nicht auf Servern eines externen Anbieters. Daher kann der Anwender so viel Speicherplatz bereitstellen, wie es ihm passt. Im Vergleich zu einer eigenen Owncloud-Lösung bietet Bittorrent Sync einen weiteren Vorteil: Sie lässt sich auch ohne eine mühsam konfigurierte Firewall und vor allem auch ohne eigene statische IP-Adresse oder dynamisches DNS realisieren.

Denn für die Übertragung der Daten nutzt Bittorrent Sync sein Peer-to-Peer-Protokoll samt zusätzlichen Funktionen, um eine direkte Verbindung zwischen den Geräten herzustellen. Das verwendete P2P-Protokoll ähnelt dem bei Bittorrent genutzten Protokoll und teilt große Dateien in kleine Datenblöcke auf, die dann auch von mehreren Geräten übertragen werden können. Zudem werden UDP, NAT Traversal, UPnP Port Mapping und ein Relay-Server verwendet, um Rechner auch hinter Firewalls zu erreichen. Befinden sich zwei Geräte im gleichen lokalen Netzwerk, werden die Daten direkt ausgetauscht, ohne Umweg über die Internetverbindung.

Ordner synchronisieren, Ordner teilen

Die zu synchronisierenden Ordner - das Synchronisieren einzelner Dateien wird nicht unterstützt - können in der Clientsoftware von Bittorrent Sync festgelegt werden. Sobald ein Ordner hinzugefügt wird, erzeugt die Software ein sogenanntes "Secret", eine zufällige Zeichenkette mit 20 Zeichen. Damit ein Ordner mit seinen Daten auf einem anderen Gerät landet, muss dort dieses Secret eingegeben werden. Auf diesem Weg können Daten auch mit Freunden ausgetauscht werden. Die Daten werden dann direkt übertragen, ohne dass sie erst auf einen Server hochgeladen werden müssen.

Dabei unterstützt Bittorrent Sync auch eine Einwegsynchronisation: Dazu wird ein spezielles Secret generiert, über das nur lesend auf die Daten zugegriffen werden kann. Änderungen auf anderen Geräten werden dann nicht zurück zur Originalquelle übertragen. Bittorrent Sync unterstützt auch eingeschränkte Secrets, etwa für einen auf eine zeitliche oder bestimmte Anzahl von Zugriffen begrenzten oder sogar einmaligen Zugang.

Synchronisieren trotz Firewall und NAT

Die Erzeugung der Sitzungsschlüssel und die gegenseitige Authentifizierung werden per Secure Remote Password Protocol (SRP) erledigt, was auch Perfect Forward Secrecy ermöglicht. Aus dem Bittorrent-Protokoll wurde Peer Exchange (PEX) integriert, bei dem zwei sich verbindende Peers Informationen über weitere Peers austauschen, die ihnen bekannt sind. Bittorrent Sync kann auch einen Bittorrent-Tracker-Server nutzen, um Peers im Netzwerk zu entdecken.

Gleichzeitig dient dieser Tracker dann als STUN-Server (Session Traversal Utilities for NAT), mit dem direkte Verbindungen auch hinter NATs hergestellt werden können. Die dafür übertragene IP-Adresse wird per SHA1 verschlüsselt und nur der Schlüssel übertragen. Wie Bittorrent verwendet auch der Tracker Distributed Hash Tables (DHT), in denen die SHA1-Schlüssel gespeichert werden. Sollten Peers einmal nicht direkt miteinander kommunizieren können, verwendet Bittorrent Sync bereitgestellte Relay-Server, die eine Verbindung zwischen den Peers herstellen können. Dadurch soll eine höchstmögliche Verfügbarkeit gewährleistet werden. Für die Übertragung werden die Daten mit AES-128 im Counter Modus (CTR) verschlüsselt.

Für Linux gibt es zwar einen offiziellen Sync-Client. Darüber lässt sich allerdings nur die webbasierte Benutzeroberfläche starten. Eine Benutzeroberfläche, die sich wie unter Windows und Mac OS X integriert, gibt es dort nicht. Die haben Mark Johnson und weitere Entwickler für Linux in Form von Python-Skripts umgesetzt, die die frei zugänglichen APIs von Bittorrent Sync verwenden.

Erleichterte Installation per Skript

Der Entwickler Leo Moll hat aus dem offiziellen Sync-Client und den Python-Skripts DEB-Pakete gestrickt, die unter Debian sowie unter dessen Derivaten wie Ubuntu oder Linux Mint installiert werden können. Moll hat auch selbst einige Skripte beigelegt, mit denen Bittorrent Sync auf einem Rechner als zentraler Server dienen kann. Das hat einige Vorteile. So lässt sich der Bittorrent-Sync-Server beispielsweise auf einem NAS-Gerät betreiben oder einem Minirechner wie dem Raspberry Pi betrieben, der immer erreichbar ist. Von dort können dann verschiedene Clients darauf zugreifen, wenn sie gerade online sind. So kann das NAS als Dropbox-Server dienen, der sicher zu Hause im Keller steht. Aber auch administrative Einsatzgebiete sind möglich, etwa zur Synchronisierung von Konfigurationsdateien über mehrere Server in einem internen Netzwerk.

Obacht bei der Freigabe!

Allerdings bleiben die Daten nur so lange privat, wie auch die Secrets tatsächlich geheim bleiben. Das setzt eine überlegte Dateiverwaltung voraus, vor allem dann, wenn auch Fremde auf die Daten zugreifen sollen. Und: Wenn man seinen Bittorrent-Sync-Server anderen zur Verfügung stellt, sollten diese wissen, dass man als Administrator ihre Daten sehen kann.

Da Bittorrent Sync nicht freie Software ist, bietet der Entwickler Leo Moll seine angepassten Versionen für Linux bei Github und in einem eigenen PPA-Repository an. Noch ein Hinweis: Die von Moll integrierten offiziellen Bittorrent-Sync-Versionen tragen die Versionsnummern 1.4.1 und haben einen Betastatus. Inzwischen gibt es von Bittorrent die Version 2.0, die auf der Webseite zum Testen für Windows und Mac OS X erhältlich ist und später in zumindest einer Variante kostenpflichtig angeboten werden soll. Version 2.0 ist nicht mit dem Vorgänger kompatibel. Version 1.4.1 gibt es aber bislang weiterhin für Windows und Mac OS X.

Bittorrent Sync als Linux-Dienst

In der Servervariante wird Sync als Dienst im Hintergrund gestartet und benötigt zum Betrieb keine grafische Oberfläche, sondern lässt sich über einen Webbrowser von einem entfernten Rechner aus konfigurieren und zusätzlich über die Kommandozeile verwalten. Mit Molls Lösung lassen sich auch mehrere Instanzen von Bittorrent Sync starten, die jeweils eine eigene Konfigurationsdatei erhalten.

Für die Konfiguration müssen normalerweise komplizierte JSON-Dateien erstellt werden. Die von Moll bereitgestellten Installationsskripte nehmen dem Anwender diese Arbeit durch einen interaktiven Installationsprozess ab. Auch lässt sich die Grundkonfiguration mit dem Befehl dpkg-reconfigure nachträglich bearbeiten.

Im Verzeichnis /etc/btsync liegen die Konfigurationsdateien für einzelne Bittorrent-Sync-Instanzen. Wie unter Linux üblich landet das Startskript für den Bittorrent-Sync-Server im Verzeichnis /etc/init.d. Unter den Debian-Varianten wird über die Konfigurationsdatei unter /etc/default/btsync gesteuert, wie viele und welche Instanzen automatisch gestartet werden sollen.

Jede eigene Instanz benötigt ein eigenes Konfigurationsskript. Dort wird etwa der Port festgelegt, über den die jeweilige Instanz über den Webbrowser erreichbar werden soll, standardmäßig ist es zunächst der Port 8888. Zudem muss für jede Instanz jeweils ein eigener Listening Port definiert werden, der Standard ist UDP 3000 und muss in der Firewall geöffnet werden. Wenn der Zugriff über UPnP zugelassen ist, wird ein Port automatisch ausgewählt.

Schließlich muss für jede Instanz ein Ordner definiert werden, in dem weitere Konfigurationsdateien abgelegt werden, etwa die Datenbank mit dem Benutzernamen und Passwort, frei gegebene Ordner und Informationen über verbundene Peers. Standardmäßig werden diese zunächst in /var/lib/btsync im nicht editierbaren Datenbankendateien abgelegt.

Softwarequelle einrichten und die Software installieren

Bei der ersten Installation wird eine Standardinstanz erstellt, die als Grundlage dienen kann. Zunächst muss als Benutzer Root das PPA-Repository mit der Server-, aber auch der Client-Version über den Befehl sudo add-apt-repository ppa:tuxpoldo/btsync hinzugefügt werden. Anschließend wird mit apt-get update die Paketliste aufgefrischt. Dann erfolgt die Installation der Serverversion mit dem Befehl apt-get install btsync.

Im ersten Schritt kann Sync einer beliebigen Gruppe und einem Benutzer zugeordnet werden. Dafür werden standardmäßig der Benutzer und die Gruppe Btsync angelegt, mit denen auch später die synchronisierten Dateien auf dem Server belegt werden müssen. Das erschwert später das Erstellen der Verzeichnisse, in denen die zu synchronisierenden Daten liegen sollen. Stattdessen sollten hier der lokale Benutzer und die Gruppe users verwendet werden. Selbst angelegte Ordner, die später zur Synchronisierung freigegeben werden sollen, müssen diesem Benutzer zugeordnet werden. Mehr dazu später.

Im nächsten Schritt wird der Nice-Wert bestimmt. Dieser weist den Btsync-Prozessen unter Linux eine Priorität zu, die sie vom Kernel erhalten. Wer hier beispielsweise den Wert -20 setzt, weist den Kernel an, Btsync immer die höchste Priorität zu gewährleisten. Das spielt vor allem bei schwächerer Hardware eine Rolle, um die Synchronisierung der Daten zu beschleunigen, kann aber unter Umständen das restliche System dabei lahmlegen. Normalerweise ist die Prozessverwaltung des Kernels schon so optimal eingestellt und der Normalwert 0 reicht hier vollkommen aus. Auf einem Raspberry Pi, der ausschließlich als Sync-Server dienen soll, kann hier ein höherer Wert gewählt werden.

Anschließend wird festgelegt, von welchen Rechnern aus auf die Weboberfläche des Servers zugegriffen werden werden kann. Die Voreinstellung 0.0.0.0 sollte nur dann gewählt werden, wenn der Server nicht direkt vom Internet aus erreichbar ist. Zwar werden Login-Daten verlangt und der integrierte Webserver ist per HTTPS erreichbar, sicherheitshalber sollte der Server jedoch nach Möglichkeit über nur einen Rechner im Netzwerk konfiguriert werden können. Der im nächsten Schritt definierte Port 8888 kann beibehalten werden, die anschließende Option, die Weboberfläche nur über HTTPS zu starten, sollte dann bejaht werden. Damit ist die Erstkonfiguration abgeschlossen.

Ordner erstellen und Freigaben verwalten

Jetzt können die Ordner festgelegt werden, in denen die zu synchronisierenden Dateien abgelegt werden sollen. Das kann nur über die Weboberfläche erledigt werden, die entweder auf dem Server selbst oder über einen entfernten Rechner aus geschehen kann, etwa indem die IP-Adresse samt Port in einem Browser eingegeben wird.

Wer den lokalen Benutzer bei der Erstkonfiguration vorgegeben hat, erstellt beispielsweise im Home-Verzeichnis einen neuen Ordner und gibt ihn dann über das entsprechende Icon in der Weboberfläche frei. Anschließend kann dort der Ordner rechts über das Icon namens Share freigegeben werden. Das dabei erstellte Secret kann per E-Mail versandt oder als QR-Code generiert werden. Über Copy wird das Secret in die Zwischenablage kopiert.

Wo das Verzeichnis erstellt wird, ist dabei egal, sofern der Benutzer die entsprechenden Zugriffsrechte hat. Bei einem Raspberry Pi kann das beispielsweise auch auf einer über USB angeschlossenen externen Festplatte geschehen. Die folgenden Befehle müssen als Root ausgeführt werden. Zunächst wird der Ordner mit dem Befehl mkdir erstellt. Mit dem Befehl chown Benutzername:users Ordnername wird das Verzeichnis mit den entsprechenden Rechten versehen. Wer den Benutzer Btsync gewählt hat, muss stattdessen den Befehl chown btsync:btsync Ordnername verwenden.

Rechteverwaltung mit Sticky Bits

Zusätzlich sollte der Ordner mit den benötigten Zugriffsrechten versehen werden. Dazu wird chmod 2775 Ordnername eingegeben. Die erste Zahl setzt ein sogenanntes Sticky Bit und ordnet damit alle dort erstellten oder hineinkopierten Dateien der Gruppe zu, die zuvor mit dem Chmod-Befehl bei der Erstellung des Ordners definiert wurde. Denn die in den jeweiligen Ordnern abgelegten Dateien müssen selbstverständlich ebenfalls entsprechende Rechte haben, mit denen Bittorrent Sync läuft. Eine als Root erstellte Datei, die in einem mit einfachen Benutzerrechten ausgestatteten Verzeichnis abgelegt wurde, wird von Bittorrent Sync nicht synchronisiert und führt unter Umständen zu einer Fehlermeldung.

Beim Synchronisieren zwischen anderen Rechnern spielt das aber keine Rolle, da der Bittorrent-Sync-Client die Rechte wieder dem dortigen Benutzer neu zuordnet. Unter Debian-basierten Linux-Systemen kann aus Molls Repository der Client mit dem Befehl apt-get install btsync-gui installiert werden. Die Python-Skripte legen ein Icon in der Benachrichtigungszeile ab. Darüber lassen sich die auf dem Server generierten Secrets einbinden oder selbst weitere Ordner zur Synchronisierung freigeben. Über das Icon lässt sich auch die Weboberfläche starten. Der Browser warnt aber zunächst vor dem Zugriff eines unbekannten Benutzers. In den Einstellungen, die sich hinter dem Zahnradsymbol verbergen, lässt sich dann ein Benutzer samt Passwort festlegen. In der Weboberfläche lässt sich auch eine Synchronisierungshistorie einsehen.

Fragmentierte Verzeichnisstruktur

Auf dem Server legt die Standardinstallation im Verzeichnis /etc/btsync die Konfigurationsdatei debcon-default.conf an. Sie sollte nicht per Hand editiert werden, da sie bei einem Update mit den bisherigen Einstellungen wieder überschrieben wird. Sie kann ebenso wie die ausführlichere Version im Unterverzeichnis samples als Vorlage für weitere dienen. Jede im Ordner /etc/btsync abgelegte Conf-Datei wird mit einer eigenen Instanz gestartet, sofern in der Konfigurationsdatei /etc/default/btsync die Option AUTOSTART="all" aktiviert ist.

Wer beispielsweise im lokalen Netzwerk zusätzlich Konfigurationsdateien zwischen mehreren Servern synchronisieren will, erstellt zunächst eine neue Conf-Datei und definiert dort mit Hilfe der Parameter DAEMON_UID=root und DAEMON=root, dass die zweite Instanz von Bittorrent Sync mit Root-Rechten laufen soll. Unter storage_path wird dann ein zusätzliches Konfigurationsverzeichnis bestimmt, in dem die Einstellungen für die neue Instanz abgelegt werden sollen, etwa die zu synchronisierenden Ordner, die über die Weboberfläche definiert werden. Diese muss über einen anderen Port gestartet werden, der über den Parameter listen im Abschnitt webui eingetragen wird. Beim Synchronisieren behält Bittorrent Sync auf Wunsch auch ältere Kopien veränderter Dateien.

Sollen die Dateien nur im lokalen Netzwerk synchronisiert werden, können auch die Parameter folder_defaults.use_dht, folder_defaults.use_relay und folder_defaults.use_tracker von true auf false gesetzt werden. Sie können später in der Weboberfläche für jeden freigegebenen Ordner gesondert umdefiniert werden.

Fazit

Mit den von Moll angepassten Bittorrent-Sync-Versionen lässt sich eine eigene Dropbox einfach einrichten. Der Anwender kann bestimmen, wo seine Daten liegen und wie viel Speicherplatz er nutzen will. Und der Server ist auch hinter Firewalls und NATs erreichbar.

Eine weitergehende Konfiguration erfordert allerdings mindestens erweiterte Linux-Kenntnisse und vor allem das Editieren von Textdateien. Molls Versionen gibt es für die weit verbreiteten, Debian-basierten Linux-Systeme und auch für Arch-Linux. Wer sie unter anderen Linux-Systemen nutzen will, muss sich ebenfalls gut mit dem System auskennen. Außerdem ist Bittorrent Sync zwar kostenlos nutzbar, aber nicht Open Source und soll es auch nicht werden, man muss sich beispielsweise darauf verlassen, dass die verwendete Verschlüsselung auch tatsächlich sicher ist. Schick wäre natürlich auch, wenn die Freigaben per Kommandozeile verwaltet werden könnten, damit auf die Weboberfläche ganz verzichtet werden kann.

Während unseres Tests erlebten wir keine Ausfälle, die Synchronisierung klappte auch hinter einem weitgehend abgeschotteten Router. Über die Weboberfläche lassen sich Ordner für Dritte schnell freigeben und auch wieder sperren. Das sind die entscheidenden Vorteile eines Sync-Servers.  (jt)


Verwandte Artikel:
Bittorrent Sync Alpha: Fast wie Dropbox, aber ohne Limits   
(24.04.2013, https://glm.io/98902 )
Sky Store: Sky verkauft Streaming-Filme auf DVD und Blu-ray   
(20.06.2017, https://glm.io/128473 )
Open-Source-Unternehmen: Startups sterben, Nextcloud startet neu   
(05.02.2018, https://glm.io/132577 )
Certificate Transparency: Webanwendungen hacken, bevor sie installiert sind   
(29.07.2017, https://glm.io/129116 )
Owncloud-Fork: Nextcloud 12 skaliert Global   
(22.05.2017, https://glm.io/127949 )

© 1997–2019 Golem.de, https://www.golem.de/