Blacklisting von gemeldeten IP-Adressen auf Linux-Maschinen mit iptables und ipsets

Um meine Server noch etwas mehr gegen unerwünschte „Gäste“ abzusichern, habe ich mir zunächst eines, kurz darauf ein zweites Skript zusammengebastelt. Der Quellcode ist auf github frei verfügbar. Ein paar Linux-Grundkenntnisse sind natürlich von Vorteil 😉

Auch wenn fail2ban mit strammen Einstellungen (je nach Dienst: maximal 1-2 Anmeldeversuche) schon >=99% der Angreifer von einem WEB-Server fern hält, kann man ja nie wissen. Deshalb hatte ich die Idee, das Ganze noch etwas sicherer zu machen und bereits von anderen gemeldete IP-Adressen von vornherein komplett zu blockieren.

Hierzu verwende ich die öffentlich und frei zugänglichen Blacklists von
https://www.blocklist.de,
lade diese per cronjob und einem Shell-Skript in regelmäßigen Zeitabständen herunter und füge diese in die iptables bzw. ipsets ein.

Beide Versionen des Skripts sind auf github unter
https://github.com/brkai/ipblocking
verfügbar. Da github international ist, sind die Kommentare in meinen Skripts und die Beschreibung in englisch.
Man muss natürlich auch noch selbst etwas Hand anlegen um alles auf die eigenen Bedürfnisse anzupassen.

‚ipblocking.sh‘ ist die erste / ursprüngliche Version, die ausschließlich mit iptables arbeitet, aber auch recht unübersichtlich wird, wenn man an den iptables noch weitere Veränderungen vornehmen möchte. Die exportierte Liste „all“ unter https://www.blocklist.de/de/export.html hat z.B. mehr als 20000 Einträge.

Das Skript funktioniert 😉

‚ipblocking-ipset.sh‘ ist die verbesserte Variante, so bleiben die iptables selbst übersichtlicher und es müssen dort nur 2 Regeln für die Blacklists erstellt werden.
Den Rest übernimmt dann IPsets.

Um ‚ipblocking-ipset.sh‘ zu verwenden muss mindestens das Paket ‚ipset‘ installiert werden (Debian und darauf basierende Distros: apt install ipset). Damit nach einem Neustart die Sets wieder hergestellt werden ist das Paket ‚ipset-persistent‘ empfehlenswert 😉

…. viel Spaß beim Absichern
Kai

P.S.:
Ein Teil zum blocken bestimmter Länder anhand von Geo-IP Daten könnte noch folgen …