Adventskalender 20. Dezember 2022 - In der Cloudbäckerei ... aus Keksen und Reusen rasant entstand ... verbrannt?

Smalltalk
Antworten
uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Adventskalender 20. Dezember 2022 - In der Cloudbäckerei ... aus Keksen und Reusen rasant entstand ... verbrannt?

Beitrag von uname » 20.12.2022 04:39:37

Wer kennt es nicht. Jedes Jahr zu Weihnachten stellt sich die immergleiche Frage, wer zum Fest die Cloud zum Austausch der Weihnachtsbilder mitbringt.

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 Debianfiglet erstellt.

Bild

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:

Bild
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 NoPaste-Eintrag41843

Hieraus ergibt sich die fertige index.php siehe Download NoPaste-Eintrag41846. 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. NoPaste-Eintrag41845. 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
(mit .htaccess)

Code: Alles auswählen

https://webserver.tld/xmascloud/index.php?p=correcthorsebatterystaple
(ohne .htaccess)


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.

Bild


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.

Bild
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?

Benutzeravatar
Meillo
Moderator
Beiträge: 8818
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Adventskalender 20. Dezember 2022 - In der Cloudbäckerei ... aus Keksen und Reusen rasant entstand ... verbrannt?

Beitrag von Meillo » 20.12.2022 20:59:13

Vielen Dank fuer diesen schoenen und auch nett geschriebenen Beitrag. Ich finde, dass du einen praxisnahen Ansatz hast, der fuer die Mitlesenden einen Zugang zum Code schafft und zeigt, dass man freie Software auch ruhig mal veraendern kann. Natuerlich gibt es in dem ganzen Thema einige Sicherheitsdinge zu beachten, wie du schon schreibst, die man bei Bedarf hier noch vertiefen kann.

Was das fuer ein Baeumchen im ersten Bild ist, habe ich nach einer kleinen Recherche dann selber herausfinden koennen: https://github.com/sergiolepore/ChristBASHTree Den werde ich in den naechsten Tagen gleich mal zum Einsatz bringen. :THX:

Nachdem ich nun deine Backbemuehungen geniessen habe koennen, lasse ich dich gerne auch an meinen teilhaben ... leider hat sich die Befuerchtung aus dem Threadtitel bewahrheitet: verbrannt! :mrgreen:
Bild
Use ed once in a while!

Benutzeravatar
paedubucher
Beiträge: 856
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Adventskalender 20. Dezember 2022 - In der Cloudbäckerei ... aus Keksen und Reusen rasant entstand ... verbrannt?

Beitrag von paedubucher » 20.12.2022 21:15:27

Vielen Dank auch für den Beitrag. Ich muss jedoch zugeben, dass für mich bereits der Hinweis auf Debianfiglet die Hauptbeschäftigung mit diesem Türchen ausgemacht hat. In Kombination mit Debiancowsay verbrachte ich doch eine recht gute Zeit heute Vormittag :wink:

Code: Alles auswählen

$ figlet 'Ihre Daten wurden gecloud.' | cowsay -n -d
 _______________________________________________________________________________ 
/  ___ _                ____        _                                           \
| |_ _| |__  _ __ ___  |  _ \  __ _| |_ ___ _ __                                |
|  | || '_ \| '__/ _ \ | | | |/ _` | __/ _ \ '_ \                               |
|  | || | | | | |  __/ | |_| | (_| | ||  __/ | | |                              |
| |___|_| |_|_|  \___| |____/ \__,_|\__\___|_| |_|                              |
|                                                                               |
|                         _                              _                 _    |
| __      ___   _ _ __ __| | ___ _ __     __ _  ___  ___| | ___  _   _  __| |   |
| \ \ /\ / / | | | '__/ _` |/ _ \ '_ \   / _` |/ _ \/ __| |/ _ \| | | |/ _` |   |
|  \ V  V /| |_| | | | (_| |  __/ | | | | (_| |  __/ (__| | (_) | |_| | (_| |_  |
|   \_/\_/  \__,_|_|  \__,_|\___|_| |_|  \__, |\___|\___|_|\___/ \__,_|\__,_(_) |
\                                        |___/                                  /
 ------------------------------------------------------------------------------- 
        \   ^__^
         \  (xx)\_______
            (__)\       )\/\
             U  ||----w |
                ||     ||
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Antworten