Dateien sicher verschlüsselt per Kommandozeile zu OneDrive und 40 anderen Cloud-Anbietern hochladen mit RClone

Dateien sicher verschlüsselt per Kommandozeile zu OneDrive und 40 anderen Cloud-Anbietern hochladen mit RClone

Die öffentlichen Cloud-Anbieter bieten keine wirksame Ende-zu-Ende-Verschlüsselung zum Schutze der Daten an. Sowohl Microsoft als auch Google, Amazon nehmen sich dort nicht viel. Bestenfalls wird eine serverseitige Verschlüsselung angeboten. Diese verbessert die Sicherheit jedoch kaum, da der Anbieter hierfür den Schlüssel selbst erstellt und aufbewahrt. Für die Verschlüsselung gibt es quelloffene Tools wie Cryptomator, die hier Abhilfe schaffen und die Daten wirksam schützen.

Möchte man dies auf einem freien Betriebssystem wie Linux durchführen und dazu noch automatisieren, steht man jedoch vor weiteren Problemen: Einige Anbieter besitzen keine offiziellen Linux-Clients. Noch weniger davon CLI-Werkzeuge. Gerade zur automatischen Sicherung sind solche öffentlichen Cloud-Anbieter in Kombination mit einer wirksamen Verschlüsselung interessant.

Abhilfe schafft hier RClone: Das quelloffene Kommandozeilenwerkzeug unterstützt über 40 verschiedene Cloud-Anbieter. Neben dem synchronisieren, hoch- und runterladen unterstützt es eine Reihe von Funktionen. Beispielsweise kann es die Daten automatisch verschlüsseln, damit sie nicht ungeschützt im Cloudspeicher liegen.

Installation unter Linux

Das Projekt wurde in Go entwickelt und kommt daher mit Abhängigkeiten gebündelt als einzelne Binary daher. Die version.txt Datei gibt die jeweils aktuellste stabile Version in für Maschinen optimierter Aufbereitung aus, wodurch sich die Installation einfach automatisieren lässt:

rcloneVersion=$(curl -s 'https://downloads.rclone.org/version.txt' | awk '{print $2}')
wget "https://downloads.rclone.org/$rcloneVersion/rclone-$rcloneVersion-linux-386.zip" -O rclone.zip
unzip -j rclone.zip

386 hinten vor der .zip Dateiendung ist die Architektur. Alternativ kann amd64 für die x86-64 Bit Architektur angegeben werden. Oder für die Raspberry Pi Nutzer arm64 bzw arm-v7. Wer sich unsicher ist, findet die eingesetzte Architektur mit uname -m heraus – aarch64 steht dabei für die 64 Bit ARM Version, d.H. in diesem Falle wäre 386 durch arm64 zu ersetzen.

Im aktuellen Ordner hat man nun eine Binary namens rclone:

$ ./rclone --version
rclone v1.52.2
- os/arch: linux/386
- go version: go1.14.4

Zur globalen Nutzung lässt sich die Binary nach /usr/local/bin kopieren. Ein Verweis auf den Ordner, in dem diese heruntergeladen wurde, ist dann nicht mehr nötig.

$ sudo cp rclone /usr/local/bin/

Verbindung zu Cloudanbieter herstellen

Zunächst muss man eine Verbindung mit dem eigenen Konto beim gewünschten Anbieter herstellen. Die gesamte Konfiguration findet sich in einem interaktiven Menü, welches via rclone config aufgerufen werden kann. Oben werden die bereits eingerichteten Dienste angezeigt, sofern vorhanden. Um einen neuen Dienst einzurichten, auf n für new remote tippen.

Der Assistent führt einen Schritt für Schritt durch die Einrichtung und fragt zunächst nach einem Namen. Dieser Name wird später als Ziel bei allen Operationen angegeben, die ihn betreffen. Er ist frei wählbar.

Nach dem Bestätigen mit Enter erscheint eine Liste aller unterstützten Clouddienste. Hier wird sowohl die jeweilige Nummer, als auch der klein geschriebene Bezeichner akzeptiert. Für Microsoft OneDrive kann also wahlweise 31 oder onedrive eingegeben werden.

Nun die Frage nach client_id und client_secret jeweils mit Enter bestätigen. Sie sind nur notwendig, wenn die Anwendungsverküpfung händisch eingerichtet wird. Sofern die Web-Oberfläche des Anbieters am Gerät aufgerufen werden kann, ist der Assistent einfacher. Dieser richtet die Verknüpfung ein und holt sich das dafür notwendige Token automatisch. Mittlerweile (2023) lässt sich noch die Region festlegen. Hier kann bei privaten Instanzen der Standard (= Enter) übernommen werden.

Die Frage nach der erweiterten Konfiguration lässt sich in der Regel mit n für no beantworten. Bei auto config ist yes zu empfehlen – es sei denn, man kennt sich mit der Software bereits aus und möchte diese tiefergehend anpassen. Inzwischen erfolgt noch eine weitere Frage, wie man sich authentifizieren möchte: Mit Y wird ein Webbrowser direkt auf dem Gerät geöffnet, um sich per OAuth anzumelden. Dies funktioniert auf Desktop-Geräten, doch wer z.B. per SSH auf einem Server verbunden ist, wählt hier N. Im Falle von N braucht ihr ein zweites Gerät mit grafischer Oberfläche, auf der ihr rclone authorize „onedrive“ ausführt, wobei onedrive ggf. durch den internen Name eures Cloudanbieters ersetzt werden muss.

Im Anschluss startet Rclone einen lokalen Webserver und öffnet den bereitgestellten Link im Standardbrowser. Dort muss man sich lediglich bei OneDrive anmelden und der Anwendung die Berechtigungen zum Dateizugriff geben. Hat alles geklappt, erscheint Success im Browser:

Schlussendlich möchte Rclone noch den Verbindungstyp wissen. Hintergrund ist, dass andere Microsoft-Dienste wie z.B. Sharepoint ebenfalls genutzt werden können. Sofern ihr dies nicht möchtet, ist der Standard onedrive für die Standard (personal) bzw. Business-Pakete die richtige Wahl. Man kann hier auch mehrere „Drives“ anlegen, aus denen ausgewählt wird.

Nun ist die Verbindung eingerichtet. Rclone muss lediglich noch wissen, ob es sich um OneDrive oder SharePoint handelt und welches Laufwerk genutzt werden soll. Standardmäßig gibt es nur eines (0), möglicherweise gibt es weitere durch Freigaben.

Nach zweimaligem Bestätigen erscheint wieder das Willkommensmenü, in dem die gewünschte Aktion angegeben werden kann. Hier sollte oben nun der soeben hinzugefügte Clouddienst erscheinen. Dies lässt sich mit q schließen.

Ende-zu-Ende-Verschlüsselung einrichten

Standardmäßig werden die Daten jedoch direkt auf den Server geladen und sind somit ungeschützt. Gerade bei öffentlichen Drittanbieter-Clouddiensten wie Microsoft, Amazon und Google ist daher dringend zu empfehlen, diese Daten durch Ende-zu-Ende-Verschlüsselung wirksam zu schützen. So hat nur der Besitzer Zugriff auf diese Daten.

Rclone setzt die Verschlüsselung über einen Pseudo-Cloudanbieter namens crypt um. Diesen müssen wir zunächst einrichten und mit dem ungeschützten Cloudkonto verbinden, welches im vorherigen Schritt eingerichtet wurde.

Dazu starten wir das Konfigurationsmenü mit rclone config, wählen n) new remote und legen einen Namen fest. Sinnvoll wäre es, den Name aus dem vorherigen Schritt zu nutzen und -crypted, -verschluesselt oder eine andere Kennzeichnung hinzuzufügen, sodass klar ist, welche Verbindung geschützt ist und welche nicht. Im vorherigen Schritt habe ich meine ungeschützte Verbindung onedrive-wd benannt. Hier gebe ich onedrive-wd-crypted an. Dies ist nur eine Empfehlung zur besseren Übersicht, man kann grundsätzlich die Bezeichnung frei wählen.

Wichtig ist nun, im Folgenden Schritt des Anbieters nicht den Cloudanbieter wie OneDrive auszuwählen! Sonst erstellt man nur ein weiteres ungeschütztes Konto. Hier wird immer crypt angegeben, egal welcher Cloudanbieter im Hintergrund steckt. Auch wer z.B. Amazon nutzen möchte, muss hier crypt eingeben.

Die Verknüpfung zum bereits eingerichteten Cloudanbieter geschieht erst im nächsten Schritt. Wir werden aufgefordert, dessen Bezeichnung (hier onedrive-wd) sowie den Zielordner anzugeben. Jeder Upload wird in den angegebenen Zielordner des Cloudspeichers abgelegt. Name und Ordnerpfad sind mit einem Doppelpunkt getrennt. onedrive-wd:/crypted definiert also, alles zum eingerichteten Cloudanbieter namens onedrive-wd in den Ordner crypted hochzuladen.

Nach der Festlegung des Backends fragt uns Rclone noch, wie stark wir die Dateien und Ordner schützen möchten. Hier ist die höchste Stufe zu empfehlen, also obfuscate und im nächsten Schritt true zum Schutz der Ordnernamen. Auch Metadaten sind nicht ungefährlich und können viele Informationen enthalten. Ein Paradebeispiel ist Dateinamen wie Brief_Ehemann_Schwangerschaftsabbruch.

Es folgt die Eingabe des Passwortes zur Verschlüsselung. Hier am besten y drücken um selbst ein Passwort festzulegen, das man sich im optimalsten Falle anhand einer zufälligen Zeichenkette via Passwortsafe generiert. Anschließend dieses Passwort eingeben und einmal bestätigen.

Im Anschluss bietet Rclone noch eine Passphrase zum Schutze des Kennwortes an. Diese ist optional, wird aber aus Sicherheitsgründen empfohlen. Ich würde daher eben so verfahren wie beim obigen Passwort.

Damit sind alle erforderlichen Angaben vorliegend. Die Zusammenfassung kann geprüft und mit Enter bestätigt werden.

Dateien verschlüsselt hochladen

Nun können wir unsere Daten geschützt hochladen.

$ rclone --progress copy ~/Downloads/balena-etcher-electron-1.5.70-linux-x64.zip onedrive-wd-crypted:

Dieser Befehl lädt beispielhaft eine Installationsdatei von Etcher in unser soeben eingerichtetes verschlüsseltes Konto onedrive-wd-crypted. Der Doppelpunkt am Ende ist kein Tippfehler. Auch beim hochladen wird danach das Zielverzeichnis angegeben. Mit onedrive-wd-crypted:test würde die Datei in einem Unterordner namens test landen. Der Doppelpunkt alleine lädt sie in das Wurzelverzeichnis ohne Unterordner.

Der Schalter –progress ist nicht zwingend nötig. Ich finde ihn sinnvoll, da er einen Fortschrittsbalken sowie weitere Infos wie z.B. die Übertragungsrate anzeigt. Standardmäßig erscheint ansonsten keinerlei Ausgabe über den Stand, bis das Hochladen abgeschlossen ist.

Öffnen wir nun den im ersten Schritt eingerichteten Clouddienst (etwa über dessen Weboberfläche), sind keinerlei Infos über die hochgeladene Datei sichtbar. Sowohl Inhalt als auch Dateiname wurden verschlüsselt.

Weder der Cloudanbieter noch andere Dritte (z.B. Angreifer) wissen, worum es sich handelt. Die einzigen anfallenden Metadaten sind Dateigröße und Hochladezeitpunkt. Damit hat man diese auf ein Minimum reduziert, wie es ohne gravierende Nachteile möglich ist.

Dateien und Ordner auflisten

Da Rclone den Schlüssel lokal auf unserem Gerät besitzt, können wir von dort auch die Metadaten sehen. Beispielsweise, welche Ordner und Dateien sich in unserer geschützten Cloud befinden. Dafür kommt der Befehl ls zum Einsatz, der alle Dateien auflistet. Möchten wir nur die Ordner sehen, kann lsd verwendet werden.

$ rclone ls onedrive-wd-crypted:
 94712145 balena-etcher-electron-1.5.70-linux-x64.zip

Grafische Web-Oberfläche

Alternativ bietet Rclone auch eine grafische Web-Oberfläche an. Diese befindet sich aktuell noch im experimentellen Stadium und kann über den Schalter –rc-web-gui gestartet werden. Da ab den zweiten Start noch keine automatische Anmeldung beim Öffnen des Browsers erfolgt, empfehle ich den Start mit -v um das zufällig generierte Passwort anzuzeigen. Alternativ kann man auch mit –rc-user und –rc-pass die gewünschten Zugangsdaten setzen

$ ./rclone rcd --rc-web-gui -v
$ ./rclone rcd --rc-web-gui --rc-user gui --rc-pass GuiTest

Daraufhin sollte sich der Browser öffnen. Gerade im Dashboard zeigt sich das frühe Stadium, so funktioniert beispielsweise die Statistiken wie Geschwindigkeit oder übertragene Dateien in meinen Tests mit v1.52.2 nicht. Auch das Hochladen von Dateien via Web endete mit einer Fehlermeldung. Hier wird es in Zukunft sicher noch Verbesserungen geben.

Nichts desto trotz bietet die Weboberfläche bereits jetzt einen bequemen Zugang zur Konfiguration. Über den Explorer lässt sich der Cloudinhalt anzeigen und ggf. herunterladen – besonders in Kombination mit der Verschlüsselung sehr praktisch. Metainfos wie z.B. die entfernte Speichernutzung sind ebenfalls zu sehen.

Wenn der Feinschliff mit den noch nicht fehlerfreien Funktionen abgeschlossen ist, bietet sich die Webschnittstelle für einen schnellen Überblick an.

Leave a Reply