Quick'n dirty Script. (Der echo Befehl muss in einer Zeile stehen, oder wie hier gezeigt durch ein \ am Ende concateniert werden)
(Verbesserte Version von Philipp, siehe Kommentar #1)
#!/bin/bash
DATABASE=dbname
DBUSER=dbuser
DBPASS=geheim
echo "SELECT DISTINCT ip FROM serendipity_spamblocklog WHERE useragent = '' \
AND FROM_UNIXTIME( timestamp ) >= DATE_SUB( CURDATE( ) , \
INTERVAL 1 HOUR )"|mysql -D $DATABASE \
-u $DBUSER -p$DBPASS >/tmp/spam.log
set `cat /tmp/spam.log|grep -v ip`
iptables -F
for spamip in $*
do
iptables -I INPUT -s $spamip -j DROP
shift
done
#iptables -L
Zuerst habe ich mit INTERVAL 1 DAY gearbeitet, doch die Anzahl der Treffer sind dann so hoch, das iptables mit memory allocation error aussteigt. Jetzt, bei einen INTERVAL von 1 HOUR sind es ca. 4500, damit kommt iptables zurecht. Das script birgt auch Risiken, nicht nur, dass das Datenbankpasswort lesbar vorhanden ist, es ist auch vorstellbar, das man sich selber ausperrt, also liebe sysadmins, nur auf eigene Gefahr anwenden. Notfalls 60 Minuten warten, dann sollte man wieder reinkommen, wenn nicht, DSL-Verbindung abbeuen und erneut einwählen, durch die andere IP kann die Sperre umgangen werden,. Aber wem sage ich das?
Ich bin jetzt mal gespannt, wie sich die Sache entwickelt und ob die Terrorflut zurückgeht. Ps: Merkwürdigerweise funktioniert der code block nicht mehr so wie sonst, keine Ahnung woran das liegt. Ich habe das hier extra mit dem einfachen Editor bearbeitet, bringt aber auch nichts, naja eben noch eine Baustelle. Wer mit der Darstellung seine Schwierigkeiten hat möge Bescheid sagen, ich kann das Script auch im Downloadbereich zur Verfügung stellen, aber momentan ist's ja nur so'n kleiner 6 Zeiler da lohnt sich das eigentlich nicht.
140521 Spam Kommentare geblockt