Wenn man eine funktionierende Installation von fail2ban hat kann man die geblockten IP-Adressen an AbuseIPDB weiterleiten. AbuseIPDB sammelt bösartige IPs die auf verschiedenen Weise Server angreifen. Um IP-Adressen zu melden braucht man einen API-Schlüssel. Den erhält man dadurch das man sich bei AbuseIPDB einen Account erstellt und unter API einen Schlüssel erstellt. Der API-Schlüssel ist ein längerer hexadezimaler Wert.
Leider ist das Debian-10-Paket von fail2ban so alt, dass der API-Aufruf nicht mehr funktioniert. Zum Glück ist es nur eine Datei die aktualisiert werden muss. Dazu wechselt man in das Verzeichnis /etc/fail2ban/action.d/ und lädt mit:
wget https://raw.githubusercontent.com/fail2ban/fail2ban/master/config/action.d/abuseipdb.conf
die aktuelle Datei abuseipdb.conf in das korrekte Verzeichnis. Unten in dieser Datei wird auch in der untersten Zeile bei der Variablen abuseipdb_apikey der API-Schlüssel eingetragen.
Nun müssen noch die Regeln der Jails angepasst werden. Diese sind in /etc/fail2ban/jail.local bzw. /etc/fail2ban/jail.conf definiert. Für SSH sieht die Standardregel so aus:
[sshd] port = ssh logpath = %(sshd_log)s backend = %(sshd_backend)s
diese wird nun durch:
[sshd] port = ssh logpath = %(sshd_log)s backend = %(sshd_backend)s # Ban IP and report to AbuseIPDB for SSH Brute-Forcing action = %(action_)s %(action_abuseipdb)s[abuseipdb_apikey="<API-Schlüssel>", abuseipdb_category="18,22"]
ergänzt. Durch die unteren beiden Zeilen (# leitet einen Komentar ein und wird natürlich nicht ausgewertet) wird die AbuseIPDB-Funktionalität ergänzt. Entsprechend kann man das auch in den anderen Jail-Regeln machen.
Die Variable abuseipdb_category wird je nach Regel angepasst. Die Kategorien dafür sind hier zu finden. Nach dem Neustart von fail2ban mit service fail2ban restart sollte fail2ban die IP-Adressen an AbuseIPDB melden. Überprüfen kann man die korrekte Ausführung in den Logdateien /var/log/fail2ban.log, /var/log/daemon.log und auf der Seite von AbuseIPDB hier auf der man eine Auflistung wie folgend bekommt: