Skip to main contentSkip to footer

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.

Sie benötigen einen API Key mit der 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.

conf
# /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:

bash
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.localzusätzlich zur normalen Sperrmaßnahme (%(action_)s), nicht anstelle dieser:

conf
# /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

Das Hinzufügen einer neuen Aktion erfordert einen vollständigen Neustart – 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.
bash
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:

log
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
ProtokollzeileBedeutung
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:

json
{"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“):

JailcategoriesBedeutung
sshd18,22Brute-Force, SSH
postfix-sasl, dovecot11,18Email Spam, Brute-Force
proftpd, vsftpd5FTP Brute-Force
nginx-http-auth, apache-auth18,21Brute-Force, Web App Attack
nginx-badbots, apache-badbots14,19Port Scan, Bad Web Bot
apache-sqli, Web-Exploits16,21SQL Injection, Web App Attack
WordPress / wp-login18,21Brute-Force, Web App Attack
recidive (Wiederholungstäter)15,18Hacking, 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:

conf
# /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 ignoreip fü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 von actionban bedeutet, dass eine Netzwerkstörung bei der reportedIP „ReportedIP“ fail2ban nicht daran hindert, lokal eine Sperre zu verhängen.
  • Sinnvolle Schwellenwerte. Sehr niedrige maxretry bei „Noisy Jails“ können zu viele Reports über vorübergehend auftretende Clients führen; die Standardeinstellungen (3–5) sind ausreichend.

Fehlerbehebung

SymptomBehebung
get <jail> actions Zeigt nur die Sperrmaßnahme anSie haben das Programm neu geladen, anstatt es neu zu starten. Führen Sie systemctl restart fail2ban.
unknown smtpd restriction / jail lässt sich nicht startenTippfehler 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 / KontingentDas Tageslimit für Reports Ihres Tarifs ist erreicht; siehe „Authentifizierung“.
Keine Einträge im SperrprotokollDie Berichtsaktion liefert bei Erfolg keine Rückmeldung. Bitte überprüfen Sie dies fail2ban-client get <jail> actions und einer manuellen curl.
Möchten Sie auch die Nutzung von Community-Daten blockieren? Importieren Sie den Blacklist Feed in nftables/ipset oder fragen Sie bei Mail-Servern die DNS / RBL Zone ab.

Zuletzt aktualisiert: · Betreut vom reportedIP-Team

Security Focused
GDPR Compliant
Made in Germany
Zurück zu den Docs