Apache2 + mod_security: Ständige 500er Errors

Apache, Lighttpd, nginx, Cherokee
inchez
Posts: 65
Joined: 2007-10-01 20:17

Apache2 + mod_security: Ständige 500er Errors

Post by inchez » 2009-06-26 00:36

Guten Abend,

ich habe einen Debian Lenny Server mit ispCP in Betrieb.

Ich habe in einigen PHP Scripts, u.U. Ctracker Xtra & Vbulletin ständig 500er Error, in den logs wird dazu nichts gemeldet, sieht so aus als ob alle problemlos durchgegangen wäre.

Ich habe absolut keine Ahnung wo ich suchen soll, ich poste euch mal die phpinfo.

System Linux srv3 2.6.28.9 #1 SMP Thu Mar 26 19:04:28 CET 2009 x86_64
Build Date Apr 26 2009 20:03:48
Server API CGI/FastCGI
Virtual Directory Support disabled
Configuration File (php.ini) Path /etc/php5/cgi
Loaded Configuration File /var/www/fcgi/abc.de/php5/php.ini
Scan this dir for additional .ini files /etc/php5/cgi/conf.d
additional .ini files parsed /etc/php5/cgi/conf.d/adodb.ini, /etc/php5/cgi/conf.d/gd.ini, /etc/php5/cgi/conf.d/mcrypt.ini, /etc/php5/cgi/conf.d/mhash.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
PHP API 20041225
PHP Extension 20060613
Zend Extension 220060519
Debug Build no
Thread Safety disabled
Zend Memory Manager enabled
IPv6 Support enabled
Registered PHP Streams zip, php, file, data, http, ftp, compress.bzip2, compress.zlib, https, ftps
Registered Stream Socket Transports tcp, udp, unix, udg, ssl, sslv3, sslv2, tls
Registered Stream Filters string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, convert.iconv.*, bzip2.*, zlib.*



Configuration
PHP Core
Directive Local Value Master Value
allow_call_time_pass_reference On On
allow_url_fopen On On
allow_url_include Off Off
always_populate_raw_post_data Off Off
arg_separator.input & &
arg_separator.output & &
asp_tags Off Off
auto_append_file no value no value
auto_globals_jit On On
auto_prepend_file no value no value
browscap no value no value
default_charset no value no value
default_mimetype text/html text/html
define_syslog_variables Off Off
disable_classes no value no value
disable_functions show_source, system, shell_exec, passthru, exec, shell, symlink, popen, proc_open show_source, system, shell_exec, passthru, exec, shell, symlink, popen, proc_open
display_errors On On
display_startup_errors Off Off
doc_root no value no value
docref_ext no value no value
docref_root no value no value
enable_dl On On
error_append_string no value no value
error_log no value no value
error_prepend_string no value no value
error_reporting 6135 6135
expose_php Off Off
extension_dir /usr/lib/php5/20060613 /usr/lib/php5/20060613
file_uploads On On
highlight.bg #FFFFFF #FFFFFF
highlight.comment #FF8000 #FF8000
highlight.default #0000BB #0000BB
highlight.html #000000 #000000
highlight.keyword #007700 #007700
highlight.string #DD0000 #DD0000
html_errors On On
ignore_repeated_errors Off Off
ignore_repeated_source Off Off
ignore_user_abort Off Off
implicit_flush Off Off
include_path .:/usr/share/php:/usr/share/pear .:/usr/share/php:/usr/share/pear
log_errors Off Off
log_errors_max_len 1024 1024
magic_quotes_gpc On On
magic_quotes_runtime Off Off
magic_quotes_sybase Off Off
mail.force_extra_parameters no value no value
max_execution_time 60 60
max_input_nesting_level 64 64
max_input_time 60 60
memory_limit 128M 128M
open_basedir /var/www/virtual/abc.de/:/usr/share/php/ /var/www/virtual/abc.de/:/usr/share/php/
output_buffering no value no value
output_handler no value no value
post_max_size 8M 8M
precision 12 12
realpath_cache_size 16K 16K
realpath_cache_ttl 120 120
register_argc_argv On On
register_globals Off Off
register_long_arrays On On
report_memleaks On On
report_zend_debug On On
safe_mode Off Off
safe_mode_exec_dir no value no value
safe_mode_gid Off Off
safe_mode_include_dir no value no value
sendmail_from no value no value
sendmail_path /usr/sbin/sendmail -t -i -f webmaster@abc.de /usr/sbin/sendmail -t -i -f webmaster@abc.de
serialize_precision 100 100
short_open_tag On On
SMTP localhost localhost
smtp_port 25 25
sql.safe_mode Off Off
suhosin.log.phpscript 0 0
suhosin.log.phpscript.is_safe Off Off
suhosin.log.phpscript.name no value no value
suhosin.log.sapi no value no value
suhosin.log.script no value no value
suhosin.log.script.name no value no value
suhosin.log.syslog no value no value
suhosin.log.syslog.facility no value no value
suhosin.log.syslog.priority no value no value
suhosin.log.use-x-forwarded-for Off Off
track_errors Off Off
unserialize_callback_func no value no value
upload_max_filesize 2M 2M
upload_tmp_dir /var/www/virtual/abc.de/phptmp/ /var/www/virtual/abc.de/phptmp/
user_dir no value no value
variables_order EGPCS EGPCS
xmlrpc_error_number 0 0
xmlrpc_errors Off Off
y2k_compliance On On
zend.ze1_compatibility_mode Off Off



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


Wäre schön wenn mir jemand weiterhelfen könnte.

In der suexec.log steht absolut nichts interessantes drinne, in der combined auch nur solche Eintröge:

88.134.*.* - - [25/Jun/2009:23:30:44 +0200] "GET //index.php?ipfilter=true HTTP/1.1" 200 6681 "http://*index.php?hack=true" "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)"


Die Fehler habe ich mit und ohne aktivierten mod_security.

mod_security lade ich über die mod_security.load, in meiner apache2.conf steht folgendes:

LoadFile /usr/lib/libxml2.so

Include /etc/apache2/modsecurity/*.conf


Wäre super wenn jemand eine Hilfestellung parad hätte.

Gruß

User avatar
rudelgurke
Posts: 405
Joined: 2008-03-12 05:36

Re: Apache2 + mod_security: Ständige 500er Errors

Post by rudelgurke » 2009-06-26 11:55

Hat nichts mit PHP zu tun bzw. die PHP Logs sind der falsche Ort. Mal einen Blick in den error log des Webserver werfen und dort dann eine eigene Whitelist erstellen für mod_sec mit SecRuleRemoveById in einem <files> Block.

Und auch mal nachsehen in den configs von mod_security selbst ob da eventuell noch ein eignes Logfile angegeben ist - etwas wie:

SecAuditLog
SecDebugLog

Alternativ wäre es vielleicht besser mod_sec erstmal nur loggen zu lassen bis man eine Whitelist hat oder die eigenen Regeln entsprechend angepasst und dann erst "scharf" schalten.

inchez
Posts: 65
Joined: 2007-10-01 20:17

Re: Apache2 + mod_security: Ständige 500er Errors

Post by inchez » 2009-06-26 14:21

Hallo rudelgurke,

Grundsätzlich sind diene Tipps sehr gut, aber wie ich schon sagte, eigenartigerweise habe ich die Errors auch bei komplett deaktivierten mod_security.

In der error.log vom apache steht dazu nichts :(

Gruß

User avatar
rudelgurke
Posts: 405
Joined: 2008-03-12 05:36

Re: Apache2 + mod_security: Ständige 500er Errors

Post by rudelgurke » 2009-06-26 17:07

Könnte dann doch suhosin sein - dass müsste sich im PHP Log melden. Vielleicht hier - temporär wie bei mod_sec - ein:

suhosin.simulation = On

setzen damit nichts geblockt wird. Wenn ein VB zum Einsatz kommt - folgende Konfiguration läuft hier ganz gut:

php.ini - Suhosin Variablen:

Code: Select all

suhosin.simulation = Off
suhosin.log.syslog.facility = 9
suhosin.log.file = 511
suhosin.log.file.name = /var/log/apache/suhosin.log
suhosin.log.use-x-forwarded-for = 0
suhosin.apc_bug_workaround = Off
suhosin.cookie.checkraddr = 3
suhosin.cookie.cryptraddr = 3
suhosin.cookie.cryptua = On
suhosin.cookie.disallow_nul = On
suhosin.cookie.encrypt = Off
suhosin.cookie.max_array_depth = 100
suhosin.cookie.max_array_index_length = 64
suhosin.cookie.max_name_length = 64
suhosin.cookie.max_totalname_length = 256
suhosin.cookie.max_value_length = 10000
suhosin.cookie.max_vars = 100
suhosin.executor.allow_symlink = Off
suhosin.executor.disable_emodifier = Off
suhosin.executor.func.blacklist = exec, passthru, shell_exec, system, pcntl_exec
, proc_open, proc_nice, proc_terminate, proc_get_status, proc_close, leak, apach
e_child_terminate, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_
setuid, escapeshellcmd, escapeshellarg, popen, pclose, phpinfo
suhosin.executor.include.max_traversal = 2
suhosin.filter.action = 500
suhosin.mail.protect = 1
suhosin.memory_limit = 128M
suhosin.multiheader = Off
suhosin.perdir = e
suhosin.post.max_vars = 2048
suhosin.post.max_length = 128000
suhosin.request.max_vars = 2048
suhosin.session.checkraddr = 3
suhosin.session.cryptdocroot = On
suhosin.session.cryptraddr = 3
suhosin.session.cryptua = On
suhosin.session.encrypt = On
suhosin.sql.bailout_on_error = Off
suhosin.upload.disallow_elf = On
suhosin.request.disallow_nul = On
suhosin.post.disallow_nul = On
suhosin.get.disallow_nul = On
suhosin.get.disallow_nul = On


Hier die Variablen anpassen - vor allem die "logdatei" auf der der jeweilige FastCGI Nutzer Zugriff haben sollte. Dann dürfte suhosin loggen.

Oh - zu dem Beispiel Request - sollte da wirklich ein Firefox zum Einsatz kommen und dass der eigene Browser sein - unbedingt das .Net Framework Plugin rausschmeißen - nur so am Rande ;)

inchez
Posts: 65
Joined: 2007-10-01 20:17

Re: Apache2 + mod_security: Ständige 500er Errors

Post by inchez » 2009-06-26 21:34

Danke :)

Hat zumindest fürs vBulletin geklappt, Ctracker Xtra bringt leider noch immer 500er Errors.

Kann es damit zusammen hängen das es über einen reverse Proxy läuft, also können dort 500er Errors entstehen?

Btw. welche Möglichkeiten bestehen außer Mod_security und suhosin seine Scripts zu schützen?

Gruß

User avatar
rudelgurke
Posts: 405
Joined: 2008-03-12 05:36

Re: Apache2 + mod_security: Ständige 500er Errors

Post by rudelgurke » 2009-06-27 08:01

Gute Programmierung wäre wohl die beste Lösung.

Falls es doch am Reverse Proxy liegt - kann ich mir eigentlich nicht vorstellen denn bisher gab es mit Squid oder Varnish noch keine Probleme - temporär deaktivieren.
Das einzigste Problem war eigentlich nur dass anstatt X_REMOTE_IP die X_FORWARDED_FOR als IP ausgewertet werden sollte damit nicht 127.0.0.1 in den Logs auftaucht und eventuell in einer Blacklist landet ;)

Nur generell, funktioniert das Logging soweit ? So ein 5xx entsteht nicht aus Spaß - irgendwo dürfte schon etwas geloggt werden. Vielleicht die Logging Funktion von PHP auf "debug" setzen.

inchez
Posts: 65
Joined: 2007-10-01 20:17

Re: Apache2 + mod_security: Ständige 500er Errors

Post by inchez » 2009-06-27 17:05

InDie logs sind alle in ordnung, aber ich finde absolut keinen Fehler der damit zutun haben könnte.

Da ich jetzt mal etwas rumgespielt habe würde ich fast behaupten pound hat etwas damit zutun.

Was kannst du mir den als reverse Proxy empfehlen?

ich habe squid genutzt, damit hatte ich ähnliche Probleme und er ist oft abgeschmiert, mit pound war ich eigl. bis jetzt mehr als zufrieden.

Ich habe mir mal varnish und ngix angeschaut. Welchen von diesne beiden würdets du mir den empfehlen?

Bzw wie sollte ich varnish konfigurieren.

Im Endeffekt läuft bei mir auf der Kiste wo der Apache rennt ein Board und ein paar andere Scripts über verschiedene Subdomains, die Domain zeigt auf die Kiste wo pound rennt, dort wird die Last verteilt und etwaaiger DDoS in kleinem maße gefiltert.

Gruß