- F!XMBR - http://www.fixmbr.de -

Fight against SPAM — The next Generation

Nachdem wir 4:3 geführt haben [1], die SPAMMER ausgeglichen haben, wir sofort wieder in Führung gegangen sind [2], haben die SPAM-Fuzzis in den letzten Tagen auf beeindruckende Art und Weise ausgeglichen. Die Checkbox von Frank ist mittlerweile leider nutzlos [3] — sie hat uns ein Jahr lang hervorragende Dienste geleistet, R.I.P. Die Bots sind mittlerweile dazu übergegangen, alle Haken zu setzen, die beim Kommentieren irgendwie möglich sind — so abonnieren sie z. B. bei uns auch gleich jeden angegriffenen Artikel. Nun gehen wir aber wieder in Führung, eine Maßnahme, die mir nur bedingt zusagt, aber — wat mut, dat mut, hat meine Oma schon immer gesagt. 😉

Wir setzen nun (auch) das Math Comment Spam Protection-Plugin [4] ein. Jeder unregistrierte Gast, der kommentieren möchte, muss nun eine simple Mathe-Aufgabe lösen, bevor der Kommentar angenommen wird. Gefällt mir nicht wirklich, da z. B. Javascript aktiviert werden muss, aber meine Oma hatte schon immer recht, und so lassen wir es erstmal. 😉 Die Aufgabe sehen nur unregistrierte Gäste, registrierte und angemeldete User sehen die Matheaufgabe nicht.

Es folgt nun die aktualisierte Fassung unserer Fight against SPAM-Reihe:

So mancher A-Blogger jammert da draußen rum, dass seine SPAM-Tools wie Spam Karma [5] mehrere Tausend SPAM-Kommentare pro Tag auffangen und sie nicht mehr garantieren können, dass auch mal ein normaler Kommentar hängenbleibt — und wer will schon mehrere Tausend Kommentare pro Tag überprüfen? So gibt es halt Verluste. Das kann ich nicht nachvollziehen. Es gibt mehrere Möglichkeiten, den SPAM zu bekämpfen — das Internet ist nicht nur Spaß, es ist auch das, was es in seiner Urform mal war: Wissensquelle. Und wenn ich blogge, dann gehört meiner Meinung nach der Kampf gegen den SPAM dazu, dem muss ich mich stellen, ich kann es nicht nur auf ein Anti-Spam-Tool abwälzen — denn dann läuft der Eingangsordner wirklich irgendwann über und Kommentare meiner Leser bleiben hängen und werden gelöscht.

Wir hier auf F!XMBR und auf .get privacy [6] nutzen kein überkandideltes, großes Anti-Spam-Tool. Neben der obigen Meinung, ist mir Spam Karma [5] z. B. viel zu groß, ballert die Datenbank zu — unzählige Einstellungen. Da mal als unbedarfter User eine falsche Option, und schon bleiben auch von F!XMBR-Lesern Kommentare hängen. Nicht mit mir. Auch ein Tool wie Aksimet [7] kommt mir nicht ins Haus. Ein Tool, welches alle Kommentare mit einer DB ausserhalb abgleicht [8], na gehts denn noch — ich bin mir sicher, dass mancher Blogger von den eigenen Lesern ein paar auf die Nase bekommen würde, wenn diese wissen würden, dass ihre Kommentare und IP’s [sic!] mal eben durch das Netz zum Abgleich gejagt werden. Das würde unser ganzes Tun hier und auf .get privacy ad absurdum führen. No way.

Nun mag man mir an den Kopf werfen, dass die Punkte, die ich gleich ansprechen werde, nur etwas für Technikfreak sind. Das ist ist meiner Meinung nach dummes Zeug. Ich setze voraus, dass jeder Blogger zumindest schon mal in eine PHP– oder HTML-Datei reingeschaut hat. Mehr ist auch nicht notwendig. Und ganz im Ernst: Soviel Ahnung habe ich von PHP & Co. auch nicht. Und wie gesagt, im Netz da draußen, auch hier auf F!XMBR, gibt es Step-by-Step-Anleitungen. Einfacher gehts nicht.

Gegen SPAM ist eh kein Kraut gewachsen — wie oft habe ich das schon gehört. Ist es doch. Man muss den Kampf nur aufnehmen und auch immer am Ball bleiben — es ist ein stetiger Wettlauf. Wenn ich mal unseren bisherigen Maßnahmen nehme, inkl. den neuesten steht es wie folgt:

F!XMBR 6 : 5 SPAMMER

Kommen wir aber nun zu den Maßnahmen — das Vorwort war dann doch länger als geplant, und hey, ich werde älter, das Abwatschen mancher A-Blogger war (ausnahmsweise) sehr gemäßigt. 😀

Ich unterscheide hier für uns 3 Sorten von SPAM:

  1. Menschlicher SPAM
  2. Bots (automatisierter SPAM)
  3. Sonstiger SPAM

1.) Menschlicher SPAM

Menschliche SPAMMER lassen sich naturgemäß ganz schlecht bekämpfen, weil sie augenscheinliche Maßnahmen locker umgehen können, so bleiben uns nur restriktive Maßnahmen im WordPress-Backend. Unter Einstellungen — Diskussion haben wir folgende Einstellungen vorgenommen:

Zusätzlich sind bei uns 2 Plugins im Einsatz — Moderate Pingbacks [9] & Moderate Trackbacks [9]. Jeglicher Ping– und Trackback landet also in der Moderationsschleife, und auch jeder erste Kommentar der F!XMBR-Leser, sowie jeder Kommentar, der mehr als 3 Links enthält. Damit haben wir sehr gute Erfahrung gemacht. Es sind zum Teil restriktive Maßnahmen. We now, aber unsere Leser kommen damit sehr gut klar — und der Erfolg gibt uns recht.

2.) Bots (automatisierter SPAM)

Das Hauptaugenmerk liegt selbstverständlich auf den Bots, die das Netz abgrasen, die Blogs dieser Welt crawlen — das geschieht automatisiert, millionenfach pro Tag — wir hatten z. B. Techcrunch [10] mal einen Pingback geschickt, d. h. er wurde automatisch versendet, kurze Zeit später bereits, wurde der betreffende Artikel bei uns attackiert. Unterscheiden kann man den automatisierten SPAM wie folgt:

  1. Kommentar-SPAM
  2. Trackback-SPAM

a.) Kommentar-SPAM

Automatisierten Kommentar-SPAM fangen wir hier auf F!XMBR ganz einfach auf. Anfangs war es unsere beliebte Checkbox — entwickelt hat sie Frank [11]. Nun aber wird die Checkbox locker von den Bots umgangen, so dass es Zeit für ein anderes Plugin wurde. Es wurde schließlich das Math Comment Spam Protection-Plugin [12]. Wie oben schon geschrieben, müssen nicht registrierte und eingeloggte User eine kleine Mathe-Aufgabe lösen, bevor der Kommentar angenommen wird. Registrierte, eingeloggte User müssen keine Mathe-Aufgabe lösen. Mit der Checkbox in den Anfängen von F!XMBR sowie nun mit dem Mathe-Plugin sollte der SPAM kein Problem mehr sein.

b.) Trackback-SPAM Trackbacks, Pingbacks — eine feine Entwicklung, allein durch das, was sie ausmacht, sind sie selbstverständlich mehr als anfällig, um von den SPAMMERN dieser Welt angegriffen zu werden. Dazu zähle ich im Übrigen auch die ganzen Pingdienste, die auch stark ausgenutzt werden. Wenn z. B. der SPIEGEL [13] oder der gulli [14] Technorati [15] anpingen, ist das in meinen Augen profaner SPAM — haben die beiden genannten (und zig andere) doch soviel mit dem Bloggen zu tun, wie ich mit dem Stricken. Schleicht Euch. :)

Das aber nur am Rande, zurück zum eigentlichen Problem, dem Trackback-SPAM. Wir haben hier mittlerweile mehrere Maßnahmen ergriffen, die sehr gut wirken. Bots greifen z. B. die wp-trackback.php im WordPress-Root-Verzeichnis direkt an. Das kann man leicht unterbinden.

b.1.) Wir benennen die wp-trackback.php um. Natürlich muss da noch in weiteren Dateien diese Änderung angepasst werden, um genau zu sein: In 2 Dateien an Stellen im wp-includes–Verzeichnis: In der template-loader.php suche zweimal nach (Zeilen 11 & 71):

include(ABSPATH . ?/wp-trackback.php?);

In der comment-template.php ändern wir (Zeile 226):

$tb_url = get_option(‘siteurl’) . ‘/wp-trackback.php?p=’ . $id;

Dort jeweils den neuen Dateinamen eintragen. Somit hat man eine individuelle wp-trackback.php und der Bot, der nur den eigentlichen Namen kennt rennt gegen eine Mauer. 😉

Eine zweite Möglichkeit:

b.2.) Das direkte Ansteuern per .htaccess-Datei zu unterbinden, ist auch möglich. Dazu reicht folgender Eintrag in der .htaccess-Datei:

RewriteEngine On
RewriteRule ^wp-trackback\.php.*$ — [F,L]

mod_rewrite muss natürlich auf dem Server aktiviert sein, ebenso müssen wir Zugriff auf die .htaccess haben. Das ist nicht bei allen Webpaketen der Fall.

Eine weitere Form des Trackback-SPAMs:

Die Bots crawlen die Artikel-URLs, hängen bekannte Formen der Trackback-Permalinkstruktur an und dann heißt es Feuer frei. Entschuldigt diesen bildlichen Ausdruck, aber nichts anderes heißt es. Sind diese Bots erstmal losgelassen, und haben uns entdeckt, herrscht keine Ruhe mehr — Thunderbird [16] (oder ein anderer eMail-Client) meldet im Minuten-Takt, oder wie oft man die Mails auch abruft, neue Kommentare zum Freischalten. Und diese letzte Form ist die erfolgreichste der SPAMMER, muss man auch mal neidlos anerkennen. Ich habe lange überlegt, einfach den Permalink der Trackback-URL zu ändern, ich konnte mir nicht großartig vorstellen, dass es etwas bewirkt, doch die Bots sind wirklich so bescheuert, schlecht programmiert. Bei uns hängt nun ein _fixmbr hintendran — es wirkt, die Bots bleiben aussen vor. Es lässt sich ganz einfach lösen. Suche jeweils im wp-includes–Verzeichnis in der comment-template.php nach (Zeile 227):

$tb_url = trailingslashit(get_permalink()) . ‘trackback/’;

und ändere es in

$tb_url = trailingslashit(get_permalink()) . ‘trackback_fixmbr/’;

In der rewrite.php suchen wir nach (Zeile 522)

$trackbackregex = ‘trackback/?$’;

und ändern es in

$trackbackregex = ‘trackback_fixmbr/?$’;

Nun noch im ACP unter Einstellungen — Permalinks ein Klick auf Permalinkstruktur aktualisieren — nichts weiter ändern — und zurücklehnen, das wars.

Zusätzlich hinterlegen wir in den Artikel dem Begriff Trackback nicht die Trackback-URL — falls irgendwann mal, wie schon geschehen, die Trackback-URL direkt ausgelesen wird. Wir lassen sie einfach per Javascript aufklappen, wie links zu sehen. Dies wird wie folgt realisiert. In der sidebar.php fügen wir folgenden Javascript-Code ein:

<script type=«text/javascript»>
//<![CDATA[
function trackback_spam() {
parentelem = document.getElementById(«whateveryouwant»);
if (document.getElementById(«track_fixmbr»)) { remove_spam(); }
var innerelement = document.createElement(«textarea»);
innerelement.setAttribute(«readonly»,«readonly»);
innerelement.setAttribute(«id»,«track_fixmbr»);
innerelement.setAttribute(«onclick»,«this.form.track_fixmbr.select(); this.form.track_fixmbr.focus();»);
elementtext = document.createTextNode(‘<?php echo get_permalink() ?>track_fixmbr/’);
innerelement.appendChild(elementtext);
parentelem.appendChild(innerelement);
}

function remove_spam() {
var d = document.getElementById(«whateveryouwant»);
var fixmbr = document.getElementById(«track_fixmbr»);
d.removeChild(fixmbr);
}
//]]>
</script>

Die Verlinkung zum Aufklappen der URL sieht dann so aus:

<a href=«javascript:trackback_spam();»>Trackback-URL anzeigen lassen (Javascript on)</a>
<form action=»#» id=«whateveryouwant»>
</form>

Damit haben Crawler keine Möglichkeit mehr, die Trackback-URL auszuspähen, es sei denn, irgendwann entschlüsseln sie die Javascript-Zeilen, was nicht wirklich schwer ist, aber auf der anderen Seite doch zu individuell, um es ernsthaft in die Programme einzubauen. F!XMBR setzt diese Möglichkeiten der SPAM-Vermeidung meines Wissens als einziges Blog ein. Das war es dann auch schon zum Trackback-SPAM. Natürlich kann man zusätzlich noch bekannte SPAM-Server per .htaccess und deny from aussperren — dazu gleich auch mehr — doch Trackback-SPAMMER bleiben nun auch aussen vor.

3. Sonstiger SPAM

Unter sonstigen SPAM habe ich einsortiert:

  1. Referer-SPAM
  2. SPAM bekannter Server
  3. Kontaktformular-SPAM
  4. Sonstiges

a.) Referer-SPAM

Es gibt Blogs — und auch ganz normale Seiten — die veröffentlich auf einer extra Seite ihre Referers. Und wenn man da reinkommt, hat man einen Backlink ergattert — und man kann auf Zulauf von der betreffenden Seite hoffen. Sehe ich in meiner Statistik so einen Referer, kommt gleich die .htaccess zum Einsatz — ein kleiner Auszug:

RewriteCond %{HTTP_REFERER} ^.*kenogo.com.*$ [NC] RewriteRule ^.* — [F]

RewriteCond %{HTTP_REFERER} ^.*onlinekenoo.com.*$ [NC] RewriteRule ^.* — [F]

RewriteCond %{HTTP_REFERER} ^.*yigan999.com.*$ [NC] RewriteRule ^.* — [F]

RewriteCond %{HTTP_REFERER} ^.*uscben.net.*$ [NC] RewriteRule ^.* — [F]

Natürlich braucht es da wieder Zugriff auf die .htaccessmod_rewrite sollte auf dem Server aktiviert sein, und schon sind solche Seiten draussen — so habe ich z. B. auch mir unliebsame Seiten ausgesperrt, die evtl. ein wenig bekannter sind, ganz fein das [17]. 😉

Wo wir gerade beim Thema sind…

b.) SPAM bekannter Server

Um solche Seiten (siehe auch a) dann gänzlich auszusperren, denn dann kommen auch keine Trackbacks mehr an, hilft folgender Eintrag:

Order Deny,Allow

#m. d.
deny from 213.203.193.143
deny from 213.203.193.163
deny from 213.131.229.234
deny from 195.20.225.22
deny from 82.165.79.246

#AboutUS
deny from 66.249.16.207

Man kann also auch gegen diese Art SPAM, diese Leute viel tun. Doch gerade bei den ganzen amerikanischen internationalen Seiten ist auch viel Kreativität gefordert. Ich, z. B., hatte die Nase voll — jeglicher Referer, der z. B. die Zeichenfolge poker enthält, landet nun auf der 403. Das ist dann schon sehr restriktiv und kann irgendwann mal normale Seiten treffen. 😉

c.) Kontaktformular-SPAM

Der normale User bekommt es nicht mit, aber auch die auf den Blogs sehr oft eingesetzten Kontaktformulare werden ebenso angesteuert, und dann trudeln die Mails mit Nice site — oder so ähnlich ein. Doch auch hier gibt es Abhilfe. Ursprunglich wurde das Plugin von Ryan [18] geschrieben, wurde dann von Doug [19] und One Woman Show [20] jeweils erweitert. Ich habe mich für die Version von Doug entschieden [21] — möchte uns jemand per Kontaktformular nun eine Nachricht zukommen lassen, muss er (oder sie) das Wort Privacy händisch eingeben. Den Bot möchte ich sehen, der das schafft, zumal per Knopfdruck das Wort geändert werden kann. 😉

d.) Sonstiges

Es gibt immer wieder Seiten, die leben vom Contentdiebstahl — und Mama Google [22] hat Double Content gar nicht gerne. Als Beispiel seien hier die NPH-Proxies genannt. Ich empfehle da auch immer, das Forum von Abakus [23] im Auge zu behalten — wenn man mal das ganze Marketing– und SEO-Gequatsche ausser Acht lässt, und nur die Informationen mitnimmt, ist es ganz okay. 😀

Eine ellenlange Liste mit NPH-Proxies schaut z. B. so aus:

# NPH-Proxy’s 24.09.2006
RewriteCond %{REMOTE_ADDR} ^24\.169\.129\.239$ [OR] RewriteCond %{REMOTE_ADDR} ^38\.100\.31\.31$ [OR] RewriteCond %{REMOTE_ADDR} ^62\.75\.222\.63$ [OR] RewriteCond %{REMOTE_ADDR} ^62\.149\.13\.110$ [OR] […]

Solche Sachen sind natürlich optimal und präventiv — nur meist, wenn man betroffen ist, ist es zu spät. Ein kleiner Insider: Wir hatten die Tage The incredible Return of the guglibot. Oder auch licats-bot, wie er sich mal nannte, diesmal schlug er als gugli-bot auf. Natürlich wird auch hier ein Riegel vorgeschoben (siehe a):

#das lica-botgedoens
RewriteCond %{HTTP_REFERER} ^.*licats-bot.*$ [NC] RewriteRule ^.* — [F]

#Und weil Chris das so will, nun das Gugli-Gedöns
RewriteCond %{HTTP_REFERER} ^.*gugli-bot.*$ [NC] RewriteRule ^.* — [F]
RewriteCond %{HTTP_REFERER} ^.*guglibot.*$ [NC] RewriteRule ^.* — [F]

#Und falls Du auf die Idee kommst, Kleiner
RewriteCond %{HTTP_REFERER} ^.*licatsbot.*$ [NC] RewriteRule ^.* — [F]

Das war es auch schon. Sehr viel Text, und doch sinnvolle Maßnahmen. Nicht ohne Stolz kann ich sagen, wir sind mit F!XMBR mittlerweile nicht ganz unbekannt. Wir setzen kein großes, überkandideltes Anti-Spam-Tool ein und haben die SPAM-Problematik einfach um Griff. Das ist schon ein grandioser Erfolg. Gerne würde ich ja mal sehen, wie ein A-Blogger diese Maßnahmen umsetzt und dann von seinen Erfolgen — oder auch Mißerfolgen — berichtet. Denn nur dann kann man sehen, ob ich oben zu dick aufgetragen habe. 😀

Ich hoffe nicht, dass ich irgendwann mal sagen muss, ich gebe auf, Spam Karma [5] wurde gerade installiert. Doch bis dahin ist noch ein ganz langer Weg und ich habe noch viele Pfeile im Köcher. 😀