Nerdige Gedanken vom und zum Radfahren

vBulletin mit Fail2Ban schützen


fail2ban

Einer unserer Kunden nutzt eine ältere Version von vbulletin. Wie das bei bekannten Foren üblich ist, versuchen sich permanent Bots und Spammer zu registrieren, um dann im Forum Werbung zu posten und Links zu platzieren. Hier eine kurze Anleitung, wie das Problem mit Fail2Ban gelöst werden kann.

Fail2Ban ist eine kleine Software, mit der beliebige Logilfes nach wiederkehrenden Aktionen durchsucht werden können. Werden solche Aktionen in einem bestimmten Zeitfenster (bspw. 10 Minuten) erkannt, kann Fail2Ban die betreffenden IPs durch Eintrag in die iptables sperren.
Die Konfiguration ist recht einfach: 

  1. Man formuliert mit RegEx ein oder mehere Suchparameter in einem Logile
  2. Man benennt das Logile in dem gesucht werden soll
  3. Man grenzt den Zeitraum und die maximale Anzahl der Aufrufe je IP ein

Beim vbulletin erkennen wir die Registrierungsversuche unter anderem durch den Aufruf der Captcha-Images. Genau das Image soll Bots ja von der Registrierung abhalten. Die einfachen Bots rufen die Registrierungsseite dann wieder und wieder und wieder auf und versuchen das Captcha zu lösen oder einfach mit Zufallswerten einen Treffer zu landen. Da jede dieser Versuche entgegengenommen, geprüft und benatwortet werden muss, entsteht dem Server dadurch eine unnötige Last. In unserem Fall versuchen mehrere Dutzend Bots mehrere Versuche pro Sekunde. An einem durchschnittlichen Tag sind das schnell mal mehr als 10.000 Vorgänge.
Das trifft natürlich nicht nur für vbulletin, sondern auch für alle anderen Foren zu. Die folgende Config bezieht sich auf vbulletin 3.8, kann aber sicherlich auch ohne viel Mühe für ein anderes Forum wie phpbb, smf, mybb usw angepasst werden.

Auf die allgemeine Konfiguration von Fail2Ban möchte ich hier verzichten, dazu gibt es bereits sehr gute Anleitungen. Hier nur schnell die nötigen Einstellungen:

/etc/fail2ban/jail.con (oder jail.local - je nach Setup)

[vbulletin]
enabled = true
port = http,https
filter = vbulletin-register
logpath = /var/log/apache2/forum_access.log
maxretry = 4

/etc/fail2ban/filter.d/vbulletin-register.conf (als neue Datei erstellen)

[Definition]
failregex = ^<HOST> .*"GET .*image\.php\?type=regcheck\&imagehash.*
ignoreregex =

Danach dann Fail2ban neu starten und fertig. 

Aber ein paar wichtige Hinweise zur Performance:

Fail2Ban wird hier auf ein komplettes Apache-Accesslog angewendet. Das ist bei sehr großen und viel besuchten Sites nicht unbedingt eine gute Idee.
Generell sollte logrotate für das Logile auf einen Tag eingestellt sein. Wenn die Site sehr viel Traffic hat, würde ich empfehlen das Logfile möglichst klein zu halten. Möglich wäre das zum Beispiel durch das Aufsplitten der Logiles direkt durch die Apache-Config oder durch einen Cron, der die notwenigen Zeilen aus dem großen Logile per grep in ein kleineres kopiert und nur das kleinere File wird dann von Fail2Ban durchsucht.

Danach herrscht Ruhe im Karton und die "guten" Bots (soweit es die gibt) sollten nach einiger Zeit das Forum auch aus Ihrer Versuchsliste streichen weil sie merken, dass sie hier wohl keinen Erfolg mehr haben werden.

Viel Erfolg!

« Zurück zur Übersicht

Kommentare zu vBulletin mit Fail2Ban schützen

comments powered by Disqus

Latest zum Radfahren


Latest vom Radfahren