Permanent aussperren mit Fail2Ban - Linux-Scout.de

Blog über Linux und die IT-Welt!

Permanent aussperren mit Fail2Ban

31. Mai 2014 Max Schmidt 2 Comments

Heute gehen wir mal auf ein relativ kleines und übersichtliches Thema ein. Jeder von euch der einen eigenen Root- oder vServer hat wird wahrscheinlich Fail2Ban im Einsatz haben. Wenn nicht, solltet ihr diesen Server ganz schnell kündigen 🙂
Es sollte bekannt sein, dass Fail2Ban anhand von definierten Filterregeln unerwünschte Angreifer via IPTables temporär sperren kann, um weitere Angriffe (bspw. ein Bruteforce auf den SSH Server) zu unterbinden.
Oft passiert es, dass ein Angreifer aber nicht nach einer Sperre aufgibt. Er versucht es immer weiter. Sobald die Sperre abgelaufen ist, kommen weitere Anmeldeversuche rein. Ein guter Admin kontrolliert regelmäßig Logfiles und wird dadurch sehen, wenn eine IP Adresse oft im fail2ban.log steht.

Damit ein solcher Angreifer keine weiteren Versuche bekommt, kann man ihn manuell permanent sperren. Dies sollte man selbstverständlich nur tun, wenn man sich komplett sicher ist, dass es sich wirklich um einen Angreifer handelt. Meiner Meinung nach kann man sich allerdings nach spätestens 5 Bans durch Fail2Ban sicher sein, dass das kein User ist, der sein Passwort vergessen hat.

Einrichten eines IPTables Scripts

Um Angreifer permanent auszusperren, benötigen wir ein kleines Shell-Script in das wir neue Dauersperren eintragen können. Wir können das Script eigentlich in jedem Verzeichnis ablegen, das nicht durch Webserver o.ä. erreichbar ist. Ich lege mein Script im Ordner  /root/iptables/ unter dem Namen  iptables.sh ab.
Wir legen also zuerst per  mkdir /root/iptables/ einen neuen Ordner für unser Script an und erstellen dann mit  touch /root/iptables/iptables.sh eine neue Shell-Datei. Anschließen müssen wir diese noch ausführbar machen. Das geschieht mit dem Kommando  chmod +x /root/iptables/iptables.sh .

Fail2Ban Startscript anpassen

Damit die von uns selbst definierten Sperren beim Start vom Fail2Ban Dienst auch angewendet werden, müssen wir eine kleine Änderung im Init-Script von Fail2Ban ( /etc/init.d/fail2ban) vornehmen. Um genau zu sein, müssen wir nur in der Funktion „do_start()“ vor dem return-Statement die Zeile  sh /root/iptables/iptables.sh einfügen. Das würde dann in etwa so aussehen:

Fail2Ban

Ändern des Init-Scripts von Fail2Ban

In diesem Bild habe ich den Editor „nano“ genutzt, welchen ich sehr empfehlen kann. Wenn wir nun diese Zeile eingefügt haben, können wir die Datei abspeichern.

Eine permanente Sperre einer IP-Adresse erstellen

Wenn wir im Logfile von Fail2Ban einen ungebetenen Gast gefunden haben, der sich durch unsere nicht vorhandene Gastfreundschaft nicht abschrecken ließ, dann wird es wohl Zeit für unsere erste selbst definierte Dauersperre. Diese ist schnell erstellt:

Wir öffnen die vorher erstellte Datei  /root/iptables/iptables.sh mit einem Editor unserer Wahl und fügen dann diese Zeile ein:  iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP
Selbstverständlich müsst ihr die IP-Adresse – hier durch „xxx.xxx.xxx.xxx“ gekennzeichnet – entsprechend anpassen. Anschließend wird die Datei gespeichert und wir starten mit dem Befehl  /etc/init.d/fail2ban restart den Fail2Ban Dienst neu, damit unsere neue Sperre übernommen wird. Nun ist die angegebene IP für immer gesperrt.

Profi-Tipp

Ich selbst finde sehr oft chinesische IP-Adressen in meinem Fail2Ban Logfile. Da ich Betreiber von deutsch-englischen Websites und Diensten bin, kann ich mir eigentlich zu 100 % sicher sein, dass es keine Kunden von mir sind. Daher habe ich mir angewöhnt, bei Vorkommnissen von chinesischen Angreifern einfach das komplette /24 Subnetz der Angreifer-IP zu sperren, damit sich die Möglichkeit der Angriffe deutlich reduziert. Dies ist ganz einfach:

Nehmen wir als Beispiel die IP „115.85.194.82“, die wirklich oft in meinen Logfiles stand. Die Herkunft dieser IP können wir sehr schnell über die Website www.utrace.de überprüfen. Dort einfach die IP-Adresse oben in das Suchfeld eintragen und auf „Suchen“ klicken. In diesem Fall ist es wie gesagt eine chinesische IP und wir wollen somit das ganze Subnetz blockieren. Dafür fügen wir mehr oder weniger die gleiche Zeile in unser iptables.sh Script ein, nur ein wenig abgeändert:  iptables -A INPUT -s 115.85.194.0/24 -j DROP

Wie man sieht, wird der letzte Block der IP-Adresse durch eine „0“ ersetzt und die Subnetz-Maske „/24“ angehängt. Dadurch blockieren wir alle IP-Adresse von 115.85.194.1 – 115.85.194.255 und haben folglich eine sehr große Reichweite. Selbstverständlich kann man auch andere Subnetz-Größen blockieren. Hier gilt es, Vorsicht walten zu lassen, wenn man sich nicht mit Subnetzen auskennt.

Previous Post

Next Post

Comments

  1. Stefan Warning
    14. Juli 2016 - 20:08

    Vielen Dank für die tolle Anleitung.
    Wie kann ich denn prüfen, ob die iptables.sh auch ausgeführt wir und greift?

    Viele Glüße
    Stefan

    • Max Schmidt
      17. Juli 2016 - 13:37

      Hi Stefan,

      zuerst einmal kannst du natürlich prüfen ob IPTables und Fail2Ban überhaupt laufen. Um dann zu testen, ob die eingestellten Regeln überhaupt funktionieren, könntest du dir mit „iptables -L -n“ alle eingestellten Regeln anzeigen lassen.

      Lg,
      Max

Kommentar verfassen