Du kannst AbuseIPDB in deine Fail2Ban Konfiguration einbauen um IP Adressen zu melden.
Da muss man nichts viel umbauen und ist kein Problem zum integrieren.
Hier das Setup fürs IP-Reporting:
Du benötigst einen kostenfreien Account bei Abuseipdb.com
Dann erstellst du dir ein kostenfreien API Key
Eigentlich hat man nur 1000 Reports per Day free.
Wenn du jedoch den Werbebanner/Badge in deine Webseite einbaust, bekommst du mittlerweile bis 5000 Meldungen pro Tag (war mal 3000).
Ich denke das sollte mal ausreichen ^^
Folgendes wäre zu tun:
Sollte es bei dir noch keine /etc/fail2ban/action.d/abuseipdb.conf geben.
Lade die aktuellste Config:
Code: Select all
wget https://raw.githubusercontent.com/fail2ban/fail2ban/master/config/action.d/abuseipdb.conf -qO /etc/fail2ban/action.d/abuseipdb.conf
Öffne die Datei z.B. mit nano
Code: Select all
nano /etc/fail2ban/action.d/abuseipdb.conf
Füge ganz unten deinen API Key ein
Code: Select all
abuseipdb_apikey = DEIN API-Schlüssel hier eintragen
Prüfe eventuell deine Report-Config. unter
actionban ob die Übergabe per curl korrekt ist.
Es kann sein dass bei dir bei "categories" nur --data steht, ändere es in --data-urlencode
Code: Select all
actionban = lgm=$(printf '%%.1000s\n...' "<matches>"); curl -sSf "https://api.abuseipdb.com/api/v2/report"
-H "Accept: application/json" -H "Key: <abuseipdb_apikey>" --data-urlencode "comment=$lgm" --data-urlencode "ip=<ip>" --data-urlencode "categories=<abuseipdb_category>"
Öffne die jail.conf (alternativ über eine jail.local)
Hier suchst du nach [sshd] und fügst darunter diese Regel ein
Code: Select all
enabled = true
action = %(action_)s
%(action_abuseipdb)s[abuseipdb_apikey="API-KEY", abuseipdb_category="18,22"]
Das ist jetzt nur ein Beispiel, bei "API-KEY" musst du natürlich deinen Key einsetzen.
Und du kannst das in diversen Jails und nicht nur sshd einfügen und die Kategorien anpassen (sollte natürlich stimmen).
Hier ist die Kategorie-Liste:
https://www.abuseipdb.com/categories
Danach am besten Fail2Ban restart od. config neu laden.
Info:
Um es zu melden benötigt es entweder ein Bash od. Python Script bzw. cURL.
Ich habe es so belassen und lasse es per cURL senden.
Wer das nicht möchte, kann sich auch ein Script anlegen.
btw:
Soweit sollte das funktionieren.
Ich habe es auch erst heute eingebaut, mittels Test-Ban mit fiktiver IP über Shell funktionierte es auch und war gleich im AbuseIPDB Dashboard.
Autom. noch nicht, da stimmt noch etwas nicht obwohl die API Verbindung da ist.
Aktuelle IP Bans werden noch nicht übermittelt und sind daher nicht im Dashboard ersichtlich.
Mache ich manuell einen Report, is diese sofort übermittelt mit z.b.
Code: Select all
curl -v https://api.abuseipdb.com/api/v2/report \
-H "Accept: application/json" \
-H "Key: API KEY" \
--data-urlencode "ip=1.2.3.4" \
--data-urlencode "categories=18,22" \
--data-urlencode "comment=Testmeldung von curl"
Werde das nochmal prüfen oder sonst vl. wirklich per Bash Script, nur daran sollte es nicht liegen, curl funkt ja.
Hoffe nicht, dass Keyhelp bzw. die Anpassung mittels
kh-recidive stört, dass ich bereits seit längerem angepasst habe.
Vielleicht kann das noch jemand Reproduzieren ?
Werde mir als nächstes noch die umgekehrte Variante der IP-Blocklist einbauen.