PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sicherheitsfrage public_html und php



Lotussteve
23.04.03, 01:25
Hallo!

Zu folgender Frage fand ich auch nach Durchschauen der Apachedoku keine eindeutige Antwort (da dort auf SSI und CGI, nicht aber auf PHP eingegangen wird):

Ich möchte meinen User die public_html, sprich SERVERNAME/¨~USERNAME bieten, leider ist es dann möglich daß die User mittels einer index.php und z.B. system ( ) Aufrufen mit den Rechten von Apache Sachen auslesen (wie z.b. das Passwort des MySQL-Users eines Forums),....oder auch Rechte verändert....etc.....

Wie unterbinde ich das am besten, ohne die Sinnhaftigkeit von mod_userdir zu nehmen? IncludesNoExec ist schon gesetzt im <DIRECTORY>.

Wie löst ihr das?


Besten Dank im voraus für eine Antwort,

Ciao,

Steve

linosch
23.04.03, 11:16
Hallo,

schau mal in die php.ini. Dort findest Du den punkt safe_mode! Dieses solltest Du aktivieren und mit den Optionen im config-file einwenig tunen. Sind recht gut beschrieben.

Gruss

Lino

Lotussteve
23.04.03, 14:16
Original geschrieben von linosch
schau mal in die php.ini. Dort findest Du den punkt safe_mode! Dieses solltest Du aktivieren und mit den Optionen im config-file einwenig tunen. Sind recht gut beschrieben.


Hallo!

Danke für den Hinweis, in die Richtung hab ich mich dann, ca 0,5 h nach meinem obigen Posting, bewegt und einmal einen open_basedir im <DIRECTORY> von /home/*/public_html gesetzt. Damit werden solche "schmutzigen" Sachen unterbunden, die Frage ist welche weiteren noch.
Da ich PHP nicht ausreichend kann warte ich mal auf einen Kollegen der testen kann ob "sinnvolle" Sachen noch funktionieren, sprich solche die sich auf dieses Verzeichnis beschränken :) .


Danke,

Ciao,

Steve

Dr. Doo
23.04.03, 14:43
Hallo,

Also ich habe bei mir noch den 'safe_mode_gid' auf 'On' gesetzt.

Dann die Rechte im /home/* auf

rwx---rwx username users gesetzt. so kommt der apache in die verzeichnisse, aber kein Benutzer aus der 'users' Gruppe.

Lotussteve
24.04.03, 10:03
Original geschrieben von Lotussteve
Da ich PHP nicht ausreichend kann warte ich mal auf einen Kollegen der testen kann ob "sinnvolle" Sachen noch funktionieren, sprich solche die sich auf dieses Verzeichnis beschränken :) .


Hallo!

Ok, leider ist es so, wenn ich den Wert so setze:

<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
php_admin_value open_basedir /home/*/public_html
......
</Directory>

dann geht überhaupt kein PHP mehr dort, auch kein "echo test" oder ähnliche einfache Sachen.

Stelle ich es auf:

php_admin_value open_basedir .

wie mir dieser Satz: " Der Wert . gibt an, dass das Verzeichnis, in dem das Skript abgespeichert ist, als Basis-Verzeichnis genutzt wird. " von hier:

http://php3.de/manual/de/configuration.php

suggeriert dann gehen wieder alle Sachen, also eben auch die unerwünschten Skripte....?!


Wie setze ich bitte open_basedir so, daß die User in public_html eingeschlossen sind, der Rest vom System aber nicht beeinträchtigt wird? Safe_mode muss Off bleiben wegen einiger Applikationen....


Ciao,

Steve

Lotussteve
04.05.03, 23:43
Original geschrieben von Dr. Doo
1.) Also ich habe bei mir noch den 'safe_mode_gid' auf 'On' gesetzt.

2.) Dann die Rechte im /home/* auf

rwx---rwx username users gesetzt. so kommt der apache in die verzeichnisse, aber kein Benutzer aus der 'users' Gruppe.

Hallo!

ad 1.) Das kann ich nicht global setzen wegen einiger unserer Apps....


ad 2.) Du missverstehst das Problem, der User liest dank der index.php mit dem system("ls -l /var/www/") Aufruf alles mit den Rechten des Apache aus, das bringt also nix......

Vielleicht weitere Ideen, open_basedir in einem Vhosts wird leider, zumindest bei dem PHP von Debian Woody, nicht gesetzt......


Ciao,

Steve

Lotussteve
06.05.03, 09:00
Hallo!

Lösung:

safe_mode auf on in der php.ini und dann mittels Alias/Directory für die Apps deaktivieren die nicht damit können.




Ciao,

Steve