Spam-Statistiken

[Akismet][aki] hat bisher 6.795-mal Kommentarspam abgefangen. Das sind stolze 75,5 pro Tag. Nun, zu Hochzeiten kamen hier gut und gerne dreimal so viele an. Aber dank einiger kleiner Maßnahmen konnte ich das deutlich reduzieren.

Zusätzlich zu Akismet läuft hier seit Ende letzter Woche [Bad Behavior][bad]. Dieses Tool analysiert ankommende Anfragen (man beachte die Alliteration ;) ) und lässt solche nicht durch, die schlechtes Benehmen an den Tag legen. Zum Beispiel solche, denen HTTP-Header fehlen oder die ihre Header falsch kombinieren. Außerdem hat Bad Behavior eine eingebaute Liste von bekannten Spambots, deren Zugriffe es ebenfalls blockt. Es merkt sich auch, von welchen IPs unhöfliche Anfragen kamen und blockt weitere Anfragen von diesen IPs, wenn sie innerhalb einer bestimmten Zeitspanne auflaufen. Die Größe dieser Zeitspanne beträgt zunächst zehn Minuten. Aufrufe innerhalb dieser Zeitspanne werden automatisch geblockt. Für jeden geblockten Aufruf verlängert sich die Zeitspanne um weitere zehn Minuten.

Nach drei Tagen Betrieb hat [Bad Behavior][bad] 195 Aufrufe geblockt:

Geblockte AufrufeBegründung
116Required header ‘Accept’ missing
28Header ‘Pragma’ without ‘Cache-Control’ prohibited for HTTP/1.1 requests
9Header ‘Expect’ prohibited in HTTP/1.0 requests
9Prohibited header ‘Proxy-Connection’ present
6Prohibited header ‘Range’ present
5User-Agent beginning with ‘Jakarta Commons’ prohibited
5A User-Agent is required but none was provided.
4Connection: TE present, not supported by MSIE
4Header ‘TE’ present but TE not specified in ‘Connection’ header
4I know you and I don’t like you, dirty spammer.
3User-Agent beginning with ‘User-Agent: ’ prohibited
2User-Agent containing ‘DTS Agent’ prohibited

Eine kurze Erläuterung zum [Accept-Header](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1): Dieser HTTP-Header wird von User-Agents (Webbrowser und anderen Softwares, die Anfragen an Webserver stellen) bei Anfragen mit gesendet, um dem Server zu verstehen zu geben, mit welchen Inhalten sie umgehen können. Ein Webbrowser wird zum Beispiel *text/html* und *image/jpeg* (und viele weitere) angeben, um dem Server zu sagen, dass er mit HTML-Dokumente und JPG-Bilder umgehen kann. Bad Behavior geht davon aus, dass ein User-Agent, der auf einen Accept-Header verzichtet (und so vorgibt, mit allen Dokumenttypen umgehen zu können) kein Webbrowser sein kann und blockt daher solche Anfragen.

Nach den Erfahrungen der letzten Tage scheint [Bad Behavior][bad] einen guten Job zu machen. Es filtert zuverlässig unhöfliche Anfragen im Vorfeld aus und entlastet dadurch [Akisment][aki]. Weiter so ;)

[bad]: http://www.ioerror.us/software/bad-behavior/
[aki]: http://akismet.com/

9 comments

  1. Aha aha, fein. Das werde ich mir mal genauer anschauen. Vielleicht kann ich mir damit noch mehr lästige Zeitgenossen vom Server halten als ich es jetzt manuell per .htaccess schaffe…

  2. SELECT count( id ) AS cases, deniedreason
    FROM wp
    badbehaviorlog
    GROUP BY denied_reason
    ORDER BY cases DESC

    Oder so in der Art ;)

  3. Kann man damit auch sein phpBB -Forum schützen??Das wäre ja cool. Aber wo bzw. in welche File sollte der code? Was wäre da am geeignesten?

    Es Grüßt

    Die Anne

  4. @Anne: Bad Behavior läßt sich prinzipiell in jedes PHP-Script einbauen, so zumindest behauptet es der Autor. Nicht, daß ich es schon ausprobiert hätte :D

  5. Pingback: Sascha

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert