ich kriege seit einiger Zeit GET Anfragen nach folgendem Muster:
Code: Select all
http://myhost.tld//index.php?_SERVER[DOCUMENT_ROOT]=http://www.otherhost.tld
Das mod_security diese Anfragen blockt, bezweifel ich, denn der apache spuckt dabei öfters gerne mal ein "200" aus, und die Logs von mod_security sind diesbezüglich auch nicht gerade aufschlussreich.
Also habe ich mir die apache Direktive "SetEnvIf" mal näher angesehen. Dazu habe ich zwei Möglichkeiten ausprobiert:
- einmal in Kombination mit der allow, deny Direktive
- und die Reject Direktive
Das sieht dann in der config so aus:
Code: Select all
<Directory /var/www/>
AuthzDefaultAuthoritative On
SetEnvIf Request_URI ".*_SERVER[DOCUMENT_ROOT]=http://*" drop_them
# Reject env drop_them
Options -Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
deny from env=drop_them
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]
</Directory>
- authz_default
- authz_host.load
- authz_user.load
Die Möglichkeit mit der Reject Direktive verlangt das "authz_core" Modul, welches ich aber nirgends finden kann. Also bieb mir die Deny Direktive.
Das scheint aber nicht zu funktionieren, denn bei Selbsttests lässt der Browser diese Anfragen durch.
Ich habe das Gefühl, das einfach nur die Regex ( SetEnvIf ...) falsch ist.
Hat jemand einen Tip?