[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 Aufrufe | Begründung |
---|---|
116 | Required header ‘Accept’ missing |
28 | Header ‘Pragma’ without ‘Cache-Control’ prohibited for HTTP/1.1 requests |
9 | Header ‘Expect’ prohibited in HTTP/1.0 requests |
9 | Prohibited header ‘Proxy-Connection’ present |
6 | Prohibited header ‘Range’ present |
5 | User-Agent beginning with ‘Jakarta Commons’ prohibited |
5 | A User-Agent is required but none was provided. |
4 | Connection: TE present, not supported by MSIE |
4 | Header ‘TE’ present but TE not specified in ‘Connection’ header |
4 | I know you and I don’t like you, dirty spammer. |
3 | User-Agent beginning with ‘User-Agent: ’ prohibited |
2 | User-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/
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…
You might also wish to try the Bad Behaviour 2.0 Beta 1 which I released today. :)
Hi Sascha,
was muss man machen um die Statistiken zu bekommen warum die Einträge blockiert wurden?
Grüße
SELECT count( id ) AS cases, deniedreason
FROM wpbadbehaviorlog
GROUP BY denied_reason
ORDER BY cases DESC
Oder so in der Art ;)
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
also meine natürlich von Bad Behaviour .. “require once etc…”
@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