Hardening Apache HTTPd und PHP

Aus Laub-Home Wiki

Vorwort

Dieses Hardening Guide wurde an folgendem System konfiguriert:

  • Debian Linux 5.0 Lenny
  • Apache 2.2.9
  • PHP 5.2.6
  • Optionale Software: Squirrelmail, Mediawiki, PHPMyadmin
  • Standard Pfad für Websites: /srv/httpd/
  • Wurde auch unter Red Hat Enterprise Linux 5.5 erfolgreich angewandt.

Hardening Apache HTTPd

User Login Recht entfernen:

--> damit man sich mit dem www-data User nicht am System anmelden kann.

passwd -l www-data
usermod -s /bin/false www-data

Datei Rechte

Dateien sollten für den Apache Benutzer (Debian: www-data, Red Hat: apache) nicht schreibbar sein. Am besten gehören Sie diesem User nicht einmal. Hier sind 2 Befehle mit denen man dies Überprüfen kann.
Der Erste sucht nach Dateien die dem User www-data gehören, der 2te sucht nach Dateien die für den User www-data schreibbar sind:

find /srv/httpd -user www-data
find /srv/httpd ! -type l \( -perm /o=w -o -perm /g=w -group www-data \)

Der folgende Befehl spürt Backup und versteckte Dateien auf:

find /srv/httpd -name '.?*' -not -name .ht* -or -name '*~' -or -name '*.bak*' -or -name '*.old*'

Suexec Modul deinstallieren

Wird das Modul nicht benötigt kann dies deinstalliert werden:

aptitude remove apache2-suexec apache2-suexec-custom --purge

Module deaktivieren:

--> damit der Angreifer weniger Informationen über das System bekommt

a2dismod autoindex -- Nur wenn Index nichtbenötigt wird
a2dismod info
a2dismod status

--> weitere Module die deaktiviert werden können, wenn sie nicht benötigt werden:

a2dismod userdir
a2dismod suexec
a2dismod cgi/cgid
a2dismod include

Leeching für /srv/httpd/ deaktivieren:

--> damit nicht die gesamte Website heruntergeladen werden kann. Ist leider kein komplett Schutz, da die Client Signatur bei den meisten Downloader Programmen geändert werden kann.

vi /etc/apache2/conf.d/noleeching.conf
<Directory "/srv/httpd">
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^asterias [OR]
RewriteCond %{HTTP_USER_AGENT} ^BackDoorBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^BackWeb [OR]
RewriteCond %{HTTP_USER_AGENT} ^Bandit [OR]
RewriteCond %{HTTP_USER_AGENT} ^BatchFTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
RewriteCond %{HTTP_USER_AGENT} ^BlowFish [OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR]
RewriteCond %{HTTP_USER_AGENT} ^BotALot [OR]
RewriteCond %{HTTP_USER_AGENT} ^Buddy [OR]
RewriteCond %{HTTP_USER_AGENT} ^BuiltBotTough [OR]
RewriteCond %{HTTP_USER_AGENT} ^CheeseBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^CherryPicker [OR]
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]
RewriteCond %{HTTP_USER_AGENT} ^Collector [OR]
RewriteCond %{HTTP_USER_AGENT} ^contype [OR]
RewriteCond %{HTTP_USER_AGENT} ^Copier [OR]
RewriteCond %{HTTP_USER_AGENT} ^CopyRightCheck [OR]
RewriteCond %{HTTP_USER_AGENT} ^cosmos [OR]
RewriteCond %{HTTP_USER_AGENT} ^Crescent [OR]
RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]
RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR]
RewriteCond %{HTTP_USER_AGENT} ^Download\Wonder [OR]
RewriteCond %{HTTP_USER_AGENT} ^Downloader [OR]
RewriteCond %{HTTP_USER_AGENT} ^Drip [OR]
RewriteCond %{HTTP_USER_AGENT} ^DTS\ Agent [OR]
RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]
RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]
RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR]
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Foobot [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetSmart [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]
RewriteCond %{HTTP_USER_AGENT} ^gotit [OR]
RewriteCond %{HTTP_USER_AGENT} ^GornKer [OR]
RewriteCond %{HTTP_USER_AGENT} ^Grabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]
RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]
RewriteCond %{HTTP_USER_AGENT} ^HMView [OR]
RewriteCond %{HTTP_USER_AGENT} ^humanlinks [OR]
RewriteCond %{HTTP_USER_AGENT} ^ia_archiver [OR]
RewriteCond %{HTTP_USER_AGENT} ^ichiro [OR]
RewriteCond %{HTTP_USER_AGENT} ^iCCrawler [OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} ^Indy\ Library [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^InsurancoBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^InfoNaviRobot [OR]
RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]
RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR]
RewriteCond %{HTTP_USER_AGENT} ^Iria [OR]
RewriteCond %{HTTP_USER_AGENT} ^JennyBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]
RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Kenjin\.Spider [OR]
RewriteCond %{HTTP_USER_AGENT} ^lftp [OR]
RewriteCond %{HTTP_USER_AGENT} ^LinkextractorPro [OR]
RewriteCond %{HTTP_USER_AGENT} ^LinkScan\/8\.1a\.Unix [OR]
RewriteCond %{HTTP_USER_AGENT} ^LinkWalker [OR]
RewriteCond %{HTTP_USER_AGENT} ^likse [OR]
RewriteCond %{HTTP_USER_AGENT} ^Magnet [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mag-Net [OR]
RewriteCond %{HTTP_USER_AGENT} ^mail [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR]
RewriteCond %{HTTP_USER_AGENT} ^Memo [OR]
RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mirror [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR]
RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]
RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^oegp [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR]
RewriteCond %{HTTP_USER_AGENT} ^Openfind [OR]
RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR]
RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]
RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]
RewriteCond %{HTTP_USER_AGENT} ^Pockey [OR]
RewriteCond %{HTTP_USER_AGENT} ^ProWebWalker [OR]
RewriteCond %{HTTP_USER_AGENT} ^Pump [OR]
RewriteCond %{HTTP_USER_AGENT} ^QueryN.Metasearch [OR]
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^Reaper [OR]
RewriteCond %{HTTP_USER_AGENT} ^Recorder [OR]
RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^RMA [OR]
RewriteCond %{HTTP_USER_AGENT} ^Siphon [OR]
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]
RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^Snake [OR]
RewriteCond %{HTTP_USER_AGENT} ^SpaceBison [OR]
RewriteCond %{HTTP_USER_AGENT} ^Stripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Wget [OR]
RewriteCond %{HTTP_USER_AGENT} ^Whacker [OR]
RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]
RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]
RewriteCond %{HTTP_USER_AGENT} ^ZipppBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^DIIbot [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailCollector [OR]
RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]
RewriteCond %{HTTP_USER_AGENT} HTTrack* [OR]
RewriteCond %{HTTP_USER_AGENT} ^InternetSeer.com [OR]
RewriteCond %{HTTP_USER_AGENT} ^larbin [OR]
RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mozilla.*NEWT [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mozilla.*Indy [OR]
RewriteCond %{HTTP_USER_AGENT} ^MSFrontPage [OR]
RewriteCond %{HTTP_USER_AGENT} ^NICErsPRO [OR]
RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]
RewriteCond %{HTTP_USER_AGENT} ^Ping [OR]
RewriteCond %{HTTP_USER_AGENT} ^Microsoft.URL [OR]
RewriteCond %{HTTP_USER_AGENT} ^psbot [OR]
RewriteCond %{HTTP_USER_AGENT} ^webcollage [OR]
RewriteCond %{HTTP_USER_AGENT} ^RufusBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^sitecheck.internetseer.com [OR]
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]
RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR]
RewriteCond %{HTTP_USER_AGENT} ^[Ww]eb[Bb]andit [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebEMailExtrac.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus
RewriteRule ^.* - [F]
</Directory>

und nun noch mod_rewrite aktivieren:

a2enmod rewrite

Bilder Klau verhindern

Will man nicht das andere Webseiten auf die eigenen Bilder verlinken und so Traffic generieren, kann man die mit folgenden Zeilen in der vhost Config unterbinden:

# DISABLE HOTLINKING OF IMAGES WITH FORBIDDEN OR CUSTOM IMAGE OPTION
<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{HTTP_REFERER} !^$
 RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.de/.*$ [NC]
 # FORBIDDEN
 RewriteRule \.(gif|jpg|png)$ - [F]
 # CUSTOM IMAGE OPTION
 #RewriteRule \.(gif|jpg|png)$ http://www.mydomain.de/stophotlinking.jpg [R,L]
</IfModule>

Diverse Optionen deaktivieren:

  • -Indexes: Zeigt Server Verzeichnisstruktur an, wenn keine Index Datei gefunden wird.
  • -FollowSymlinks: Erlaubt den Zugriff auf Links.
  • -Includes: Erlaubt den Zugriff auf .shtml Dateien.
  • -MultiViews: Ermöglicht Dateien ohne Dateiendung aufzurufen.
vi /etc/apache2/sites-available/default
Options -Indexes -FollowSymLinks -Includes -MultiViews
vi /etc/apache2/mods-enabled/alias.conf

hier folgende Zeile

Options Indexes MultiViews

in diese Ändern:

Options -Indexes -MultiViews

Debians Security Konfigurationsdatei richtig editieren

vi /etc/apache2/conf.d/security
<Directory />
        AllowOverride None
        Order Deny,Allow
        Deny from all
</Directory>
ServerTokens Prod
ServerSignature Off
TraceEnable Off
MaxRequestsPerChild 10000

Deaktivieren von PUT und DELETE Requests

Will man die PUT und oder DELETE Requests verbieten, was in den meisten Fällen empfehlenswert ist, kann man das durch folgende Zeilen erreichen:

<Limit PUT DELETE>
   Deny from All
</Limit>

Besser ist allerdings einfach nur POST und GET zu erlauben

<LimitExcept POST GET>
   Deny from All
</LimitExcept> 

Die Konfigurationsschnibbsel können nun egal wo verwendet werden (Directory, Vhosts oder Global). Am besten packt man das Ganze in eine <Location> und macht dies für den komplette vhost verfügbar:

<VirtualHost *:80>
......
        <Location />
                <LimitExcept POST GET>
                        Deny from All
                </LimitExcept>
        </Location>
......
</VirtualHost>

Mod QOS - Schützt gegen DOS Attacken

Anleitung ist für Debian

Vorbereitungen:

aptitude install apache2-threaded-dev gcc

Hier herunterladen: http://sourceforge.net/projects/mod-qos/

Kompilieren und Installieren

cd /usr/src/
wget (LINK von SOURCEFORGE)  
tar -xzvf  mod_qos*.tar.gz
cd mod_qos*/apache2
apxs2 -i -c mod_qos.c

Ubuntu 11.04

Hier ist das Paket in der Distrubution enthalten und kann einfach per aptitude installiert werden.

aptitude install libapache2-mod-qos

Konfigurieren:

folgende Dateien erstellen:

/etc/apache2/mods-available/qos.load
/etc/apache2/mods-available/qos.conf

/etc/apache2/mods-available/qos.load:

LoadModule qos_module /usr/lib/apache2/modules/mod_qos.so

/etc/apache2/mods-available/qos.conf:

## QoS Settings
<IfModule mod_qos.c>
    # handles connections from up to 100000 different IPs
    QS_ClientEntries 100000
    # will allow only 50 connections per IP
    QS_SrvMaxConnPerIP 50
    # maximum number of active TCP connections is limited to 256
    MaxClients              256 
    # disables keep-alive when 70% of the TCP connections are occupied:
    QS_SrvMaxConnClose      180
    # minimum request/response speed (deny slow clients blocking the server, ie. slowloris keeping connections open without requesting anything):
    QS_SrvMinDataRate       150 1200
    # and limit request header and body (carefull, that limits uploads and post requests too):
    # LimitRequestFields      30
    # QS_LimitRequestBody     102400
</IfModule>

Modul Aktivieren:

a2enmod qos
/etc/init.d/apache2 restart

PHP Hardening

Suhosin unter Debian installieren

aptitude install php5-suhosin

Test der Installation mit phpinfo.php

vi /srv/httpd/phpinfo.php
<?php phpinfo(); ?>

Bei Aufruf der Datei via Webbrowser sollte folgendes ausgeben werden:
http://your.webserver.com/phpinfo.php

Suhosin unter Red Hat / CentOS installieren

Via EPEL Repository installieren

Zuerst muss das EPEL Repository eingebunden werden. Mehr Infos dazu hier:

cd /usr/src/
wget http://ftp.uni-bayreuth.de/linux/fedora-epel/6/i386/epel-release-6-7.noarch.rpm
rpm -Uvh epel-release-6-7.noarch.rpm

Dann suhosin installieren:

yum install php-suhosin
/etc/init.d/httpd restart

Selbst kompilieren

Zuerst muss die neuste Suhosin Source geladen und unter /opt abgelegt werden: http://www.hardened-php.net/suhosin/download.html ACHTUNG!!! Die Version für Red Hat 5.5 ist die unten geladene. Neuere Versionen scheinen nicht zu gehen!

cd /opt
wget http://download.suhosin.org/suhosin-0.9.29.tgz

Nun sollte man sichergehen das das php-devel Paket installiert ist:

yum install php-devel gcc

Suhosin kompilieren:

tar -xzvf suhosin-0.9.29.tgz
cd /opt/suhosin-0.9.29
phpize
./configure
make
make install

Suhosin in der php.ini aktivieren

echo 'extension=suhosin.so' > /etc/php.d/suhosin.ini

Neustart des Webservers:

apachectl restart

Beim Aufruf der phpinfo.php:

Hardening Funktionen in der PHP.ini

PHP < 5.3

/etc/php5/apache2/php.ini

Wenn "safe_mode = on" ist, bei HTTPDigestAuth die realm Änderung bzgl. uid beim hashen beachten! Info:

safe_mode = On
safe_mode_gid = Off
safe_mode_include_dir =
safe_mode_exec_dir = /srv/php-exec/
open_basedir = /srv/httpd/
expose_php = Off
memory_limit = 16M
display_errors = Off
display_startup_errors = Off
log_errors = On
html_errors = Off
error_log = /var/log/apache2/php_errors.log
register_globals = Off
magic_quotes_gpc = Off
allow_url_fopen = Off
allow_url_include = Off

PHP >= 5.3

Da default "safe_mode = on" ist, bei HTTPDigestAuth die realm Änderung bzgl. uid beim hashen beachten! Info:

user_ini.filename =
short_open_tag = Off
safe_mode = On
safe_mode_gid = Off ;Achtung die meisten Entwickler nutzen die Abkuerzung
safe_mode_include_dir =
safe_mode_exec_dir = /srv/php-exec/
open_basedir = /srv/httpd/vhosts/:/srv/php-tmp/
disable_functions =
expose_php = Off
memory_limit = 16M
display_errors = Off
display_startup_errors = Off
log_errors = On
html_errors = Off
error_log = /var/log/apache2/php_errors.log
file_uploads = Off
upload_tmp_dir = /srv/php-tmp/
register_globals = Off
magic_quotes_gpc = Off
allow_url_fopen = Off
allow_url_include = Off
post_max_size = 2M

disable_functions = fpassthru,crack_check,crack_closedict,crack_getlastmessage,crack_opendict, psockopen,php_ini_scanned_files,shell_exec,chown,hell-exec,dl,ctrl_dir,phpini,tmp,safe_mode,systemroot,server_software, get_current_user,HTTP_HOST,ini_restore,popen,pclose,exec,suExec,passthru,proc_open,proc_nice,proc_terminate, proc_get_status,proc_close,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid, posix_setsid,posix_setuid,escapeshellcmd,escapeshellarg,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid, posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid, posix_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,system,posix_getsid,posix_getuid,posix_isatty, posix_setegid,posix_seteuid,posix_setgid,posix_times,posix_ttyname,posix_uname,posix_access,posix_get_last_error,posix_mknod, posix_strerror,posix_initgroups,posix_setsidposix_setuid

Datei Upload und Execute

Wenn der Datei Upload benötigt wird, sollte folgendes eingerichtet werden:

open_basedir = /srv/php-tmp/
file_uploads = On
upload_tmp_dir = /srv/php-tmp/

Wie man in den php.ini Einstellungen sehen kann, werden 2 neue Ordner benötigt:

  • /srv/php-exec
  • /srv/php-tmp

Diese sollten so angelegt werden:

mkdir /srv/php-exec
mkdir /srv/php-tmp
chown  www-data.www-data /srv/php-tmp
drwxr-xr-x 2 root          root      4096 2009-08-14 11:59 php-exec
drwxr-xr-x 2 www-data      www-data  4096 2009-08-17 12:38 php-tmp

In den PHP-Exec Ordner können dann Links gelegt werden zu Ausführbaren Dateien, welche von einem PHP-Script benötigt werden. Nur Dateien die hierher verlinkt werden, können auch via php ausgeführt werden. z.B.:

lrwxrwxrwx 1 root root 19 2009-08-17 13:59 etherwake -> /usr/sbin/etherwake

Achtung:

Bei Mediawiki

Mediawiki und Safe Mode sind nicht zu empfehlen, da einige Funktionen, wie zum Beispiel der Dateiupload nicht mehr richtig funktionieren. Deshalb sollte er für den Wiki Vhost deaktiviert werden: !!!Achtung nicht mehr nötig bei PHP 5.3 und größer, da SafeMode nicht mehr existiert.

vi /etc/apache2/sites-available/wiki-vhost.conf
php_admin_value safe_mode off

Achtung!!! Dieser Parameter funktioniert nur auf einen ganzen Virtual Host nicht auf Location, Directory oder Files. Weitere Anpassungen der php.ini

open_basedir = /var/lib/mediawiki/:/usr/share/mediawiki/:/usr/share/mediawiki-extensions/:/etc/mediawiki/:/etc/mediawiki-extensions/:/etc/mime.types
memory_limit = 64M
file_uploads = On
upload_tmp_dir = /srv/php-tmp/
upload_max_filesize = 256M
max_file_uploads = 20

MediaWiki 1.15.1 Bug mit PHP Version 5.3

Unter Debian Squeeze kommt es zu folgender Error Meldung im Apache Logfile:

[Sat Jun 18 21:46:21 2011] [error] [client 192.168.x.x] PHP Warning:  Parameter 1 to Language::getMagic() expected to be a reference, value given in /usr/share/mediawiki/includes/StubObject.php on line 58, referer: http://wiki.laub-home.de/index.php/Hauptseite

Das ganze kann gefixt werden in dem man in der Datei /usr/share/mediawiki/languages/Language.php folgende Zeile ändert:

# Fill a MagicWord object with data from here
- function getMagic( &$mw ) {
+ function getMagic( $mw ) {

Bei Cacti

Wenn cacti verwendet wird muss das rrdtool in den php-exec Ordner verlinkt werden:

ln -s /usr/bin/rrdtool /srv/php-exec/rrdtool

und natürlich die Cacti Ordner in der Variable open_basedir in der php.ini eingetragen werden:

open_basedir = /usr/share/cacti/:/etc/cacti/:/usr/share/php/adodb/

Bei PHPMyadmin

Hierzu müssen die PHPmyadmin Ordner der Variable open_basedir in der php.ini hinzugefügt werden:

open_basedir = /var/lib/phpmyadmin/:/etc/phpmyadmin/:/usr/share/phpmyadmin/

Weiterführende Links