Ronald hat vor wenigen Tagen wiedermal ein Update seiner mod_rewrite Regeln zum Schutz vor Angriffen auf Webanwendungen veröffentlicht. Die Regeln sind sehr einfach gehalten, dennoch sind sie sehr Wirkungsvoll und können auch vor zukünftigen Bugs, Sicherheitslücken und ähnlichem in Webanwendungen schützen.
Dank der geringen “größe” ist es auch sehr performance schonend, wenn man den Gegenwert ansieht den man dafür erhält. Natürlich schützen die Regeln nicht vor allem und kein Blacklisting/Filter ist perfekt.
Dennoch kann es auch sein das eure Anwendung damit nicht mehr richtig funktioniert, ihr solltet also (wie immer wenn ihr eine Änderung in solch einer Größenordnung vornehmt
) alles ausführlich testen bevor ihr so etwas in eine Liveumgebung einführt.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(HEAD|TRACE|DELETE|TRACK) [NC,OR]
RewriteCond %{HTTP_REFERER} ^(.*)(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
RewriteCond %{REQUEST_URI} ^/(,|;|<|>|/{2,999}).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^(java|curl|wget).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|HTTrack|clshttp|archiver|loader|email|harvest|extract|grab|miner).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(libwww|curl|wget|python|nikto|scan).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
RewriteCond %{HTTP_COOKIE} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(;|'|").*(union|select|insert|declare|drop|update|md5|benchmark).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*(localhost|loopback|127\.0\.0\.1).* [NC,OR]
RewriteCond %{QUERY_STRING} ^.*\.[A-Za-z0-9].* [NC,OR] # prevents shell injection
RewriteCond %{QUERY_STRING} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC]
RewriteRule ^(.*)$ your_error_file_here.php
</IfModule>
Falls es zu Darstellungsproblemen kommt findet ihr die Regeln auch noch mal in einer Textdatei unter minimalist_web_app_firewall.txt
Solltet ihr es mit WordPress nutzen wollen müsst ihr die Zeile “prevents shell injection” auskommentieren/entfernen. Sonst funktioniert das ACP nicht richtig.

May 1st, 2008 00:51
Aber so richtiger Schutz kann so auch nicht gewährleistet sein … ich empfehle – jedenfalls als out of the box Lösung – gerne PHPIDS. Gute Erfahrungen mit gemacht.
May 1st, 2008 01:17
Jop hab ich ja bereits gesagt, allerdings ist deren filterset extrem groß, auch wenn sie die Performance durch Caching und andere Methoden immer weiter nach oben treiben wollen. Verfolge das php-ids ja schon seit seiner Geburtsstunde. Siehe Einträge weiter hinter.
Updates und aktuelle leaks in den Regeln findet man auch meistens hier http://sla.ckers.org/forum/read.php?12,8085
Und 100%ig sicher ist sowieso nix, wohl wahr.