In den letzten Tagen häufen sich verschiedene SYN Flood, FTP oder Mailserver Bruteforce Angriffe. Aktuell sind ca. 10 Server davon betroffen, die von einer überschaubaren IP-Menge regelmäßig heimgesucht werden. Da es sich hierbei um Managed Server handelt und wir uns nicht immer die Arbeit machen wollten, auf jedem Server einzelnd die IP-Blocks durchzuführen, haben wir ein kleines „Blacklist“ Script geschrieben was wir der Internetgemeinde kostenfrei zur Verfügung stellen.

IPTables Script auf dem Server

Auf dem Server lädt man folgendes Script herunter:

 

wget http://mirror.ip-projects.de/ip-block.sh

Das Script ist wie Folgt aufgebaut:

#!/bin/bash
export PATH="/bin:/usr/bin:/sbin:/usr/sbin"
echo "Flushing iptables rules..."
sleep 1
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
wget http://mirror.ip-projects.de/ip-blacklist
cat ip-blacklist | xargs -n1 iptables -I INPUT -j DROP -s
rm ip-blacklist
rm ip-blacklist.*

 

Der erste Teil bis wget sorgt dafür, dass vorhandene IPTables Regeln gelöscht werden. Wenn Ihr also bereits IPTables einsetzt und konfiguriert habt, solltet Ihr diesen Teil entsprechend anpassen. Das resetten der Regeln ist wichtig, da IPTables etwas „Dumm“ ist, denn es erkennt nicht, ob eine IP bereits in der Liste der blockieren IP-Adressen vorzufinden ist und fügt eine mögliche vorhandene IP-Adresse stupide einfach nochmal hinzu. Das Resultat wäre, dass irgendwann der IPTables Cache voll ist. Auch könnte man ohne das resetten von IPTables IP-Adresse nicht mehr von der Blacklist global entfernen.

 

Der Zweite Teil des Scriptes ab wget regelt das herunterladen der Blacklist (das ip-blacklist File ist nur eine Datei, die in jeder Zeile eine IP vorweist) und das anschließende einbinden der Blacklist in die IPTables Dropliste. Hier kann das Script natürlich um beliebig viele andere Blacklisten erweitert werden. Wichtig ist nur, dass die URL angepasst wird, wo die IP-Liste gefunden werden kann.

 

Im letzten Abschnitt werden nur noch die heruntergeladenen Blacklistfiles entfernt. Da es vorkommen kann, dass bei einer Überlastung des Servers die Blacklisten nicht vollständig gelöscht werden, ist hier auch der .* rm Befehl gesetzt.

 

 

Script regelmäßig ausführen

Damit sich die Liste automatisch aktualisiert, sollte man einen Cronjob anlegen, der das Script in regelmäßigen Abständen ausführt. Dafür zunächst die Schreibrechte anpassen und anschließend den Cronjob installieren.

 

chmod 775 /root/ip-block.sh

 

crontab -e

 

Dort ganz am Ende der Datei die Zeilen

 

@reboot /root/ip-block.sh
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /root/ip-block.sh

 

hinzufügen. Die Erste Zeile bewirkt, dass bei einem Neustart des Servers automatisch der IP-Block erfolgt, die Zweite Zeile bewirkt, dass sich die Blockliste alle 5 Minuten aktualisiert. Hier kann die Zeit der Aktualisierung flexibel geregelt werden.

 

Die Einrichtung ist damit erfolgreich abgeschlossen.