Direkt zum Inhalt

Fail2Ban im Kampf gegen WordPress-Spam!

Heute mache ausnahmsweise einmal ich eine Kampfansage und zwar an all die Spammer, die versuchen ihre sinnlosen Kommentare auf Blogs zu veröffentlichen. Erst die Kommentarfunktion machte Blogs zu dem erfolgreichen Publishingtool, das sie heute sind: Internetplattformen mit der Möglichkeit zum Meinungsaustausch. In Zeiten vor WordPress, Joomla und Co. waren Webseiten in der Regel statische Gebilde und im besten Fall zur Kontaktaufnahme mit einem Gästebuch augestattet. Schon zu diesen Urzeiten wurden Gästebücher missbraucht um Spam in Form von Links zu verbreiten. Und nur darum geht es Spammern: Ihre Links auf möglichst vielen Internetseiten im ganzen Web zu verbreiten. Und seitdem ich im Jahr 2008 mein erstes WordPress installiert habe, kämpfe ich mit solchem Spam. Häufig ist die Datenbank mit bis zu tausenden Spam-Einträgen wie diesem geflutet:

Autor: lululemon outlet
Webseite: orph[URAFNSPAMMER]eon.org
IP: 98.126.4.34
Eingereicht am 24.02.2014 um 13:03
Kommentar:
lululemon outlet

Dieser Spam erzeugt nicht nur Last auf dem Web- und Datenbankserver sondern verbraucht auch wertvolle Bandbreite, sowohl auf meinem Server als auch im routenden Internet. Was habe ich nicht schon alles versucht um Spam fernzuhalten. Einzig das Deaktivieren der Kommentarfunktion schien wirklich zu helfen aber das war nicht mein Anliegen. Sinnvolle Kommentare sind schließlich herzlich willkommen. Zuletzt fand ich eine Anti-Spam-Lösung in Form des WordPress-Plugins „Invisible Captcha„. Das Plugin prüft, ob es sich beim Kommentierenden um ein Programm (Bot) oder einen „echten“ Besucher handelt. Das Plugin funktioniert einwandfrei, der Spam landet nicht mehr in den Kommentaren sondern wird direkt als Spam klassifiziert. Was bleibt ist die Last auf der Datenbank und der Traffic auf dem Server. Mir reichte es nun und deshalb habe ich auf dem Debian-Server das Sicherheitstool „Fail2Ban“ installiert und so konfiguriert, dass wiederkehrende Spammer für 30 Tage ausgesperrt werden. Dazu legte ich für fail2ban folgende Filter-Konfiguration an:

/etc/fail2ban/filter.d/apache-wpspam.conf

[Definition]
failregex = ^.* - - .*"POST /wp-comments-post.php HTTP.*" 403 [0-9]{1,} ".+" ".+"$
ignoreregex =

Anschliessend editiere ich die Konfigurationsdatei von fail2ban:

/etc/fail2ban/jail.conf

[apache-wpspam]
enabled = true
filter = apache-wpspam
port = http,https
logpath = /var/log/apache2/access.log
maxretry = 2
findtime = 86400
bantime = 2592000

Nach dem Neustart von Fail2Ban mit dem Befehl

/etc/init.d/fail2ban restart

überwacht fail2ban das Apache-Logfile und sucht nach dem im Filter definierten String: Das Absenden eines Posts auf wp-comments-post.php. Natürlich sollen Kommentare geschrieben werden können, deswegen definiere ich maxretry = 2 und findtime = 86400 – damit ist es generell jedermann erlaubt, innerhalb von 24 Stunden zweimal einen Kommentar zu schreiben. Das passiert eher selten 😉

Nicht so bei WordPress-Spammern – wurde der Blog einmal in die Routine eines Spambots aufgenommen, kommt der Bot immer und immer wieder um Kommentare zu veröffentlichen. Auf meinem Server ist nun nach zwei Versuchen Schluß damit: Fail2Ban spürt die Bots auf, sperrt per iptables den Zugriff von deren IP und verbannt die IP für ganze 30 Tage (bantime = 2592000). Last weniger, Traffic weniger. Das Resultat nach 24 Stunden fail2ban-Anti-Spam-Einsatz:

/var/log/fail2ban.log

2014-02-23 13:54:17,727 fail2ban.actions: WARNING [apache-wpspam] Ban 185.4.253.67
2014-02-23 16:04:58,798 fail2ban.actions: WARNING [apache-wpspam] Ban 199.15.233.131
2014-02-23 21:34:55,321 fail2ban.actions: WARNING [apache-wpspam] Ban 31.184.238.42
2014-02-24 05:22:21,017 fail2ban.actions: WARNING [apache-wpspam] Ban 23.94.101.49
2014-02-24 05:34:06,809 fail2ban.actions: WARNING [apache-wpspam] Ban 199.15.233.162
2014-02-24 05:34:34,881 fail2ban.actions: WARNING [apache-wpspam] Ban 185.5.45.203
2014-02-24 06:29:22,462 fail2ban.actions: WARNING [apache-wpspam] Ban 5.255.75.160
2014-02-24 06:51:32,985 fail2ban.actions: WARNING [apache-wpspam] Ban 5.254.130.124
2014-02-24 10:01:35,279 fail2ban.actions: WARNING [apache-wpspam] Ban 176.31.9.223

Fail2Ban ist generell ein sehr mächtiges Tool, mit dem sich sicherheitstechnisch allerhand anstellen lässt. Man kann damit im Prinzip jeden Dienst, der in irgendeinem Logfile auf dem System protokolliert wird, überwachen und gegen Missbrauch sichern.

Ich würde mir wünschen, dass dieses kleine Anti-Wordpress-Spam-Howto anderen Blogbetreibern und Admins gute Dienste im Kampf gegen WordPress-Spam leisten wird 🙂

One Comment