Spam in WordPress reduzieren durch blockieren von IP-Adressen mit iptables

Wenn man einen Blog bzw. eine Webseite mit Kommentarsektion betreibt, ist Spam in den Kommentaren ein leidiges Thema. Zwar gibt es für WordPress Tools, die den Spam schon ziemlich gut aussortieren und in einen Spam-Ordner packen, aber man muss sich trotzdem dann auch diese Einträge durchsehen, denn man möchte ja nicht versehentlich einen ernst gemeinten Beitrag löschen, der zu Unrecht im Spam-Ordner gelandet ist.
Das kostet Zeit und nervt einfach!

Zum Glück muss man da ja nicht tatenlos zusehen – zumindest, wenn man einen Root-Access zu seinem Linux-Server hat.

Zuletzt hatte sich ein Bot auf meine Seite eingeschossen und mir jeden Tag über 30 Spam-Kommentare hinterlassen. Das war mir dann irgendwann zu viel.
Antispam Bee, das alle richtig aussortiert und in den Spam-Ordner gesteckt hat, ist nämlich so freundlich und teilt einem die IP-Adressen derjenigen mit, die einem diesen Spam hinterlassen haben. Und es stelte sich über Tage heraus, dass es immer die gleichen drei IP-Adressen waren.
Also geht es jetzt darum, diese drei IP-Adressen zu blockieren.

Dafür gibt es unter Linux die IPTables. IPTables ist auf so ziemlich jeder Linux-Maschine vorinstalliert und ist ein Programm zur Konfiguration einer Firewall – daher auch leider beliebig komplex. Eine komplette Ausführung über IPtables wäre daher an dieser Stelle deutlich zu viel.
Kurz gesagt stellt es Regeln auf, was der Linux-Kern wann und wie mit welcher Anfrage machen soll.

Wenn man jetzt eine IP-Adresse blockieren möchte, reicht eine einfache Zeile im Terminal:

iptables -A INPUT -s IP-Adresse -j DROP

Wobei die IP-Adresse mit der zu blockierenden Adresse ersetzt werden muss.

Diese Zeile bewirkt, dass alles, was von dieser IP-Adresse kommt, sofort in den Orkus geschickt und keiner Antwort gewürdigt wird. Der Server spielt also für diese IP-Adresse toter Mann.
Auf die gleiche Weise können dann auch weitere IP-Adressen gesperrt werden.

Leider werden diese Regeln nicht dauerhaft gespeichert sondern gehen beim Neustart verloren. Um die Regeln nach einem Neustart wieder herzustellen, müssen sie in einer Datei abgespeichert werden.
Unter Debian/Ubuntu geht das mit dem Befehl

iptables-save > /etc/firewall.conf

Der Name der Datei ist dabei beliebig.

Die Wiederherstellung der Regeln bei einem Neustart geht dann mit dem Befehl

iptables-restore < /etc/firewall.conf

Damit dieser Befehl beim Start ausgeführt wird, muss er in irgendein Startup-Script gepackt werden. Ich nutze dafür /etc/rc.local.
Also die Datei mit dem Editor öffnen

nano /etc/rc.local

und diese Zeile vor dem "exit 0" einfügen.

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

iptables-restore < /etc/firewall.conf

exit 0

Datei abspeichern und fertig.
Schon hat man ein wenig mehr Ruhe und deutlich weniger Spam als vorher ;-).

Spamaufkommen nachher
Spam Aufkommen

Sollte man irrtümlich eine falsche IP blockiert haben, kann man die betreffende Regel einfach mit

iptables -D INPUT -s IP-Adresse -j DROP

wieder löschen.

2 Gedanken zu “Spam in WordPress reduzieren durch blockieren von IP-Adressen mit iptables

Schreibe einen Kommentar