Wohin im Dateisystem mit Webanwendungen

Django, Flask, Bottle, WSGI, CGI…
Antworten
BlackJack

Mal eine vielleicht blöde Frage: Wo speichert ihr eure Webanwendungen? Und warum gerade dort?

Ich wollte den mittlerweile gewachsenen Zoo auf verschiedenen Servern mal an einen ”Standard”-Ort verschieben. Bisher liegen die Anwendungen in Heimatverzeichnissen, in ``/opt/``, in Unterverzeichnissen von ``/var/``, und so weiter.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@BlackJack
Ohne mir darüber jemals selbst Gedanken gemacht zu haben: Auf meinem WebFaction Host liegen die Anwendungen unter ``.../webapps``, also z. B. ``.../webapps/trac``.

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
BlackJack

@mutetella: Ähm ja und wofür steht nun ``...``? Das ist ja eigentlich meine Frage. :-)
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

BlackJack hat geschrieben:Ähm ja und wofür steht nun ``...``?
:oops: Ok, war ja klar... :oops:
``webapps`` liegt im Homeverzeichnis des webfaction-Accounts.

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Ich habe einen www-User, der alle Daten in seinem Home-Verzeichnis hat.
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

/srv/<Protokoll- bzw. Serverdienstname>/sub.domain....

Das /srv/ hab ich mir irgendwann mal bei SuSE abgeschaut und nie wirklich hinterfragt - nu isses Gewohnheit ....
Brawn
User
Beiträge: 11
Registriert: Dienstag 21. Januar 2014, 22:38

Hallo,

Bei mir ist es unter /var/www/<projekt.subdomain> (Debian geschädigt). :wink:

Meiner Meinung nach ist es fast egal wo du es reintust (/srv, /opt /var/www,...), hauptsache es funktioniert (auch nach einem Upgrade) und du fährst bei deinen Servern eine Linie (falls du mal nicht da bist und ein anderer deine Arbeit tun soll (Dokumentation)).

@jerch:
Komischerweise die Leute was ich kenne, haben auch mit Suse angefangen. :lol:
BlackJack

@Brawn: Naja so egal ist es nicht und ``/var/www/…`` ist wohl *der* Ort wo man es *ganz bestimmt nicht* ablegen sollte, denn das ist traditionell das `DocumentRoot` vom Webserver.

Klar kann man Programm und nicht-öffentliche Daten auch dort per Webserverkonfiguration schützen, aber man muss das halt aktiv tun und darf das nie vergessen und wenn irgendwas an der Webserverkonfiguration kaputt geht, kann trotzdem potentiell alle Welt Programm/Quelltext/Templates/Konfiguration (mit Zugangsdaten zur DB, …) auslesen. Böse Falle.
Brawn
User
Beiträge: 11
Registriert: Dienstag 21. Januar 2014, 22:38

BlackJack hat geschrieben:Klar kann man Programm und nicht-öffentliche Daten auch dort per Webserverkonfiguration schützen, aber man muss das halt aktiv tun und darf das nie vergessen und wenn irgendwas an der Webserverkonfiguration kaputt geht, kann trotzdem potentiell alle Welt Programm/Quelltext/Templates/Konfiguration (mit Zugangsdaten zur DB, …) auslesen. Böse Falle.
Man sollte so oder so den Webserver einschränken und die Zugriffe auf ohne index.html oder ähnliches sperren.
Und ausserdem greift das Programm als Dienst bsp.: www-data drauf zu, somit bringt es auch wenig die Configs wo anders hinzulegen.
Ich sehe da eher ein Risiko, wenn jemand dem Webserver aus dem Webverzeichnis in ein anderes Verzeichnis im System zugreifen lässt (nur da man meint, dass der Ordner safe unter /etc sicher sei).

PS.: Könnte es sein, dass wir an uns vorbeireden? :K :mrgreen:

EDIT: Natürlich unter /etc und in die Systemordnern sollte man keine Webfreigabe machen. :wink:
BlackJack

@Brawn: Diese Einschränkungen auf Verzeichnisse muss man aktiv einrichten, und wenn man irgendwas an der Konfiguration versemmelt oder sich auch den verschiedensten anderen Gründen mal etwas ändert, kann es halt doch immer mal wieder passieren das der Webserver Sachen aus DocumentRoot ausliefert die man mal versucht hat zu schützen. Und das ist nicht nur theoretisch, denn eine Suchmaschine nach typischen Texten auf von Webservern generierten Verzeichnisauflistungen fördert immer mal wieder Ergebnisse zu Tage von Verzeichnissen bei denen der oder die Verantwortliche(n) sicher nicht wollten das die jeder einfach so herunterladen kann. So eine Suchanfrage gehört zu Evil Scriptkiddie 101 :-)

Wenn man die Webanwendung und die Daten nicht unter DocumentRoot speichert, dann kann das halt gar nicht erst passieren, egal wie kaputt die Webserverkonfiguration ist.

Und selbst wenn man das Auflisten verhindert, kann ein Angreifer ja immer noch gezielt versuchen Dateien abzurufen. Viele Webanwendungen, insbesondere wenn sie ein Rahmenwerk verwenden, haben ja ein ähnliches Namensschema für ein paar strategisch wichtige Quelltextdateien. So etwas wie `urls.py`, `models.py`, oder `config.py` kann man als Angreifer immer mal ausprobieren. Und in so einer `config.py` stehen dann nicht selten die Zugangsdaten zur Datenbank drin, und auch gerne mal Zugangsdaten zu einem Mailserver und ähnlich sensibles Zeug.

Warum Du den Benutzer unter dem das läuft ins Spiel bringst, ist mir nicht ganz klar. Der spielt bei dem Problem gar keine Rolle.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Bei mir liegts in /var/www/<app>/ hab allerdings auch keinen DocumentRoot auf /var/www gesetzt und selbst wenn die Konfiguration kaputt ist, /var/www ist nicht der nginx default deswegen mache ich mir um irgendein ominöses kaputt gehen der Konfiguration jetzt weniger sorgen.

Ansonsten ist der Ansatz für jede Anwendung einen User zu haben und die Anwendung dann ins home Verzeichnis zu packen wohl auch recht populär.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

DasIch hat geschrieben:Ansonsten ist der Ansatz für jede Anwendung einen User zu haben und die Anwendung dann ins home Verzeichnis zu packen wohl auch recht populär.
So mache ich das auch, jeder User hat dazu noch sein eigenes VirtualEnv und eigenen PostgreSQL-User. Dazu noch ein wenig Config in /etc für mod_wsgi und das wars.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten