Apache Rootpfad für virtuelle Server ändern?
Hallo, ich würde gerne dem Apache Server für virtuelle Server jeweils andere RootPfade mitgeben und so */htdocs/kunde1/* ----------------- */htdocs/kunde2/* trennen. Leider erlaubt mir Apache nicht, in der virual Server Sektion einfach ein ServerRoot festzulegen. Was habe ich übersehen? greetinXs, Telefon: 07275/618351 Michael Hilscher Handy: 0173/3071899 Telefax: 07275/618352 -- Would Mozart have been more productive if he had scribes to help him, a secretary and a CEO to lead his way? -- Linus Torvalds
On Samstag, 20. April 2002 15:47, Michael Hilscher wrote:
Hallo,
ich würde gerne dem Apache Server für virtuelle Server jeweils andere RootPfade mitgeben und so
*/htdocs/kunde1/* ----------------- */htdocs/kunde2/*
trennen. Leider erlaubt mir Apache nicht, in der virual Server Sektion einfach ein ServerRoot festzulegen. Was habe ich übersehen?
wie jetz? inerhalb des VirtualServer einen RootPfad. reicht Dir denn nicht der DocumentPfad ? gruss, mario
Hallo Michael, Am Samstag, 20. April 2002 15:47 schrieb Michael Hilscher:
ich würde gerne dem Apache Server für virtuelle Server jeweils andere RootPfade mitgeben und so
Was spricht gegen: <VirtualHost www.kunde_1.local> ServerAdmin unbekannt@locahost.local DocumentRoot /www/kunde1 ServerName www.locahost.local </VirtualHost> <VirtualHost www.kunde_X.local> [...] DocumentRoot /XXX/kund_X </VirtualHost> ByE Andre
On Sat, Apr 20, 2002 at 04:06:39PM +0200, Andre Heine wrote:
Was spricht gegen:
<VirtualHost www.kunde_1.local> ServerAdmin unbekannt@locahost.local DocumentRoot /www/kunde1 ServerName www.locahost.local </VirtualHost>
<VirtualHost www.kunde_X.local> [...] DocumentRoot /XXX/kund_X </VirtualHost> Denkbares Szenario: kunde_X lädt ein php Script hoch, über das er eine Datei von kunde_1 in sein Verzeichnis kopiert. In dieser Datei steht ein sql Passwort für die Datenbank von kunde_1.
Da die Datei vom Webserver lesbar sein muss, funktioniert das, wenn kunde_x die Verzeichnisstruktur kennt. Ein versteckspiel ist mir zu unsicher und macht die Verwaltung schwieriger (komplettes durcheinander...). DocumentRoot schützt - wie ein Test mir bewiesen hat - leider nicht vor dieser Möglichkeit :-( greetinXs, Telefon: 07275/618351 Michael Hilscher Handy: 0173/3071899 Telefax: 07275/618352 -- Would Mozart have been more productive if he had scribes to help him, a secretary and a CEO to lead his way? -- Linus Torvalds
Hi Michael, Am Samstag, 20. April 2002 16:31 schrieb Michael Hilscher:
On Sat, Apr 20, 2002 at 04:06:39PM +0200, Andre Heine wrote:
<VirtualHost www.kunde_X.local> [...] DocumentRoot /XXX/kund_X </VirtualHost>
Denkbares Szenario: kunde_X lädt ein php Script hoch, über das er eine Datei von kunde_1 in sein Verzeichnis kopiert. In dieser Datei steht ein sql Passwort für die Datenbank von kunde_1.
Deswegen sollte ja auch der savemode on sein, oder sehe ich da etwas falsch. Bei mit ist das z.B. so, daß ich immer ein Verzeichnis über dem htdocs als "privaten Raum" nutzen kann. Dort kann ich Dateien ablegen, die nicht aus dem Internet erreichbar sind. Ich logge mich auf dem Server mit ftp ein, dieses Verzeichnis hat aber nichts mit dem htdocs zu tun. Ich kenne die spielchen, wie man an Dateien aus anderen DocRoots rankommt.
Da die Datei vom Webserver lesbar sein muss, funktioniert das, wenn kunde_x die Verzeichnisstruktur kennt. Ein versteckspiel ist mir zu unsicher und macht die Verwaltung schwieriger (komplettes durcheinander...). DocumentRoot schützt - wie ein Test mir bewiesen hat - leider nicht vor dieser Möglichkeit :-(
Man kann natürlich durch entsprechende Programmierung einiges sicherer machen. Für Paßwörter würde ich mal mit der Berkeley DB rumspielen(php oder perl), man kann die Datenbank Files zwar lesen, muß aber die innerer Struktur kennen. Das ist jedenfalls nicht ganz so einfach, an den Inhalt zukommen. Aber so ist das nun im Indernet :) Ich weiß, daß es nicht so einfach ist, einen Webserver sicher zu machen. Ciao Andre
Moin Moin die zweite, Am Samstag, 20. April 2002 16:31 schrieb Michael Hilscher:
On Sat, Apr 20, 2002 at 04:06:39PM +0200, Andre Heine wrote: Denkbares Szenario: kunde_X lädt ein php Script hoch, über das er eine Datei von kunde_1 in sein Verzeichnis kopiert. In dieser Datei steht ein sql Passwort für die Datenbank von kunde_1.
Mit fällt da gerade noch etwas ein. Wenn Du den suexec Mechanismus benutzt, werden alle Dateien mit den Rechten des Users ausgeführt, IMHO sollte eine Datei mit folgenden Rechten 0600 nur der Eigentümer darauf zugreifen dürfen! Jeder andere User (außer root natürlich ) bekommt ein Acces denied. Steht in dieser Datei ein Paßwort, darf nur der User bzw. ein Skript des Users darauf zugreifen. Könnte Dein Problem lösen... CIao PS: Wann kommt der Brief?
Am 20.04.2002 um 15:47 schrieb Michael Hilscher:
ich würde gerne dem Apache Server für virtuelle Server jeweils andere RootPfade mitgeben und so
*/htdocs/kunde1/* */htdocs/kunde2/*
trennen. Leider erlaubt mir Apache nicht, in der virual Server Sektion einfach ein ServerRoot festzulegen. Was habe ich übersehen?
Die Direktive ServerRoot bezeichnet das Basisverzeichnis, unterhalb dessen alle anderen entscheidenen Verzeichnisse des Apachen, wie z.B. conf/ oder log/, liegen. Normalerweise ist dies /usr/local/apache. Jeder Apache-Server hat nur einen ServerRoot. Allerdings verteilt SuSE die Unterverzeichnisse conf/, log/, etc. auf verschiedene Bereiche des Dateisystems. Daher kann es leicht zu Verwirrungen kommen. Der ServerRoot muss jedoch - wenn ich mich nicht irre - immer noch /usr/local/httpd sein. Die Direktive, die du suchst, heißt wahrscheinlich DocumentRoot und gibt den Stammpfad für jeden virtuellen Host an. MfG, Dennis -- Dennis Stosberg eMail: dennis@stosberg.net pgp key: http://stosberg.net/dennis.asc icq: 63537718
Hallo Michael, also da hast Du aber die Apache Doku nicht vollständig gelesen, denn http://httpd.apache.org/docs-2.0/mod/core.html#documentroot erklärt, daß der DocumentRoot auch innerhalb eines VirtualHosts gesetzt werden kann :-) Gruß Sebastian www.wolfgarten.com
On Sat, Apr 20, 2002 at 06:22:38PM +0100, Sebastian Wolfgarten wrote:
also da hast Du aber die Apache Doku nicht vollständig gelesen, denn http://httpd.apache.org/docs-2.0/mod/core.html#documentroot erklärt, daß der DocumentRoot auch innerhalb eines VirtualHosts gesetzt werden kann :-)
Lieber Sebastian, ich wünschte es wäre so einfach. Es genügt nicht das DocumentRoot umzusetzen, da die RootUmgebung selbst die alte bleibt und so das "gesamte" Apache Verzeichnis - auch unterhalb von DocumentRoot - PHP Scripten zur Verfügung steht. Ich habe nach dem Tipp zu suEXEC einen interessanten Artikel unter: http://www.koehntopp.de/kris/artikel/webtune/ gefunden: <Zitat> ...die Erzeugung eines neuen Prozesses und das Laden von mindestens zwei Programmen (suexec und den Scriptinterpreter) bedingt, werden CGI-Programme sehr viel langsamer ausgeführt als Modulprogramme. Zu den genannten Kosten kommen noch Aufwände für ein rundes Dutzend Systemaufrufe innerhalb von suexec hinzu, die aber gegenüber den fork()/exec()-Kosten verschwindend gering sein dürften. Man hat als ISP mit einem VirtualHost-Setup also die Wahl zwischen einem schnellen, unsicheren Setup und einer deutlich langsameren, aber sichereren Variante. Es existiert übrigens eine Variante des suexec-Programmes für den Apache, die wesentlich weniger restriktiv bei der Prüfung der User- und Gruppenrechte an der auszuführenden Datei und dem enthaltenden Verzeichnis ist, die dafür aber eine chroot()-Umgebung aufsetzt, in der dieses Programm ablaufen kann. Dadurch, daß das Programm in der chroot()-Umgebung eingesperrt ist, wird ein zusätzlicher Grad an Sicherheit erreicht. </Zitat> Meine Suche nach besagter apache Version mit chroot Umgebung unter www.apache.org brachte jedoch nix vernünftiges zutage. In meiner "verzweiflung" habe ich ne Mail an Meister koehntopp geschickt. Mal sehen, wenn ich was interessantes erfahre werde ich es Euch weitersagen :-) greetinXs, Telefon: 07275/618351 Michael Hilscher Handy: 0173/3071899 Telefax: 07275/618352 -- Would Mozart have been more productive if he had scribes to help him, a secretary and a CEO to lead his way? -- Linus Torvalds
Hallo, ich darf mal zusammenfassen: Infos zur chroot Umgebung für suEXEC unter Apache 1.3.x finden sich hier: http://stein.cshl.org/WWW/software/sbox/ Apache bringt in der Version 2 auch hinsichtlich der problematischen Ausführung aller PHP Scripte mit UID, GID des Webservers Erleichterung: a) Multi-Processing Module allowing for daemon processes serving requests to be assigned a variety of different userids http://httpd.apache.org/docs-2.0/mod/perchild.html aber: This MPM does not currently work on most platforms. Work is ongoing to make it functional. b) suEXEC als modul einbindbar http://httpd.apache.org/docs-2.0/mod/mod_suexec.html Somit stehe ich nun vor drei Möglichkeiten: - ich ignoriere die Sicherheitslücke und hoffe dass niemand die anderen Kunden ausspionieren möchte (und weiss wie das geht) - ich erweitere den Apache um suEXEC Ausführung von PHP Scripten (und nehme in Kauf, dass die Performance spürbar leidet und allen php Scripten ein #! ... vorangestellt wird) - ich setze auf Apache 2.0.35 (liegt immerhin als GA vor und wird von der Apache Group nun vor 1.3.x zum Download empfohlen. Nachteil: Trotz des GA zweifel ich an der Stabilität) Ich denke ich werde dem zweiten Apachen mal eine Chance geben und versuchen ihn mit MPM zu kompilieren :-) greetinXs, Telefon: 07275/618351 Michael Hilscher Handy: 0173/3071899 Telefax: 07275/618352 -- Would Mozart have been more productive if he had scribes to help him, a secretary and a CEO to lead his way? -- Linus Torvalds
On Sun, Apr 21, 2002 at 12:07:34PM +0200, Michael Hilscher wrote: ...ne ganze menge :-( Allerdings habe ich etwas übersehen: virtuellen Hosts kann man durch php_admin_value open_basedir /usr/local/httpd/htdocs/kundenr die Ausführung von PHP Scripten auf ebendiesen Pfad beschränken. Der entscheidende Hinweis findet sich im PHPmanual zum safe-mode. Der Safe_mode selbst muss dazu indes NICHT aktiviert werden. Nun ja, man lernt halt nie aus, den Apache 2.0 brauch ich (deswegen) also nicht mehr zu kompilieren :-) greetinXs, Telefon: 07275/618351 Michael Hilscher Handy: 0173/3071899 Telefax: 07275/618352 -- Would Mozart have been more productive if he had scribes to help him, a secretary and a CEO to lead his way? -- Linus Torvalds
participants (5)
-
Andre Heine
-
Dennis Stosberg
-
Mario Duve
-
Michael Hilscher
-
Sebastian Wolfgarten