Hardening Apache HTTPd und PHP
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
- Probleme mit Suhosin und Memory: PHP Suhosin Speicherprobleme
- Wie man Konfigurationseinstellungen ändert: http://php.net/manual/de/configuration.changes.php
- Wo Konfigurationseinstellungen gesetzt werden können: http://www.php.net/manual/de/configuration.changes.modes.php
- Liste der php.ini-Direktiven: http://www.php.net/manual/de/ini.list.php
- Debian Hardening Guide: http://wiki.debian.org/Apache/Hardening