Rubrikauswahl:

Die Verweise zu einzelnen Seiten der aktuell ausgewählten Rubrik finden Sie unterhalb des folgenden Textes.


Tipps für Selbermacher

Thema NetiquetteSpam in Kommentaren, was tun?

Betreiber von Gästebüchern, Foren und Weblogs kennen das Problem: Sie wollen Besuchern die Möglichkeit bieten, Meinungen und Kommentare abzugeben, und ernten neben dem gewollten Feedback mengenweise Werbemüll für Potenzmittel, Glücksspiel und Kreditfinanzierung. — Wie kann man solchen unerwünschten Spammern Einhalt gebieten ohne gleichzeitig den gern gesehenen Kommentatoren den Zugang zu erschweren?

Zum einen möchte man die Spammer identifizieren und zum anderen in geeigneter Weise behandeln, so dass Werbemüll ausbleibt, die Funkionsfähigkeit der eigenen Webseiten dabei weiterhin gewährleistet ist.

Identifikation von Formularspammern

Automatische Erkennung von Spammern ist aufwändig, aber nicht gänzlich unmöglich. Zunächst kann man relativ zuverlässig die Spambots ausfiltern, also Programme, die ohne menschliches Zutun auf der Suche nach Eingabeformularen das Netz durchkriechen. Dazu kann man ein zusätzliches Eingabefeld im Formular einsetzen, das einen zufälligen Kontrollkode abfragt, der menschliche Erkennungsfähigkeiten erfordert. Solche Techniken werden unter dem Begriff Captcha zusamengefasst. In meiner Werkzeugkiste biete ich den Formspam Guard zum Einbau in eigene Eingabemasken an.

Allerdings löst der Einsatz von Captchas nicht das Problem, dass Menschen die Erkennungsaufgabe lösen und den Spameintrag dem Roboter überlassen. Dies können die Spammer selbst übernehmen, oder nichts ahnenden Gästen überlassen, denen nach dem Lösen der Captcha-Aufgabe Zugang zu irgendwelchen Diensten gestattet wird. Ob man die Captcha-Technik also einsetzen will, muss man sich deshalb gut überlegen. Auf jeden Fall und unabhängig von der eben erwähnten Entscheidung sollte aber die Plausibilität potenziell verdächtiger Formulareinträge überprüft werden: Entspricht die E-Mailadresse dem gültigen Format? Ist eine angegebene Homepageadresse formal korrekt?

Am einfachsten wäre es natürlich, jegliche Art von Links in Kommentaren zu verbieten, beziehungsweise herauszufiltern. Wenn weder (angebliche) eigene Homepages verlinkt, noch HTML-Links im Text eingebaut werden können, ist den Formularspammern die Grundlage für ihr Tun entzogen. Meist jedoch bemerken Spammer überhaupt nicht, wenn ihre Links gefiltert werden, und dem Formularbetreiber bleiben zumindest die dämlichen, oder zumindest unschönen Spameinträge – wenn auch ohne Werbelinks – im Kommentar, Forum, oder Gästebuch. Außerdem nimmt man den echten Kommentatoren dadurch die Möglichkeit, nützliche Verweise zum Gesagten anzubringen.
Eine Alternative besteht darin, alle oder zumindest verdächtige Kommentare zunächst in eine Liste zu stellen, die man vor der Veröffentlichung durchsehen und einzeln freischalten muss. Dies bringt jedoch in der Regel einen recht hohen, manuellen Aufwand mit sich.

Wir wollen also Links nicht grundsätzlich verbieten und auf persönliche Kontrolle verzichten. Zusätzlich zur bereits angesprochenen Plausibilitätsprüfung kann man dann weitere Kontrollmechanismen einbauen, die Spammer identifizieren könnten. Gute Erfahrungen habe ich mit Listen von Bad Words gemacht, also Schlüsselwörter, die im Eingabetext (in reinem Text und in Linkadressen) nicht vorkommen dürfen wie etwa »casino«, »viagra«, etcetera. Ebenfalls hilfreich sind logische Prüfungen: Wird ein vorgegebenes Maximum von Links pro Eintrag überschritten? Wiederholen sich Ziel-Domains auffällig in mehreren Links eines Eintrags?

Anmerkung: Ich werde selbstverständlich nicht hier in aller Öffentlichkeit herausposaunen, wie genau ich Formularspammer identifiziere. Dies würde meine Bemühungen sehr schnell ad absurdum führen, wenn Werbemüller sich auf das Umgehen meiner Algorithmen einschössen. Filterregeln sind das A und O der Strategie, und ein jeder muss sich selbst überlegen, wonach er sucht und was er ausschließt.

Mit einer Kombination logischer und inhaltlicher Prüfungen gelingt es jedoch in der Regel, annähernd alle Formularspammer zu erkennen. Die Kunst besteht darin, zusätzlich zu den Spammern nicht all zu viele ernsthafte Kommentatoren auszuschließen. Um die Balance zwischen möglichst vielen erkannten Spammern und möglichst wenigen falsch positiv eingestuften Besuchern auszutarieren, empfiehlt sich das Anlegen eines Spamprotokolls, das einigermaßen regelmäßig zu prüfen ist, um die Filtereinstellungen zu optimieren.

Korrekt erkannte Spammer sollte man anhand eines definitiven Merkmals in eine Liste eintragen. Als Kennzeichen empfiehlt sich die IP-Adresse. Hat man einmal einen Spammer enttarnt, kann man von da an alle Eintragsversuche von der gleichen IP-Adresse ohne jegliche inhaltliche Prüfung als Spam blockieren.

^

Behandlung von Formularspammern

Erstes Ziel ist naturgemäß, den Spammer am Eintrag seiner Werbebotschaft zu hindern. Dies kann für den einen oder anderen Betreiber bereits ausreichend sein. Spammer nehmen jedoch in der Regel keine Notiz davon, ob ihre Müllversuche erfolgreich waren oder ob sie blockiert wurden. Automatische Spambots rennen unbeirrbar und beständig gegen alle Formulare an, die sie wenigstens einmal erfolgreich ausfüllen konnten. Formularadressen werden unter Spammern offenbar sogar gehandelt oder getauscht. Diese Tatsachen werden einem schnell klar, wenn man ein Spamprotokoll führt.

Man kann über solche blinden Wiederholungstäter die Schultern zucken. Allerdings werden auch nicht erfolgreiche Seitenaufrufe auf die Dauer lästig, wenn die Anzahl der Spamversuche täglich in die Hunderte oder gar Tausende steigt. Das kostet irgendwann richtig Geld für das unerwünschte Datentransfer-Volumen. Es gilt also, über die Identifikation hinaus etwas gegen die lästigen Besucher zu unternehmen.

Am einfachsten ist es, bereits an der Eingangstüre der eigenen Website ein Umleitungsschild für Spammer aufzuhängen. Zählt man die Anzahl von Spambesuchen für jede IP-Adresse mit, lässt sich leicht herausfinden, woher störende Dauergäste kommen. Solche Hausierer weist man dann über einen Eintrag in der .htaccess Datei ab, bevor sie die eigenen Webseiten erreichen; der notwendige Datentransfer bleibt minimal:

RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^195.225.177.131
RewriteRule ^.* http://www.weg-da.com/

Zwei Problemstellungen sind anhand dieses Beispielkodes erkennbar: Was macht man mit Spammern, die einen breiteren IP-Bereich – also nicht nur eine einzelne IP-Adresse – verwenden? Und wohin zum Teufel soll man die Spammer eigentlich schicken?
Was geht? — Über den .htaccess-Eintrag lassen sich ganze IP-Ranges blockieren. Die Umleitung könnte man auf eine eigene, schlanke oder gar standardisierte Fehlerseite einrichten:

RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^195.225.177.131 [OR]
RewriteCond %{REMOTE_ADDR} ^193.93.236. [OR]
RewriteCond %{REMOTE_ADDR} ^216.32.
RewriteRule ^.* - [F]

Eine einzige RewriteRule für mehrere RewriteCond kann man mit Hilfe des Verknüpfungsoperators [OR] ganz unten anstellen. Ohne Verknüpfung müsste nach jeder Bedingungszeile eine eigene Regelzeile zur Umleitung eingefügt werden.
Vorsicht: Die Ausweitung auf umfangreiche IP-Adressbereiche ist zweischneidig. Einerseits schließt man natürlich zuverlässig alle möglichen Spammer aus diesem Adressfeld aus. Andererseits können auch unschuldige Besucher aus dem gleichen Bereich nicht auf Ihre Webseiten zugreifen. Wer alles außen vor bleibt, lässt sich bei Umleitung über .htaccess nicht mehr nachvollziehen. Umleitungen sollten also sparsam und wohl überlegt eingesetzt werden.

Diskussionswürdig ist auch die Umleitungsadresse. Warum sollte man Spammer auf eigene Fehlerseiten schicken? Auch dies verursacht zusätzliches Transfervolumen, wenn auch in geringem Umfang. Bösartiger wäre es allerdings, unerwünschte Besucher auf deren eigene Müllseiten umzuleiten. Dies wäre einfach dadurch zu berwerkstelligen, indem man zu jeder Spam-IP auch eine Zieladresse protokolliert, um diese dann als Umleitungsadresse in .htaccess zu verwenden.

Die geschilderte Methode der Umleitung funktionierte im Versuch sehr zufrieden stellend: Über eintausend tägliche Spamversuche konnten damit auf unter zehn reduziert werden, die Auswertung des Spamprotokolls und die notwendige Ergänzung von .htaccess lässt sich einfach automatisieren, so dass auch ohne menschlichen Pflegeaufwand stets eine aktuelle Umleitungsliste vorhanden ist.

^

Rehabilitation?

Langfristig handelt man sich mit Spamprotokollen allerdings ein Datenproblem ein. Die Liste der Spam-IPs wird immer länger, weil täglich neue hinzukommen; irgendwann nehmen die Prüfungen und Einträge in .htaccess Umfänge an, die die Performanz der eigenen Seiten in Frage stellt. Man sollte sich also auch überlegen, ob man Spam-IPs auf geeignete Weise rehabilitieren und deren Nutzern eine neue Chance einräumen möchte.

Zu diesem Zweck protokolliere ich neben der IP-Adresse und dem beworbenen Ziel auch die Anzahl der Spamversuche und den Zeitpunkt der letzten Attacke. Im Rahmen eines regelmäßig ablaufenden Hintergrund-Prozesses werden IP-Einträge, die länger zurück liegen aus der Blockadeliste aussortiert, zur Sicherheit aber in einer persönlichen Hall of Spam notiert.

Erst in diesem Moment – wenn nämlich eine aussortierte IP-Adresse erneut auftaucht – wird man sehen, ob der Spammer (mit der gleichen IP) noch immer gegen das Formular anrennt. Ist dies der Fall, wandert er eben wieder ins Spamprotokoll und wird wieder durch einen Eintrag in .htaccess blockiert. Bei der nächsten Prüfung auf Rehabilitation der gleichen Adresse stelle ich dann durch Abgleich mit der Hall of Spam fest, seit wann und wie oft die Adresse missbraucht wird. Penetrante Wiederholungstäter lassen sich auf diese Weise für längere Zeit oder gar für immer ausschließen.

Mit Hilfe der Rehablitation ist es mir gelungen, die aktuelle Protokollliste auf stabiler Länge und die Anzahl der Spamattacken trotzdem im täglich einstelligen Bereich zu halten.

^

Zusammenfassung

Insgesamt führe ich also zwei Listen: 1. Das Spamprotokoll mit Anzahl der Attacken, dem Zeitstempel des letzten Versuchs und einer der beworbenen URLs, sowie 2. die Hall of Spam mit IP-Adresse, der Anzahl der Rückfälle nach versuchter Rehabilitierung und dem Zeitstempel des letzten Rückfalls.

Im Tagesrhythmus wird aus dem Spamprotokoll automatisiert eine aktuelle Liste von Umleitungen erzeugt und in der .htaccess Datei abgelegt. Im Monatsrhythmus wird das Spamprotokoll mit den Einträgen in der Hall of Spam abgeglichen: Je häufiger eine IP-Adresse in der Hall of Spam eingetragen wurde, desto länger dauert es, bis sie aus dem Spamprotokoll gelöscht wird. Einmal-Spammer verschwinden auf diese Weise, massive Angreifer werden auf immer längere Zeitabschnitte, letztlich ohne Möglichkeit einer weiteren Rehabilitierung blockiert.

Diese Vorgehensweise kann ich wärmstens empfehlen. Das Anlegen der Protokolle und die notwendigen Abgleiche sind ohne außergewöhnliche Programmierkenntnisse sowohl im Datenbankumfeld, als auch in Flat Files durchführbar. — Viel Erfolg!

^