Von Hause aus unterstützt die aktuelle Version von Fail2Ban nur IPv4-Adressen. Durch eine recht kleine Anpassung lässt es sich jedoch auch auf IPv6 erweitern. Im folgenden Abschnitt wird beschrieben welche Anpassungen vorgenommen werden müssen, damit Fail2Ban auch IPv6 Adressen erkennt und gegebenenfalls blockiert.

Alle im folgenden gezeigten Dateien sind auch in unserem zugehörigen GitLab-Repository zu finden und können von dort aus heruntergeladen werden.

IPv4/IPv6 Weiche

Zuerst muss im Verzeichnis /usr/bin/ eine Datei als Weiche zwischen IPv4 und IPv6 mit folgendem Inhalt erstellt werden:

Zur Vereinfachung kann diese Datei auch direkt aus unserem Repository mit Hilfe von wget heruntergeladen werden:

Anschließend machen wir die Datei noch ausführbar:

Neue Aktion bei Fail2Ban hinzufügen

Im Verzeichnis /etc/fail2ban/action.d/ legen wir zwei Dateien mit folgendem Inhalt an:

Zur Vereinfachung können diese beiden Dateien auch direkt aus unserem Repository mit Hilfe von wget heruntergeladen werden:

 

Fail2Ban-Dateien Patchen

Damit Fail2Ban die IPv6-Adressen auch richtig erkennt, müssen die beiden Dateien failregex.py und filter.py gepachtet werden.

Je nach Fail2Ban-Version sind dafür unterschiedliche Patches nötig.

Die aktuell verwendete Version von Fail2Ban kann über den folgenden Befehl ermittelt werden:

Abhängig von der Version legen wir zuerst die zwei patch-Dateien im Verzeichnis /tmp an, beziehungsweise laden diese mit Hilfe von wget direkt aus dem Repository herunter.

Im Folgenden sind die patch-Dateien für Fail2Ban ab v0.9.1 zu finden. patch-Dateien für ältere Versionen sind im Repository enthalten.

Fail2Ban v0.9.3, v0.9.4, v0.9.5
(Debian stretch/sid, Ubuntu wily/xenial)

Fail2Ban v0.9.1 (Ubuntu vivid)

 

Anschließend wenden wir die beiden Patches noch an, wobei je nach System die py-Dateien unter /usr/share/fail2ban/server/ oder /usr/lib/python3/dist-packages/fail2ban/server/ liegen:

Beziehungsweise:

Durch den Parameter -b wird beim Patchen jeweils ein Backup der Originaldatei (failregex.py.orig bzw. filter.py.orig) angelegt. Sollte etwas schief gehen kann damit jederzeit der Ausgangszustand wiederhergestellt werden.

Einstellungen anpassen

Damit Fail2Ban die neuen Aktionen verwendet müssen alle banaction-Einträge in der Datei jail.local angepasst werden.

Dabei ändern wir überall in der Datei iptables-multiport in ip64tables-multiport und iptables-allports in ip64tables-allports. Sollten noch andere Aktionen im Einsatz sein, so müssen diese gegebenenfalls auch angepasst werden.

Fail2Ban neustarten und iptables sowie ip6tables kontrollieren

Damit die Änderungen wirksam werden muss Fail2Ban neugestartet werden:

systemclt restart fail2ban.service beziehungsweise /etc/init.d/fail2ban restart

Anschließend kontrollieren wir noch die aktuellen iptables und ip6tables:

Wenn alles geklappt hat, dann sind jetzt in beiden Ausgaben die Regeln und Ketten (Chain) von Fail2Ban zu sehen.