Zugriff auf ein Webverzeichnis

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Hallo zusammen,

ich bin aktuell mit einer theoretischen Frage konfrontiert worden und würde mich darüber gerne mal austauschen. Der Webspace hat folgende Struktur (httpdocs statt htdocs):

Code: Alles auswählen

.../httpdocs/...
Momentan wird über ftp auf einen Ordner vor httpdocs zugegriffen und dort werden Dateien hingeschaufelt, die von einer App vor httpdocs benötigt werden.

Überlegt wird momentan, ob der Speicherort hinter bzw. oberhalb des httpdocs auf den Server verlegt werden kann. Könnten wir dann weiterhin mit ftp in einen entsprechenden Ordner Dateien schaufeln und handeln wir uns durch die Änderung irgendwelche Probleme oder Sicherheitsrisiken ein? Ich bin gefragt worden, was ich davon halte, bin aber mit der Software bislang nicht betraut und arbeite schon länger nicht mehr mit dem ftplib-Modul.

Zur Veranschaulichung:

Alte Struktur

Server
+--httpdocs
+---- Zielort
+---- App

Neue Struktur (angedacht)

Server
+-- Zielort
+----httpdocs
+------ App
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

Was ist denn in den verschiedenen Verzeichnissen? Wenn in App der Quellcode für etwa ein Django-Projekt ist, dann hat das tunlichst nichts unter httpdocs zu suchen.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

/httpdocs/ ist ja normalerweise das Basisverzeichnis, von wo aus relativ dazu alle statischen Dateien für den Webserver liegen. Also üblich wäre es, wenn man auf die Dateien per https://irgendeine.url/Zielort/tolles_bild.jpg zugreifen kann. Ohne Änderung der Konfiguration (außer dem Pfad zu httpdocs) landet man dann bei der neuen Struktur https://irgendeine.url/tolles_bild.jpg.
Ich kenne Eure Konfiguration nicht, und auch sonst hast Du wenig verraten, was der Anwendungsfall ist.
Prinzipiell ist die Sicherheit unabhängig davon, wie Verzeichnisse benannt werden. Wichtig ist nur, dass in einem öffentlich erreichbaren Verzeichnis nur Dateien liegen, die man auch öffentlich erreichbar haben will. Und es darf keine vom Server "ausführbaren" Dateien dort liegen.
Auch ftp ist es egal, wie die Verzeichnisse heißen. Du hast Zugriff auf alles ab einer bestimmten Ebene.
Konfigurationsänderungen an einem öffentlich erreichbaren HTTP-Server sollte nur von Personen vorgenommen werden, die sich damit auskennnen.
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Ich bin (bislang) komplett unbeteiligt und kenne den Quelltext nicht (!). In den Verzeichnissen liegt eine php-basierte App (ich vermute eine angepasste typo3-basierte App), die aus einem FileAdmin-Ordner PDF-Dateien (Aufsätze und ähnliche Dokumente) ausliefert. Ich vermute, dass für das Schaufeln der PDF-Dokumente auf den Server Python oder Java zum Einsatz kommt, habe aber keinen Einblick. Da im FileAdmin wohl auch interne Dateien (PDFs) hochgeladen werden und die php-App die Auslieferung incl. Zugriffssteuerung erledigen soll, ist das Verzeichnis momentan durch htaccess gesichert. Den Server betreue ich nicht und mit der Upload-App habe ich bislang auch nichts zu tun. Ich wurde nur nach meiner Meinung gefragt. Es ergeben sich konkret zwei Fragen:
Prinzipiell ist die Sicherheit unabhängig davon, wie Verzeichnisse benannt werden.
Aktuell gibt es wohl die Überlegung, die PDF-Dateien im FileAdmin-Ordner aus einem Unterverzeichnis von httpdocs in einen über das Internet nicht erreichbaren Ordner auf dem Server zu verlegen. Der Autor der php-App hat das wohl angestoßen, weil er diese Struktur eigentlich von den anderen Projekten seiner Agentur gewohnt war. Für mich stellt sich die Frage, ob wir damit gegenüber einer Sicherung durch htaccess ein Mehr an Sicherheit gewinnen.
Wichtig ist nur, dass in einem öffentlich erreichbaren Verzeichnis nur Dateien liegen, die man auch öffentlich erreichbar haben will. Und es darf keine vom Server "ausführbaren" Dateien dort liegen.
Da liegen PDF-Dateien, die durch htaccess geschützt sind. Wie seht ihr das? Reicht dieser Schutz. Ich habe mich damit vor Jahren befasst und hielt das damals immer für sehr sicher.
Auch ftp ist es egal, wie die Verzeichnisse heißen. Du hast Zugriff auf alles ab einer bestimmten Ebene.
In das Projekt sind wohl viele Stellen eingebunden und ich vermute, dass die php-App und die Upload-App extern betreut werden. Komme ich über ftp in einen Ordner oberhalb von httpdocs und kann ich dorthin PDF-Artikel hochladen? Die Frage nach der bestimmten Ebene stellt sich mir gerade. Ich habe keinen Test-Webspace, wo ich Zugriff auf einen Bereich oberhalb von htdocs hätte, d. h. ich kann es nicht testen. Kann das jemand beantworten? Hat das schon mal jemand machen müssen?
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Bei ftp kann man halt bestimmte Verzeichnisse freigeben. Wenn htdocs das oberstes Verzeichnis ist, dann kannst Du über ftp nicht auf noch höhere Verzeichnisse zugreifen.

Die Sicherung über htaccess hat das Risiko, dass man etwas falsch konfiguriert. Wenn die Dateien erst gar nicht da sind, ist das sicherer.

Dateien hochladen, die dann wieder direkt zugreifbar sind, hat das Risiko, dass man auch php-Dateien hochladen kann und die dann auf dem Server ausführen kann. Wieder ein Konfigurationsthema. Wenn man die Dateien dagegen über ein php-Skript herunterladen kann, dann hat man das Risiko, dass das Skript Sicherheitslücken hat, und mal alles herunterladen kann.

Ziel sollte es sein, möglichst wenig Angriffsfläche zu bieten. Apache ist dazu eigentlich viel zu komplex. Apache und damit die php-Programme laufen meist mit viel zu vielen Rechten. Und so wie Du das beschreibst, kennt niemand das gesamte System, sondern jeder werkelt nur an einer kleinen Ecke herum.

Jede Änderung könnte potentiell die Sicherheit erhöhen, oder verringern. Ohne detailliert das Gesamtsystem zu kennen, kann man dazu aber nichts sagen. Ein Upload-Verzeichnis, von wo aus der HTTP-Server nicht direkt Dateien ausliefert, sollte nicht von diesem erreichbar sein.

Idealerweise hat der HTTP-Server einen eigenen Nutzer mit möglichst wenig Lese- und (so gut wie) gar keine Schreibrechte. Die Skripte sind per Reverse-Proxy angebunden, laufen unter einem anderen Nutzer, der möglichst auch nur auf ein Upload-Verzeichnis Schreibrechte hat. so können Sicherheitslücken im HTTP-Server gar keinen Schaden anrichten, weil fast alles, auf was dieser Nutzer zugreifen kann, eh öffentlich ist. Sicherheitslücken in den Skripten, (die viel wahrscheinlicher sind), können die Server-Konfiguration nicht stören. Risiko bleibt, dass man dann die "internen Dokumente" unbefugt lesen kann. Das Skript, das also Zugriff auf solche Dokumente hat, sollte also wieder unter einem eigenen Nutzer laufen und möglichst einfach sein. Das ist das klassische Ritterburg-Model: Zugang nur über ein gut bewachtes Tor und von außen muß man erst in den Vorhof, und wieder durch ein Tor in den Innenhof und wieder durch ein Tor in den Hauptturm mit der Schatzkiste.
Aus Bequemlichkeit wird meist keine Ritterburg gebaut, sondern alles läuft über einen Apache-Server, der Zugriff auf alles hat.
Benutzeravatar
__blackjack__
User
Beiträge: 13079
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Also das Gegenteil zur Ritterburg wäre mit dem Apache dann bildlich so etwas wie ein Wigwam/Wickiup. 😀
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Es ist gut per (s)ftp eine Ebene oberhalb des Webroot einsteigen zu können. Dann besteht die Wahl Inhalte öffentlich oder nicht öffentlich einzustellen.

Bei apache ist es eine gute Empfehlung, möglichst auf den Einsatz von .htaccess-Dateien zu verzichten. Oft kennen sich Webentwickler mit diesen nicht wirklich aus und konfigurieren dann gerne per copy & paste von irgendwelchen Vorlagen. Weiter können in der apache-Konfiguration Irrtümer geschehen, welche die Auswertung von .htaccess-Dateien verhindern. Also einiges an Fehlerquellen.

Zudem ist der Zugriff auf die .htaccess-Dateien ein ziemlicher Performancekiller, auch wenn dies bei wenig besuchten Seiten nicht sonderlich auffällt.
Antworten