apache vhosts und php absichern

heyho

ihc möcht für nen kumpel bissl space auf einem vhost unter apache bereitstellen.
aber wie kann ich den am effizientesten absichern.
also ich bruach jetzt kein hochsicherheitstrackt für den erstellen, aber ich möchte den in php zb die open_basedir setzen und sowas wie exec() und co unterbinden. ist nur die frage wie das mit möglichst wenig wiederstand geht.
kann ich nicht für den vhost extra phpflags setzen, ohne das ich ne seperate ini für den benutzer anlege?
 
Gegenfrage: Wie ist denn PHP in deinem Apache eingebunden?
mod_php? cgi? fastcgi?
(übrigens - hier mal ein schöner Vergleich zwischen den Varianten: http://wiki.rootforum.de/scripting/php/mod_php_vs_php-cgi)

ich z.B. mach das über fastcgi und hab da für jede Domain eine eigene php.ini und wenn ich wollte könnte ich sogar für jede Domain 'ne andere PHP-Version nehmen...

Wenn du bei deiner Konfiguration die Möglichkeit hast, 'ne eigene ini zu nehmen, dann mach das - ist am sichersten. mittels disable_functions kannst du in der php.ini ja einfach alles sperren, was er nicht ausführen dürfen soll und mit von dir schon genannter open_basedir-Restriction stellst du sicher, dass er nirgendwo hin kommt, wo er nicht hin kommen darf.
 
ich hab das als apache modul eingebunden, da ja sonst ich nur den server benutze.
ich weis gar nicht ob es möglich ist , nen anderem host ne andere php.ini unterzuschieben.
das war nur eine vermutung. angenommen es geht nicht, wie kann ich dann die disable_function nutzen und ihm paar sachen verbieten ohne mich selbst einzuschränken?

kennst du vielleicht generell paar gute anleitungen wie man php mittels fastcgi bomben sicher für jeden vhost bekommt?
rein informativ wäre das wohl mal gut zu lesen, aber für mich fast etwas overkill ;)
 
Du kannst in den VirtualHost-Einstellungen einfach die Werte für PHP setzen. Das geht einmal über php_admin_flag oder über PHPINIDir, womit du eine extra php.ini festlegen kannst.
 
Wenn du nicht weisst, wie gut seine Programmierkenntnisse sind, kannst bzw. solltest du auch die TRACE- und TRACK-HTTP-Methoden im VHost deaktivieren:

Code:
   RewriteEngine on
   RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
   RewriteRule .* - [F]
 
Für die Open-BaseDir-Anweisung brauchst du wahrscheinlich php_admin_value, statt php_admin_flag.

So könnte dann der vHost-Block aussehen:
<VirtualHost 111.111.111.111:80>
ServerAdmin webmaster@foo.bar
ServerName www.foo.bar
ServerAlias foo.bar www.foo.bar

DocumentRoot /var/www/

<Directory "/var/www">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

php_admin_value open_basedir /var/www/

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined

# Disable TRACE-/TRACK-Method
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]

</VirtualHost>
 
wenn ich in der vhost config die

php_admin_value disable_functions system,exec,passthru,popen,escapeshellcmd

setze passiert aber irgendwie gar nichts.
ich hab gelesen, dass das nur in der php.ini geht :|

kann mir mal bitte jemand erklären, warum grade so eine wichtige sache nicht nochmal gesetzt werden kann?
 
Zurück
Oben