Nach meinem Artikel TrackBack SPAM Bots abwehren enstand auf Roberts Blog eine interessante Diskussion über die Methoden zur Trackback SpamBot Abwehr. Robert schrieb mir, dass er die unfassbare Menge von knapp 3 Millionen Spam Trackbacks in seinem Log verzeichnete, so dass sein Provider wegen ihm die Firewall anpassen musste und Robert deshalb sehr interessiert an dem Thema war.
Im Kommentarbereich meldete sich Michael, der das Simple Trackback Validation Plugin für WordPress geschrieben hat. Er empfahl uns dringend, einen ähnlichen Mechanismus in Serendipity einzubauen, er hatte mit der Methode ohne jedwelche Notwendigkeit zur Nachbereitung nahezu keine Spam Trackbacks mehr.
Das Simple Trackback Validation Plugin verfolgt vor allem 2 Methoden. Die eine davon unterstützt das AntiSpam Plugin von Serendipity ebenso: Bei einem Trackback Versuch wird überprüft, ob die Seite, die den Trackback setzen will, überhaupt einen Link auf unsere Seite hat. Das ist ein wirksames Mittel gegen SpamBots, jedoch hatte ich das bei mir immer ausgeschaltet, weil so jeder Trackback einen Seitenabruf auf einem Werbeserver und anschließendes Parsen des HTML Codes verursacht. Dies kann also bei der inzwischen recht hohen Frequenz der SpamBot Versuche die Performance des eigenen Servers doch erheblich in die Knie zwingen.
Die andere und eigentlich wichtigere Methode ist die IP Validierung. Hierbei wird überprüft, ob die IP des aktuellen Trackback Senders mit der IP des Hosts übereinstimmt, auf die der Trackback gesetzt werden soll. Bei echten Trackbacks ist diese immer identisch, denn die Blogsoftware setzt einen Trackback der eine Quelle angibt, die Teil des Blogs ist. Somit ist die IP des Senders (die Blog Software) die selbe, wie die IP des Hosts, wo die Quellseite (der Eintrag in diesem Blog) gespeichert ist.
Bei SpamBlogs ist das anders. Diese sind z.B. per Trojaner auf privaten Rechnern installiert (Stichwort Botnetz) oder auf dem Server eines Spam Anbieters. Der Trackback enthält natürlich als Quelle einen anderen Rechner, sonst würde das ja nicht all zu viel Sinn machen. Es soll ja nicht Werbung für sich selbst sondern für einen bezahlenden Kunden gemacht werden. Somit kann man durch diesen simplen Vergleich ziemlich zuverlässig einen SpamBot erkennen.
Wieder eine gute Idee! Bei dieser Methode ist die Serverlast hoffentlich nicht so heftig, wie bei der oben beschriebenen Methode. Es muss nur eine DNS Anfrage abgeschickt werden, die eine IP für den Namen des Quellservers ermittelt. DNS Server sind aber meist Cache optimiert, somit sollte dies zügig abgehandelt werden.
Ich habe nun bei mir in das Serendipity AntiSpam Plugin die IP Validierung als weitere Option eingebaut. Derzeit noch im Moderationsmodus, um die Resultate überprüfen zu können. Die letzte Nacht hat gezeigt, dass es offenbar funktioniert. Bei allen Spam Versuchen schlug die IP Validierung an, echte Trackbacks (es gab einen am Morgen) kamen aber durch! Ich werde das noch ein bisschen länger testen und dann das erweiterte Plugin veröffentlichen. Ein Test bei Robert wäre wohl nicht schlecht, vor allem würde mich interessieren, ob die 3 Millionen DNS Anfragen pro Monat dem Server Probleme bereiten.
Für diesen Test musste ich übrigens meine zuerst beschriebene Methode deaktivieren, da sie bei mir so perfekt funktionierte, dass gar kein Bot mehr zum Testen durch kam. Nach meinen Tests werde ich die User Agent Erkennung natürlich wieder einbauen, denn diese Methode ist im Gegensatz zu den oben beschriebenen Methoden neutral in ihrer Wirkung auf die Server Last. Sie wird also die erste Wand für die Bots sein, sollte dann ein Bot mit neuem Namen doch durchkommen, wird er spätestens mit der IP Validierung gestoppt. Ich denke, das ist dann eine optimale Mischung.
Nachtrag 1: Beim Forschen nach Trackback Spam Methoden habe ich übrigens noch einen Bot entdeckt, mit dem man ausprobieren kann, ob die Trackbacks noch ankommen. Der war sehr hilfreich um zu testen, ob meine Implementierung korrekte Trackbacks fälschlicher Weise abweist. Zusätzlich habe ich mir noch einen Mini SpamBot gebaut. Den habe ich dann zum Testen der "bösen Trackbacks" benutzt. 
Nachtrag 2: Ebenso wie Robert finde ich es übrigens bemerkenswert, dass ein WordPress Plugin Schreiber (und Nutzer) von sich aus Tipps gibt, wie man Serendipity noch sicherer bekommen kann. Oft wird konkurrierende Software ja eher -hmm- religiös verglichen, es entstehen also schnell Fanboy Diskussionen. Ich fand es sehr erfreulich, dass dies zwischen WP und s9y offenbar nicht der Fall ist. Danke noch einmal an Michael! 
Robert Lender
Homepage
07/30/2007 10:58PM
Grischa
Homepage
07/31/2007 09:37AM
Grischa
Homepage
12/30/2007 10:02PM
Robert Lender
Homepage
12/30/2007 10:45PM
Grischa
Homepage
12/31/2007 12:28AM
Matthias Sonnenkalb
Homepage
09/26/2008 03:13AM