Fail2ban-Integration
Verwandeln Sie jede IP-Adresse, die von Fail2ban auf Ihrem Server gesperrt wird, in einen Eintrag in der Blacklist der ReportedIP-Community. Eine kleine benutzerdefinierte Aktion ruft bei jeder Sperrung die ReportedIP API auf, sodass sich Ihre Firewall und die Community gegenseitig schützen – dieselben Daten fließen zudem in den Blacklist Feed und die DNS / RBL Zone ein.
report entsprechenden Berechtigung. Erstellen Sie diesen kostenlos in Ihrem
Dashboard; Informationen zu den Beschränkungen finden Sie unter „Authentifizierung“. Melden Sie nur IP-Adressen, die Ihr eigener Server tatsächlich erfasst hat.So funktioniert fail2ban (in 30 Sekunden)
Fail2ban überwacht Logdateien (oder das systemd-Journal). Ein Filter gleicht Angriffsmuster ab
, ein „Jail“ zählt die Übereinstimmungen pro IP innerhalb findtime, und sobald eine IP
die maxretry das „Jail“, führt dieses seine Aktionen aus (Sperre + was auch immer Sie sonst noch hinzufügen).
Wir fügen eine zweite Aktion hinzu, die die gesperrte IP an „ReportedIP“ meldet.
1. Erstellen Sie die Meldeaktion
Speichern Sie diese als /etc/fail2ban/action.d/reportedip.conf. Bei jeder Sperrung sendet sie die gesperrte IP-Adresse, die
Threat Categories und einen kurzen Kommentar per POST an den Berichts-Endpoint.
# /etc/fail2ban/action.d/reportedip.conf
[Definition]
actionstart =
actionstop =
actioncheck =
actionban = curl -sS -m 10 -X POST "<report_url>" \
-H "X-Key: <api_key>" \
--data-urlencode "ip=<ip>" \
--data-urlencode "categories=<categories>" \
--data-urlencode "comment=fail2ban <name>: <failures> failed attempts" \
-o /dev/null || :
actionunban =
[Init]
report_url = https://reportedip.com/wp-json/reportedip/v2/report
api_key = <your-api-key>
categories = 18,22
Schränken Sie die Berechtigungen so ein, dass der Schlüssel nicht für alle lesbar ist:
chmod 600 /etc/fail2ban/action.d/reportedip.conf
Die Tags <ip>, <name> (Jail-Name) und <failures>
werden von Fail2ban ausgefüllt; <api_key>, <categories> und
<report_url> stammen aus dem [Init] Block.
2. Aktivieren Sie die Funktion in einem Jail
Fügen Sie die Aktion zu einem Jail in /etc/fail2ban/jail.local — zusätzlich zur
normalen Sperrmaßnahme (%(action_)s), nicht anstelle dieser:
# /etc/fail2ban/jail.local
[sshd]
enabled = true
action = %(action_)s
reportedip
Sie können die Kategorien pro „Jail“ überschreiben, indem Sie sie inline übergeben, z. B.
reportedip[categories="16,21"] in einem Webanwendungs-Jail.
3. Anwenden und überprüfen
fail2ban-client reload
wird die Aktion dadurch nicht zuverlässig zugeordnet. Verwenden Sie systemctl restart fail2banund vergewissern Sie sich anschließend, dass beide
Aktionen geladen sind.systemctl restart fail2ban
fail2ban-client get sshd actions
# -> The jail sshd has the following actions:
# nftables, reportedip
Auslesen des fail2ban-Protokolls
fail2ban-Protokolle in /var/log/fail2ban.log (oder im Journal: journalctl -u fail2ban).
Die für Sie relevanten Zeilen:
2026-05-30 21:56:18 fail2ban.filter [38760]: INFO [sshd] Found 203.0.113.45 - 2026-05-30 21:56:18
2026-05-30 21:56:26 fail2ban.actions [38760]: NOTICE [sshd] Ban 203.0.113.45
2026-05-30 22:06:26 fail2ban.actions [38760]: NOTICE [sshd] Unban 203.0.113.45
| Protokollzeile | Bedeutung |
|---|---|
Found <ip> | Der Filter hat einen Angriffsversuch erkannt. Noch nicht gesperrt. |
Ban <ip> | Schwellenwert erreicht – die Jail-Funktion hat ihre Aktionen ausgeführt, einschließlich der Meldung an ReportedIP. |
Unban <ip> | bantime verstrichen; die Firewall-Regel wurde entfernt (keine Meldung). |
Restore Ban <ip> | fail2ban wurde neu gestartet und hat eine noch aktive Sperre erneut angewendet. |
Die Meldeaktion selbst gibt bei Erfolg keine Rückmeldung (-o /dev/null). Um zu beobachten, wie Reports versendet werden,
verfolgen Sie das Protokoll während des Tests mit „tail“ oder führen Sie die Aktion curl manuell für eine IP-Adresse aus – bei Erfolg
wird der neue Bericht zurückgegeben:
{"data":{"ipAddress":"203.0.113.45","abuseConfidencePercentage":39,"reportId":"4316026","aggregated":true}}
Live-Zähler: Überprüfen Sie Ihren Schlüssel mit
curl -H "X-Key: <key>" https://reportedip.com/wp-json/reportedip/v2/verify-key und lesen Sie
limits.dailyReportUsageoder öffnen Sie das Dashboard.
Auswahl der Threat Categories pro „Jail“
Geben Sie die Kategorie-IDs an, die den Erkennungen des „Jail“ entsprechen. Gängige Zuordnungen (vollständige Liste unter „Threat Categories“):
| Jail | categories | Bedeutung |
|---|---|---|
sshd | 18,22 | Brute-Force, SSH |
postfix-sasl, dovecot | 11,18 | Email Spam, Brute-Force |
proftpd, vsftpd | 5 | FTP Brute-Force |
nginx-http-auth, apache-auth | 18,21 | Brute-Force, Web App Attack |
nginx-badbots, apache-badbots | 14,19 | Port Scan, Bad Web Bot |
apache-sqli, Web-Exploits | 16,21 | SQL Injection, Web App Attack |
WordPress / wp-login | 18,21 | Brute-Force, Web App Attack |
recidive (Wiederholungstäter) | 15,18 | Hacking, Brute-Force |
Meldung von mehr als einem „Jail“
Weisen Sie die Aktion jedem „Jail“ zu und überschreiben Sie die Kategorien inline, damit jeder Report korrekt ist:
# /etc/fail2ban/jail.local
[sshd]
enabled = true
action = %(action_)s
reportedip[categories="18,22"]
[postfix-sasl]
enabled = true
action = %(action_)s
reportedip[categories="11,18"]
[recidive]
enabled = true
action = %(action_)s
reportedip[categories="15,18"]
Bewährte Vorgehensweise und Sicherheit
- Melden Sie ausschließlich Ihre eigenen Sperren. Melden Sie niemals IP-Adressen, bei denen Sie keine Angriffe auf Ihre eigenen Systeme beobachtet haben – falsche Reports beeinträchtigen den Datensatz (und können zur Sperrung Ihres Schlüssels führen).
- Fügen Sie Ihre eigenen IP-Bereiche zur Whitelist hinzu. Richten Sie
ignoreipfür Ihre Büro- und Überwachungs-IPs fest, damit Sie sich niemals selbst melden. - Behalten Sie den Schlüssel geheim (
chmod 600). Er ist zwar Angreifern nicht zugänglich, aber jeder, der über die Datei verfügt, kann Reports in Ihrem Namen einreichen. Ändern Sie ihn über das Dashboard, falls er bekannt geworden ist. - Ein fehlgeschlagener Report blockiert niemals eine Sperre. Die
|| :am Ende vonactionbanbedeutet, dass eine Netzwerkstörung bei der reportedIP „ReportedIP“ fail2ban nicht daran hindert, lokal eine Sperre zu verhängen. - Sinnvolle Schwellenwerte. Sehr niedrige
maxretrybei „Noisy Jails“ können zu viele Reports über vorübergehend auftretende Clients führen; die Standardeinstellungen (3–5) sind ausreichend.
Fehlerbehebung
| Symptom | Behebung |
|---|---|
get <jail> actions Zeigt nur die Sperrmaßnahme an | Sie haben das Programm neu geladen, anstatt es neu zu starten. Führen Sie systemctl restart fail2ban. |
unknown smtpd restriction / jail lässt sich nicht starten | Tippfehler in der Konfiguration in jail.local; überprüfen Sie die Einrückung der Fortsetzungszeile unter action. |
| Reports wurden abgelehnt (HTTP 401/403) | Schlüssel ohne die report Berechtigung oder einen falschen Header – es muss X-Key. |
| HTTP 429 / Kontingent | Das Tageslimit für Reports Ihres Tarifs ist erreicht; siehe „Authentifizierung“. |
| Keine Einträge im Sperrprotokoll | Die Berichtsaktion liefert bei Erfolg keine Rückmeldung. Bitte überprüfen Sie dies fail2ban-client get <jail> actions und einer manuellen curl. |
Zuletzt aktualisiert: · Betreut vom reportedIP-Team