Ich beschäftige mich gerade ein wenig damit meinen Webserver sicherer zu machen in Bezug auf PHP.
Mir wurde hier das leicht zu installierende phpsecinfo empfohlen.
Nun habe ich fast alles "grün", und hänge bei zwei Einstellungen:
force_redirect ist Rot:
Code: Select all
Warning
force_redirect is disabled. In most cases, this is a serious security vulnerability. Unless you are absolutely sure this is not needed, enable this setting
Current Value: 0
Recommended Value: 1
Dabei ist es eingeschaltet, restart durchgeführt.
Code: Select all
$ rgrep force_redirect /etc/php5
/etc/php5/apache2/php.ini:; cgi.force_redirect configuration below
/etc/php5/apache2/php.ini:; cgi.force_redirect is necessary to provide security running PHP as a CGI under
/etc/php5/apache2/php.ini:cgi.force_redirect = 1
/etc/php5/apache2/php.ini:force_redirect = 1
/etc/php5/apache2/php.ini:; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
/etc/php5/apache2/php.ini.ucf-dist:; cgi.force_redirect configuration below
/etc/php5/apache2/php.ini.ucf-dist:; cgi.force_redirect is necessary to provide security running PHP as a CGI under
/etc/php5/apache2/php.ini.ucf-dist:; cgi.force_redirect = 1
/etc/php5/apache2/php.ini.ucf-dist:; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
/etc/php5/apache2/php.ini.ucf-old:; cgi.force_redirect configuration below
/etc/php5/apache2/php.ini.ucf-old:; cgi.force_redirect is necessary to provide security running PHP as a CGI under
/etc/php5/apache2/php.ini.ucf-old:; cgi.force_redirect = 1
/etc/php5/apache2/php.ini.ucf-old:; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
/etc/php5/cli/php.ini:; cgi.force_redirect configuration below
/etc/php5/cli/php.ini:; cgi.force_redirect is necessary to provide security running PHP as a CGI under
/etc/php5/cli/php.ini:; cgi.force_redirect = 1
/etc/php5/cli/php.ini:; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
/etc/php5/cgi/php.ini:; cgi.force_redirect configuration below
/etc/php5/cgi/php.ini:; cgi.force_redirect is necessary to provide security running PHP as a CGI under
/etc/php5/cgi/php.ini: cgi.force_redirect = 1
/etc/php5/cgi/php.ini:force_redirect = 1
/etc/php5/cgi/php.ini:; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape
$ rgrep force_redirect /var/www/test/
/var/www/test/conf/php.ini:; Enable cgi.force_redirect for security reasons
/var/www/test/conf/php.ini:cgi.force_redirect = 1
/var/www/test/conf/php.ini:; http://phpsec.org/projects/phpsecinfo/tests/force_redirect.html
/var/www/test/conf/php.ini:; Enable cgi.force_redirect for security reasons
/var/www/test/conf/php.ini:cgi.force_redirect = 1
/var/www/test/conf/php.ini:force_redirect = 1
Code: Select all
Curl::file_support
Not Run
CURL support is not enabled in your PHP install
Dabei ist curl installiert:
Code: Select all
$ apt-cache policy php5-curl
php5-curl:
Installed: 5.2.3-1ubuntu6
Candidate: 5.2.3-1ubuntu6
Version table:
*** 5.2.3-1ubuntu6 0
500 http://de.archive.ubuntu.com gutsy/main Packages
500 http://archive.ubuntu.com gutsy/main Packages
100 /var/lib/dpkg/status
Code: Select all
$ rgrep curl /etc/php5
/etc/php5/conf.d/curl.ini:extension=curl.so
/etc/php5/cli/conf.d/curl.ini:extension=curl.so
/etc/php5/cgi/conf.d/curl.ini:extension=curl.so
$ rgrep curl /etc/apache2
$ rgrep curl /var/www/test/
Nun wird curl aber grau unterlegt, als nicht Verfügbar ermittelt.Older versions of the curl library shipped with PHP allowed it to bypass the restrictions put in place by open_basedir or safe_mode using a file:// URL.
Könnte das wiederum an open_basedir liegen?
Wenn Ich open_basedir in der test php.ini auskommentiere, so werden gleich mehrere weitere funktionen gelb unterlegt:
upload_tmp_dir und save_path, die vorher (mit open_basedir angegeben) grün unterlegt waren. curl ist hingegen immer noch grau unterlegt, als nicht installiert. Wie lässt sich das erklären?
EDIT: phpinfo() gibt das hier aus:
Code: Select all
cgi-fcgi
Directive Local Value Master Value
cgi.check_shebang_line 1 1
cgi.fix_pathinfo 1 1
cgi.nph 0 0
cgi.rfc2616_headers 0 0
fastcgi.logging 1 1
Außerdem das hier:
Code: Select all
Configuration File (php.ini) Path /etc/php5/cgi
Loaded Configuration File /var/www/test/conf/php.ini
Scan this dir for additional .ini files /etc/php5/cgi/conf.d
additional .ini files parsed /etc/php5/cgi/conf.d/curl.ini, /etc/php5/cgi/conf.d/gd.ini, /etc/php5/cgi/conf.d/mysql.ini, /etc/php5/cgi/conf.d/mysqli.ini, /etc/php5/cgi/conf.d/pdo.ini, /etc/php5/cgi/conf.d/pdo_mysql.ini
Werden diese Configurationen nicht mehr eingelesen, oder überschrieben, da /var/www/test/conf/php.ini lokal verwendet wird? Ich finde das merkwürdig.
EDIT:
Es lag an folgender Einstellung:
extension_dir = /var/www/test/
Die extensions befinden sich aber hier: /usr/lib/php5/20060613/
Ich habe das nun entsprechend geändert, und symlinks der extensions erstellt:
extension_dir = /var/www/test/conf/usr/lib/php5/20060613/
Nun ist alles soweit ok.