Jump to content
Froxlor Forum
  • 0

Wirkung von open_basedir?


tt33tt

Question

Hallo alle zusammen,

 

ich habe in den Domänen jeweils den Haken open_basedir gesetzt.

Eigentlich sollte er doch den Zugriff einer Webseite auf das eigene Webseiten-Verzeichnis begrenzen, z.B. /var/kunden/webs/mustermann/domain.de Verstehe ich das richtig?

Die Variable muss dann doch in der jeweiligen vhost-Datei auftauchen? Dort sehe ich nichts.

In der phpinfo auf der Froxlor-Oberfläche steht open_basedir no value (Master: no value) Ist das normal?

Mus ich in einer php-config-Datei eine Variable setzen? Welche ist das und wie heißt die Variable?

 

Kürzlich waren alle Blogs eines angelegten Kunden infiziert. Vermutlich ist die Infektion von einem Blog dann über das Kunden-Root-Verzeichnis auf die anderen übergesprungen. Seltsamerweise waren andere Kunden nicht betroffen.

Daher denke ich, dass die Verzeichnisrechte das auf den Blog begrenzt haben. Allerdings dachte ich ursprünglich, dass bereits jede Domäne für sich abgekapselt wäre. Ist das nicht der Fall?

Als Sicherheitsmaßnahme genügt wahrscheinlich erst einmal open_basedir? Und das kann ich ja direkt in Froxlor über den Haken einstellen?

Eventuell kann ich das dann noch mit suexec erweitern: http://redmine.froxlor.org/projects/froxlor/wiki/FCGID_-_Handbuch

Das dafür benötigte FCGID kann ich einfach direkt per Haken in den Froxlor-Einstellungen anschalten oder?

 

Danke schon einmal :-)

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

Lösung gefunden: Ich muss bei jedem Kunden einzeln in die Kundenansicht gehen und dann in der jeweiligen Domain open_basedir statt auf das Heimverzeichnis auf die Domäne (Auswahl: "oben angegebenen Pfad") umstellen.

Nach meinen Tests wird dann auch bei neu angelegten Domänen standardmäßig auf das Domänenverzeichnis statt auf das Heimverzeichnis verwiesen.

 

//edit: Noch eine Frage. open_basedir beinhaltet die Pfade /usr/share/php/:/usr/share/php5/ Kann eine infizierte Seite dort Schaden anrichten oder nur lesen?

Link to comment
Share on other sites

Eigentlich sollte er doch den Zugriff einer Webseite auf das eigene Webseiten-Verzeichnis begrenzen, z.B. /var/kunden/webs/mustermann/domain.de Verstehe ich das richtig?

Exakt,

 

Die Variable muss dann doch in der jeweiligen vhost-Datei auftauchen? Dort sehe ich nichts.

Je nach PHP Einbindung, bei mod_php, Ja!

 

In der phpinfo auf der Froxlor-Oberfläche steht open_basedir no value (Master: no value) Ist das normal?

Naja, nicht wenn du eigentlich einen angegeben hast und es aktiviert ist

 

Mus ich in einer php-config-Datei eine Variable setzen? Welche ist das und wie heißt die Variable?

Nein, das macht eigentlich froxlor für dich

 

 

Allerdings dachte ich ursprünglich, dass bereits jede Domäne für sich abgekapselt wäre. Ist das nicht der Fall?

Nur wenn du sie auch entsprechend einrichtest (eigenen Unterordner anlegen, für jede Domain + open_basedir auf Domain-DocumentRoot)

 

Als Sicherheitsmaßnahme genügt wahrscheinlich erst einmal open_basedir? Und das kann ich ja direkt in Froxlor über den Haken einstellen?

Genau so ist es

 

Das dafür benötigte FCGID kann ich einfach direkt per Haken in den Froxlor-Einstellungen anschalten oder?

Wie du ja selbst geschrieben hast, gibt es hierfür das FCGID handbuch. Du brauchst einen lokalen User, bestimmte Pakete und bestimmte Einstellungen in Froxlor. Nach dem Anpassen der Einstellungen solltest du auch die Konfigurations-Schritte für Webserver und FCGID (sonstiges) durchlaufen.

Link to comment
Share on other sites

Nur wenn du sie auch entsprechend einrichtest (eigenen Unterordner anlegen, für jede Domain + open_basedir auf Domain-DocumentRoot)

Ich habe nun unter Einstellungen->Webserver-Einstellungen->Standard vHost-Einstellungen Folgendes eingetragen: php_admin_value open_basedir /var/kunden/webs/{CUSTOMER}/{DOMAIN}

Das hat er nun in alle vhost-Dateien übernommen. Sollte er das nicht standardmäßig und ist das die richtige Schreibweise?

Wenn ich unter den Webserver-Einstellungen schaue, dann steht dort auch anzuhängende Pfade bei OpenBasedir: /tmp/ Allerdings sehe ich nirgends, dass dieser Pfad angehängt wird. Wo sollte er auftauchen?

Link to comment
Share on other sites

Ne so ist das nicht richtig, wie gesagt, froxlor macht das doch für dich.

 

Wie hast du php eingebunden, mod_php, fcgid oder fpm?

In der phpinfo unter Froxlor steht bei loaded modules mod_php. fcgid habe ich noch nicht aktiviert. Wenn das so in der phpinfo steht, dann wird es mod_php sein oder wo sehe ich das?

Wenn Froxlor das macht, taucht es in der vhost-Datei auf oder? Da kann ich nichts zu open_basedir finden, außer meinen Eintrag. Oder wo übergibt Froxlor das an den Webserver in welcher Config-Datei?

Link to comment
Share on other sites

# 12_froxlor_normal_vhost_domain.de.conf
# Created 09.08.2016 14:45
# Do NOT manually edit this file, all changes will be deleted after the next domain change at the panel.

# Domain ID: 123 - CustomerID: 78 - CustomerLogin: kundenname
<VirtualHost 1.3.3.4:80>
  ServerName domain.de
  ServerAlias *.domain.de
  ServerAdmin abc@def.com
  DocumentRoot "/var/kunden/webs/kundenname/domain.de/"
  Alias /webalizer "/var/kunden/webs/kundenname/webalizer"
  ErrorLog "/var/kunden/logs/kundenname-error.log"
  CustomLog "/var/kunden/logs/kundenname-access.log" combined
php_admin_value open_basedir /var/kunden/webs/kundenname/domain.de
</VirtualHost>
 

Die Direktive open_basedir kommt von mir. Ansonsten würde dazu nichts drin stehen.

Link to comment
Share on other sites

PHP-Einstellungen

  OpenBasedir: Ja

Habe etwas herausgefunden. Es ist aktiv, allerdings anders als gewünscht.

 

Habe noch einmal in die PHPinfo bei einer Kundendomain geschaut. Da stehen folgende Module:

Loaded Modules core mod_so mod_watchdog http_core mod_log_config mod_logio mod_version mod_unixd mod_access_compat mod_alias mod_auth_basic mod_authn_core mod_authn_file mod_authz_core mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_deflate mod_dir mod_env mod_filter mod_mime prefork mod_negotiation mod_php5 mod_reqtimeout mod_rewrite mod_setenvif mod_status

 

Wenn ich unter Webserver-Einstellungen den Eintrag php_admin_value open_basedir /var/kunden/webs/{CUSTOMER}/{DOMAIN} setze, dann enthält die Kunden-PHPinfo diesen Eintrag:

open_basedir -> /var/kunden/webs/kundenname/domain.de

Wenn ich den Eintrag in den Webserver-Einstellungen weglasse, dann ist Folgendes in der PHPinfo zu sehen:

open_basedir -> /var/kunden/webs/kundenname:/tmp

 

Bei lezterem wird das /tmp-Verzeichnis korrekt hinzugefügt, weil es ja die orginial Froxlor-Einstellungen sind. Wenn der obige Haken gesetzt ist, wird dann eigentlich OpenBasedir für jede Domäne aktiviert? Bei mir scheint es ja nicht zu funktionieren, weil er dann open_basedir auf das Kundenverzeichnis setzt.

Link to comment
Share on other sites

http://redmine.froxlor.org/projects/froxlor/wiki/FCGID_-_Handbuch bewirkt nicht ganz das, was ich wollte. Damit wird jetzt zwar jede Seite mit dem Kundenbenutzer ausgeführt, allerdings nicht mit einem Benutzer je Webseite. Aber es sind zumindest unterschiedliche Prozesse laut ps faux. Ich frage mich nun, ob das wichtig ist?

 

Die andere gravierendere Sache: Ich habe nun die Funktionsweise von open_basedir herausgefunden.

Ich kann die open_basedir-Variable nun nicht mehr über die vhost-Einträge setzen und Froxlor setzt standardmäßig Folgendes:

open_basedir -> /var/kunden/webs/kundenname/:/var/customers/tmp/kundenname/:/usr/share/php/:/usr/share/php5/:/tmp/

Sobald ich den Haken open_basedir in einer Domäne wegmache, wird das obige zu open_basedir -> no value

Somit bewirkt der Haken nur, ob open_basedir generell eingeschaltet ist.

Ich würde aber gerne open_basedir je Domäne einzeln setzen. Kann ich das eventuell über "PHP-Konfiguration für neue Domains" und dort eine nue PHP-Konfiguration erstellen? Wo mache ich das? Wie erstelle ich das mit Platzhaltern für den Domänennamen? Kann das Froxlor?

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...