Zum Hauptinhalt springenZur Fußzeile springen

fail2ban-Integration

Jede IP-Adresse, die von fail2ban auf Ihrem Server gesperrt wird, wird an die Blacklist ReportedIP gemeldet. Eine kleine benutzerdefinierte Aktion ruft bei jeder Sperrung die Berichts-API auf, sodass sich Ihre Firewall und die Community gegenseitig schützen – dieselben Daten fließen auch in den Blacklist-Feed und die DNS/RBL-Zone ein.

Sie benötigen einen API-Schlüssel mit dem report Berechtigung. Erstellen Sie kostenlos eine in Ihrem Dashboard; siehe Authentifizierung für Begrenzungen. Melde nur IP-Adressen, die dein eigener Server tatsächlich erfasst hat.

So funktioniert fail2ban (in 30 Sekunden)

fail2ban überwacht Protokolldateien (oder das systemd-Journal). Ein Filter entspricht Angriffsmustern, a Gefängnis zählt die Übereinstimmungen pro IP-Adresse innerhalb von findtime, und sobald eine IP-Adresse auf maxretry Das Gefängnis betreibt sein Maßnahmen (Sperre + was auch immer du sonst noch hinzufügst). Wir fügen eine zweite Aktion hinzu, die die gesperrte IP an ReportedIP meldet.

1. Erstellen Sie die Berichtsaktion

Als … speichern /etc/fail2ban/action.d/reportedip.conf. Bei jeder Sperrung sendet es die gesperrte IP-Adresse, die Bedrohungskategorien und einen kurzen Kommentar per POST an den Melde-Endpunkt.

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.de/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> (Name der Haftanstalt) und <failures> werden von fail2ban ausgefüllt; <api_key>, <categories> und <report_url> stammen aus dem [Init] Block.

2. Aktivieren Sie es in einem Jail

Füge die Aktion zu einem Gefängnis in /etc/fail2ban/jail.localzusätzlich zu die übliche Sperrmaßnahme (%(action_)s), nicht anstelle davon:

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 einer Webanwendungs-Jail.

3. Anwenden und überprüfen

Hinzufügen eines neu Diese Aktion erfordert einen vollständigen Neustart — fail2ban-client reload tut nicht Befestigen Sie es sicher. Verwenden Sie systemctl restart fail2ban, und vergewissere dich dann, dass beide Aktionen geladen sind.
bash
systemctl restart fail2ban
fail2ban-client get sshd actions
# -> The jail sshd has the following actions:
#    nftables, reportedip

Das fail2ban-Protokoll lesen

fail2ban-Protokolle an /var/log/fail2ban.log (oder die Zeitschrift: journalctl -u fail2ban). Die Zeilen, die für dich wichtig sind:

Protokoll
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
KurzbeschreibungBedeutung
Found <ip>Der Filter hat einen Angriffsversuch erkannt. Noch nicht gesperrt.
Ban <ip>Schwellenwert erreicht – das Jail hat seine Aktionen ausgeführt, einschließlich der Meldung an ReportedIP.
Unban <ip>bantime ist abgelaufen; die Firewall-Regel wurde entfernt (kein Bericht).
Restore Ban <ip>fail2ban wurde neu gestartet und hat eine noch aktive Sperre erneut angewendet.

Der Bericht selbst enthält keine Angaben zum Erfolg (-o /dev/null). Um zu sehen, wie Berichte versendet werden, beobachten Sie während des Tests das Protokoll oder führen Sie die Aktion aus curl manuell für eine IP-Adresse – ein Erfolg gibt den neuen Bericht zurück:

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.de/wp-json/reportedip/v2/verify-key und lesen limits.dailyReportUsageoder öffnen Sie die Dashboard.

Auswahl der Bedrohungskategorien pro Gefängnis

Übergeben Sie die Kategorie-IDs, die mit den von der Jail erkannten Elementen übereinstimmen. Gängige Zuordnungen (vollständige Liste unter Bedrohungskategorien):

GefängniscategoriesBedeutung
sshd18,22Brute-Force, SSH
postfix-sasl, dovecot11,18Spam-E-Mails, Brute-Force-Angriffe
proftpd, vsftpd5FTP-Brute-Force-Angriff
nginx-http-auth, apache-auth18,21Brute-Force-Angriff, Angriff auf Webanwendungen
nginx-badbots, apache-badbots14,19Port-Scan, bösartiger Web-Bot
apache-sqli, Web-Exploits16,21SQL-Injection, Angriff auf Webanwendungen
WordPress / wp-login18,21Brute-Force-Angriff, Angriff auf Webanwendungen
recidive (Wiederholungstäter)15,18Hacking, Brute-Force

Mehr als eine Haftanstalt melden

Fügen Sie die Aktion jedem Gefängnis hinzu und überschreiben Sie die Kategorien direkt im Code, damit jeder Bericht 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 Verfahren & Sicherheit

  • Melde bitte nur deine eigenen Sperrungen. Melde niemals IP-Adressen, bei denen du keine Angriffe auf deine eigenen Systeme beobachtet hast – falsche Meldungen beeinträchtigen den Datensatz (und können dazu führen, dass dein Schlüssel gesperrt wird).
  • Fügen Sie Ihre eigenen Nummernbereiche zur Whitelist hinzu. Behalten ignoreip Legen Sie die IP-Adressen Ihres Büros bzw. Ihrer Überwachungssysteme fest, damit Sie sich niemals selbst melden.
  • Behalte den Schlüssel geheim (chmod 600). Es ist für Angreifer nicht einsehbar, aber jeder, der im Besitz der Datei ist, kann Berichte in Ihrem Namen einreichen. Ändern Sie es über das Dashboard, falls es in die falschen Hände geraten sollte.
  • Ein fehlgeschlagener Bericht verhindert niemals eine Sperre. Die || : am Ende von actionban bedeutet, dass eine vorübergehende Netzwerkstörung bei ReportedIP fail2ban ReportedIP daran hindert, lokal Sperren zu verhängen.
  • Sinnvolle Schwellenwerte. Sehr niedrig maxretry Bei „noisy jails“ kann es zu einer Übererfassung von temporären Clients kommen; die Standardeinstellungen (3–5) sind ausreichend.

Fehlerbehebung

SymptomBeheben
get <jail> actions zeigt nur die Sperrmaßnahme anDu hast die Seite neu geladen, anstatt sie neu zu starten. Führe systemctl restart fail2ban.
unknown smtpd restriction / jail lässt sich nicht startenTippfehler in der Konfiguration jail.local; überprüfe die Einrückung der Fortsetzungszeile unter action.
Berichte abgelehnt (HTTP 401/403)Taste fehlt report Berechtigung oder falscher Header – es muss X-Key.
HTTP 429 / KontingentDas Tageslimit für Ihren Tarif wurde erreicht; siehe „Authentifizierung“.
Keine Einträge im Protokoll zum SperrverzeichnisDer Bericht enthält keine Angaben zum Erfolg. Bitte überprüfen Sie dies bei fail2ban-client get <jail> actions und eine Bedienungsanleitung curl.
Möchten Sie auch anhand von Community-Daten blockieren? Importieren Sie den Blacklist-Feed in nftables/ipset oder fragen Sie bei Mail-Servern die DNS/RBL-Zone ab.
Sicherheitsorientiert
DSGVO-konform
Hergestellt in Deutschland
Zurück zu den Dokumenten