Durch das Kalendertürchen vom 15. Dezember unseres Adventskalenders haben wir gelernt, dass wir besser unsere eigene Cloud mitbringen als die Cloud unserer Familie oder Freunde aus irgendeiner Großbäckerei aus Übersee zu verwenden.
Das vorgestellte Nextcloud aus Türchen Nr. 15 mag ja ganz nett sein. Leider haben wir bis jetzt nicht die Zeit gefunden, um uns damit ernsthaft zu beschäftigen. Wer will schon lange Forenbeiträge oder Dokumentationen zu Software lesen, Software installieren oder sich auf einen Nextcloud-Hoster verlassen? Wir haben keine hohen Anforderungen an unsere Cloud. Wir wollen nur Dateien mit unserer Familie und Freunden möglichst schnell webbasiert teilen. Auf große Administration und Wartung haben wir keine Lust. Eine Datenbank wie MariaDB wollen wir nicht. Quotas sind nur was für Angsthasen. Benutzerverwaltungen sind uns viel zu aufwendig, fehleranfällig und Passwörter sind sowieso unsicher. Wir verlangen höchste Performance und Zuverlässigkeit und kosten darf es natürlich auch nichts.
Da es leider nichts gibt, was unseren minimalen Anforderungen gerecht wird, backen wir uns kurz vorm Fest einfach unsere eigene Cloud, die XmasCLOUD. Ein Logo haben wir schon mal schnell mit figlet erstellt.
Billiger Webspace
Durch Zufall haben wir unseren alten Webspace bei Hetzner, Strato oder auch lima-city wiedergefunden. Da ist noch etwas Platz frei und muss dieses Weihnachten für unsere XmasCLOUD reichen. Im ersten Schritt legen wir das Verzeichnis xmascloud an. Da werden wir alles reinkopieren, damit wir nicht versehentlich unsere veraltete Webpräsenz zerschießen und uns damit noch mehr unnötige Arbeit einhandeln.
Softwareauswahl
Da wir selbst nicht programmieren können und es zudem sehr zeitaufwendig wäre, nutzen wir das wichtigste Programmierkonzept überhaupt: reuse. Bei der folgenden Software wird einiges versprochen, was wir vielleicht für unsere XmasCLOUD wiederverwenden können:
Quelle
Die integrierte aber von XmasCLOUD sowieso nicht benötigte Benutzerverwaltung hält nicht, was sie verspricht. Aber was solls. Es ist Weihnachten und der Autor hat uns unter Einhaltung der GPL die Software geschenkt. Warum also nicht sein Backrezept etwas abwandeln und erneut per GPL als XmasCLOUD zu Weihnachten verschenken. Ob unsere XmasCLOUD zum Austausch von Dateien geeignet ist oder im Ofen verbrennt, müssen unsere Familie und Freunde entscheiden.
Originalrezept
Beim Tiny File Manager handelt es sich um einen webbasierten Dateimanager, der nur aus einer PHP-Datei besteht. Neben einer Benutzerverwaltung, Upload, Download und anderen Dateimanagerfunktionen bietet er einen schönen Texteditor, Viewer für einige Dateiformate, Einschränkungen auf Dateiendungen und vieles mehr. Die Software ist etwas über 4000 Zeilen lang und bindet diverse CDNs für Javascript und CSS ein. Die Datei tinyfilemanager.php (aktuell Version 2.5.2) downloaden wir hier.
In den vergangenen Jahren gab es beim Tiny File Manager immer wieder Sicherheitslücken, was wohl für einen webbasierten Dateimanager normal ist. Obwohl XmasCLOUD die Software einschränkt, kann nicht ausgeschlossen werden, dass es weitere Sicherheitslücken gibt und damit auch unsere Einschränkungen unterwandert werden. Aber vielleicht passiert das ja auch alles erst nach Weihnachten.
Anpassung für XmasCLOUD
tinyfilemanager.php benennen wir in index.php um. Anschließend führen wir ein paar sehr einfache Veränderungen durch:
- Änderung des Titels von „Tiny File Manager“ zu „XmasCLOUD“ (zwei Stellen)
- Deaktivierung der integrierten Benutzerverwaltung
- Setzen des Pfades auf /xmascloud (zwei Stellen)
- Anpassung der Zeitzone
- Einschränkung auf erlaubte Dateiänderungen (zwei Stellen)
- Ausschluss Ordner /xmascloud (etwa ab Zeile 415)
Details siehe 41843
Hieraus ergibt sich die fertige index.php siehe Download 41846. Alle Stellen mit den Änderungen haben wir mit // XmasCLOUD markiert, damit wir sie auch wiederfinden.
Optionale Verwendung von .htaccess
Falls gewünscht kann eine .htaccess für schönere URLs und für eine Benutzerverwaltung verwendet werden. Obwohl XmasCLOUD aus Sicherheitsgründen PHP-Dateien nicht zulässt, kann zusätzlich über .htaccess PHP weiter eingeschränkt werden. 41845. Wer faul ist oder vor dem Fest nicht mehr genug Zeit hat, lässt die .htaccess erst mal weg.
Ordner /xmascloud
In unserem Ordner xmascloud befinden sich nun index.php, optional .htaccess und als erste „Freigabe“ legen wir beispielhaft den Ordner correcthorsebatterystaple an.
Code: Alles auswählen
index.php
.htaccess (optional)
correcthorsebatterystaple
Teilen der Freigabe über XmasCLOUD
Die Freigabe können wir nun mit unserer Familie oder Freunden z. B. per E-Mail wie folgt teilen:
Code: Alles auswählen
https:/webserver.tld/xmascloud/correcthorsebatterystaple
Code: Alles auswählen
https://webserver.tld/xmascloud/index.php?p=correcthorsebatterystaple
Funktionen von XmasCLOUD
XmasCLOUD bietet eigentlich alles was eine Cloud benötigt. So können von der Familie oder den Freunden Unterordner angelegt und in den Ordnern Dateien geuploadet und gedownloadet werden. Der gesammelte Download von mehreren Ordnern und Dateien ist leider nur über die integrierten ZIP-Funktionen und dem anschließenden Download der ZIP-Datei möglich. Auch können zwar beliebig viele Dateien auf einmal aber immer nur in einen Ordner geuploadet werden.
Sicherheit durch den Verzeichnisnamen
Die Sicherheit von XmasCLOUD basiert auf dem Wissen des freigegebenen Ordners wie z. B. correcthorsebatterystaple, der innerhalb der URL z. B. per E-Mail nur berechtigten Personen mitgeteilt wurde. Das ist nicht viel anders als bei den öffentlichen Freigaben von Nextcloud.
Quelle: https://xkcd.com/936/
Durch die Veränderung des Quellcodes etwa ab Zeile 415 verhindert XmasCLOUD, dass in die übergeordneten Verzeichnisstruktur /xmascloud ausgebrochen werden kann. Beim Versuch wird eine leere Seite geladen. Wer mehr Zeit hat als ich darf gerne eine Fehlermeldung programmieren.
Sicherheit durch Einschränkung von Dateiendungen
Ein Sicherheitsrisiko von webbasierten Dateimanagern ist es beliebige Dateiendungen zuzulassen. Sind Benutzer in der Lage z. B. ZIP- oder PHP-Dateien hochzuladen, können sie evtl. die verwendete Software umgehen und den gesamten Webspace übernehmen. XmasCLOUD verhindert dies durch fest vorgegebene Dateiendungen.
Problem ZIP
Aus Sicherheitsgründen lässt XmasCLOUD keine ZIP-Formate zu. Eine Ausnahme ist das in XmasCLOUD integrierte Zippen von Ordnern und Dateien und deren Download. Wenn auch der Upload von ZIP-Dateien benötigt wird, müssen die Positivlisten um die ZIP-Formate erweitert und zwingend die .htaccess verwendet werden, um die Ausführung von PHP-Code aus entpackten ZIP-Dateien zu verhindern.
Bekannte „Sicherheitslücke“
In der aktuellen Version von XmasCLOUD ist es möglich über die Copy-to und Copy-Button Dateien und/oder Ordner in die oberste Verzeichnisstruktur /xmascloud zu kopieren oder zu verschieben. Das kann als „Sicherheitslücke“ gesehen werden, vor allen wenn man Ordner mit unbekannten Personen teilt. Die einfachste Lösung ist die Funktion in den Zeilen von etwa 700 bis 840 vollständig zu entfernen und auch die Copy-Button zu löschen. Alternative Lösungen gerne hier im Thread posten.
Einschränkungen Bearbeiten vs. Nur Lesen:
In der aktuellen Konfiguration können alle Inhalte im geteilten Ordner gelesen, bearbeitet oder gelöscht werden. Über die Variable $global_readonly kann das Verhalten auf „Nur Lesen“ verändert werden. Wer jedoch wie ich sowieso nur Dateikopien teilt, hat durch das Schreibrecht nichts zu befürchten.
Online-Viewer, Cookies und CDNs:
Standardmäßig nutzt Tiny File Manager die Online Office Docs Viewer von Google, die wir in XmasCLOUD aus Sicherheitsgründen deaktiviert haben. Tiny File Manager verwendet Cookies. Von einigen CDNs wird Javascript und CSS nachgeladen. Falls gewünscht können die betroffenen Dateien aber auch lokal über den eigenen Webspace bereitgestellt werden, wofür jedoch einige Umprogrammierungen notwendig sind.
Zur weiteren Diskussion:
Hat euch mein kleines Backrezept für die XmasCLOUD gefallen? Schmeckt euch die XmasCLOUD oder ist sie verbrannt? Wie teilt ihr eure Weihnachtsbilder mit Familie und Freunden?