Früher hatten Bots noch "Anstand". Da wurden die Seiten aufgerufen, es wurde sich durchgehangelt und dann gegebenenfalls automatisiert angemeldet um anschließend seine _eine_ SPAM Nachricht zu hinterlassen. Naja okay – etwas Wunschdenken ist da sicherlich dabei. Zeiten ändern sich und so auch die Vorgehensweise der Bots.

In unserem gSales vBulletin Forum (übrigens ein Magnet für so Geschichten) hatten wir seit einiger Zeit jede Menge automatisierte Anmeldungen aus Fernost. Hierbei wurde die register.php von vBulletin mittels einem POST Request und den entsprechenden Parametern direkt aufgerufen um sich im Forum zu registrieren. Mehrere Tausend mal im Monat! Jede Art von Sicherheitsabfragen und Captchas waren hierbei nutzlos und brachten höchstens in den ersten Tagen etwas Besserung. Die manuelle Freischaltung von neu registrierten Benutzern erwies sich als äußerst zeitintensiv, umständlich und auch sehr nervig.

Kurzes Brainstorming … schnelles Shell-Script.

Die IP-Ranges der Länder Deutschland, Österreich und Schweiz werden nun abgerufen und in eine .htaccess Datei gepackt welche die register.php von vBulletin nur noch für eben diese Netzbereiche zugänglich macht. Sehr restriktiv was Neuanmeldungen angeht aber bei uns sehr effizient da wir ein deutschsprachiges Support-Forum betreiben mit sehr viel mehr lesern und betrachtern als Registrierungen (aus dem Ausland).

Vielleicht hilft es dem ein oder anderen als erster Ansatz für seine persönliche SPAM-Abwehr.

#!/bin/bash

ISO="de at ch"
WGET=/usr/bin/wget
GEN=/root/htaccessgen
E=/bin/echo

$E "<Files register.php>" > $GEN
$E "Order deny,allow" >> $GEN

for c in $ISO
do
tmpList=/root/$c.zone
$WGET -O $tmpList http://www.ipdeny.com/ipblocks/data/countries/$c.zone
while read ListLine
do
$E "allow from "$ListLine >> $GEN
done < $tmpList
/bin/rm $tmpList
done

$E "Deny from all" >> $GEN
$E "</Files>" >> $GEN
$E "" >> $GEN
$E "AddDefaultCharset ISO-8859-1" >> $GEN

Die Länder in der ISO Variable entsprechend ergänzen (verfügbare Codes gibt es hier http://www.ipdeny.com/ipblocks/data/countries/) und das Script oder die generierte Datei am Ende ggf. noch um eigene .htaccess Anweisungen anpassen. Die generierte "htaccessgen" anschließend als .htaccess in das betroffene vBulletin Verzeichnis kopieren.