Die ReportedIP Blacklist ist eine von der Community gepflegte Liste bösartiger IP-Adressen, die automatisch
aus realen Angriffsmeldungen generiert wird und über API sowie GitHub verfügbar ist. Nutzen Sie sie, um bekannte bösartige IP-Adressen
in Ihrer Firewall, auf Ihrem Webserver oder in Ihrer Anwendung zu blockieren – sie wird täglich aktualisiert, ohne dass eine manuelle Überprüfung erforderlich ist.
So wird die Blacklist erstellt
Jede IP-Adresse in der Blacklist stammt aus Community-Reports, die in unserer Reputations-Engine erfasst werden. Eine IP-Adresse wird
nur dann aufgenommen, wenn:
ihr Confidence Score ≥ 75 % beträgt (berechnet aus der Häufigkeit der Reports,
der Vielfalt der Quellen, dem Schweregrad und der Aktualität)
ihr jüngster Bericht mindestens 48 Stunden alt ist (Abkühlphase für False Positives – Einträge werden erst dann in den Export aufgenommen, wenn der Wert Zeit hatte, sich neu zu kalibrieren)
sie nicht auf der Whitelist steht (Suchmaschinen, CDN-Anbieter und als sicher bekannte
Infrastrukturen sind ausgeschlossen)
Die Blacklist wird automatisch aktualisiert – es findet keine manuelle redaktionelle Überprüfung statt. Die gesamte Pipeline
ist offen und transparent: Sie können jeden Eintrag über
GET /reportedip/v2/check?ip=<ip>&verbose=true
die genaue Aufschlüsselung der Punktzahl einsehen.
GitHub-Repository
Die vollständige Blacklist wird als öffentliches GitHub-Repository veröffentlicht, das täglich anhand der Live-API-Daten aktualisiert wird.
Die exportierten Daten selbst unterliegen einer Verzögerung von 48 Stunden (die oben beschriebene Abkühlphase für False Positives).
Sie können das Repository klonen, in CI/CD-Pipelines verwenden oder in Ihre Infrastruktur integrieren.
reportedip-blacklist/
├── blacklist-all.txt # All IPs, one per line
├── blacklist-all.json # All IPs with metadata
├── blacklist-all.csv # All IPs, CSV format
├── metadata.json # Export metadata (version, counts, timestamps)
├── lists/ # Thematic sub-lists
│ ├── spam.txt
│ ├── brute-force.txt
│ ├── cms-login.txt
│ ├── web-attacks.txt
│ ├── malware.txt
│ ├── ddos.txt
│ ├── fraud.txt
│ ├── infrastructure.txt
│ └── apt.txt
└── formats/ # Ready-to-include firewall snippets
├── nginx-deny.conf
├── apache-htaccess.txt
└── iptables.sh
Dateiformate
TXT-Format
Klartext, eine IP-Adresse pro Zeile. Zeilen, die mit # sind Kommentare,
die Metadaten wie Erstellungszeit und Gesamtanzahl enthalten.
text
# ReportedIP Blacklist - All IPs
# https://reportedip.com
#
# Copyright (c) 2026 ReportedIP / Patrick Schlesinger
# Licensed under CC BY 4.0 - https://creativecommons.org/licenses/by/4.0/
#
# IMPORTANT: Data is delayed by 48 hours.
# For real-time threat intelligence via API, contact: 1@reportedip.com
#
# Generated: 2026-07-22
# Total IPs: 12847
#
1.2.3.4
5.6.7.8
9.10.11.12
JSON-Format
Ein meta Block (Exportversion, Zählwerte, Erstellungszeitstempel), gefolgt von einem
entries Array. categories sind numerische IDs für Threat Categories – ordnen
Sie diese dem Threat Category-Katalog zu
oder GET /categories.
Durch Kommas getrennte Werte mit einer Kopfzeile. Einfach in Tabellenkalkulationen, Datenbanken oder SIEM-Tools zu importieren.
categories enthält durch Semikolons getrennte numerische Kategorie-IDs.
Verwenden Sie die Blacklist-Dateien, um bösartige IP-Adressen auf Firewall- oder Webserver-Ebene zu blockieren.
Nachfolgend finden Sie Integrationsbeispiele für gängige Tools.
Blockierung auf Netzwerkebene?
Die hier aufgeführten Codeausschnitte dienen als Ausgangspunkt für einen einzelnen
Rechner. Für die Produktionsumgebung – ein Blocksatz pro Dienst, stündliche bedingte Synchronisierung,
atomarer Austausch, IPv6 und Cloud-Edge-Firewalls – befolgen Sie bitte die Anleitung unter
„Blockierung auf Netzwerkebene
“.
Nginx
Generieren Sie eine Blocklist-Konfiguration und fügen Sie diese in Ihren Nginx-Serverblock ein:
# /etc/nginx/sites-enabled/default
server {
include /etc/nginx/blocklist.conf;
# ... rest of your config
}
Apache (.htaccess)
apache
# .htaccess — Block reported IPs
<RequireAll>
Require all granted
Require not ip 1.2.3.4
Require not ip 5.6.7.8
Require not ip 9.10.11.12
</RequireAll>
iptables (über ipset)
Laden Sie die Liste in ein „ipset“ und gleichen Sie diesen Satz anhand einer einzigen Regel ab. Eine Regel pro IP-Adresse würde bedeuten, dass
für jedes Paket Tausende von Regeln durchlaufen werden müssten; ein Set-Lookup bleibt konstant, unabhängig davon, wie groß die
Liste wird.
bash
# Create the set and fill it in one pass (IPv4 entries only)
ipset create rip-block hash:ip family inet maxelem 65536 -exist
grep -E '^[0-9]+(\.[0-9]+){3}$' blacklist-all.txt \
| sed 's|^|add rip-block |' | ipset restore -exist
# One rule blocks the whole set
iptables -I INPUT -m set --match-set rip-block src -j DROP
IPv6 benötigt ein eigenes Set (family inet6) sowie eine eigene ip6tables Regel –
siehe „Blockierung auf Netzwerkebene“ für das vollständige
Skript einschließlich nftables, dienstbezogener Sets und der stündlichen Synchronisierung.
fail2ban
Erstellen Sie ein benutzerdefiniertes „Jail“, das IP-Adressen aus der „ReportedIP“-Blacklist sperrt:
fail2ban funktioniert auch in die andere Richtung: Eine vorgefertigte Aktion meldet jede Sperrung auf Ihrem Server
an die Community über POST /report. Informationen zur Konfiguration der Aktion und zur Zuordnung von Jails zu Kategorien finden Sie im
fail2ban-Integrationsleitfaden.
API-Zugriff
Der /blacklist
Endpoint bietet Echtzeit-Zugriff auf die vollständige Blacklist mit
Filteroptionen. Ein API Key mit der „Threat Feed“-Funktion (ab der „Contributor“-Stufe) ist erforderlich.
Der Endpoint ist funktionsgebunden und wird nicht
auf Ihr tägliches Abfrage- oder
Reports-Kontingent angerechnet – Sie können ihn so oft abfragen, wie es Ihre Caching-Strategie erfordert. Informationen zu
Stufen und Schlüsseln finden Sie unter „Authentifizierung & Rate Limits
“.
Parameter
Typ
Beschreibung
format
Zeichenkette
Antwortformat: json (Standard), txt, csv
source
Zeichenkette
Quelle der Blacklist: dynamic (Standard) – die von der Community gepflegte, automatisch bewertete Blacklist. Andere Werte sind für den internen Gebrauch reserviert
confidence
Ganzzahl
Mindestwert für den Confidence Score (0–100). Standard: 75. Alias: confidenceMinimum. Empfohlen für die automatische Sperrung: 90
category
Zeichenkette
Eine oder mehrere IDs von Threat Categories, durch Kommas getrennt (z. B. 22,18 für SSH sowie generische Brute-Force-Angriffe). Den vollständigen Katalog finden Sie auf der Seite „Threat Categories“ oder über GET /categories
limit
Ganzzahl
Maximale Anzahl der zurückzugebenden IP-Adressen. Standard: 10.000 – behalten Sie den Standardwert bei; kleinere Werte führen zu einer Verkürzung der Liste
Die vollständige Dokumentation zum Endpoint,
das Antwortformat sowie weitere Parameter finden Sie in der API Reference.
Dienstspezifische Blacklists
Kombinieren Sie den category Filter mit confidence=90 , um eine Sperrliste pro
offengelegtem Dienst zu erstellen. Jede Liste enthält nur IP-Adressen, die für den entsprechenden Angriffstyp gemeldet wurden, sodass Sie
sie portbezogen anwenden können – eine IP-Adresse auf der Web-Liste sperrt niemanden aus dem SSH-Zugang aus.
Web App Attack, SQL Injection, Web Spam, Bad Web Bot, Blog Spam sowie die spezielle WordPress-Blockierung (31–58): Brute-Force-Angriffe auf Login/XML-RPC/REST, Exploits für Plugins, Themes und den Kern, Kommentar- und Registrierungsspam, Hintertüren, Scans. Voller Umfang auf der Seite „Blockierung auf Netzwerkebene“
# SSH attackers only, plain text for ipset/nftables
curl -H "X-Key: YOUR_API_KEY" \
"https://reportedip.com/wp-json/reportedip/v2/blacklist?confidence=90&format=txt&limit=50000&category=22,18"
Die Listen werden serverseitig alle 15 Minuten neu generiert. Eine stündliche Abfrage pro Liste ist ausreichend; senden Sie die
gespeicherten ETag als If-None-Match und antworten Sie bei unveränderten Listen mit
304 Not Modified. Tags sind spezifisch für die von Ihnen angeforderte Variante; bewahren Sie daher ein gespeichertes
Tag pro Liste auf. Gültige Kategorie-IDs reichen von 1 bis 58 – die IDs 31–58 beziehen sich auf den speziellen WordPress-
Block, den die web oben aufgeführte Liste enthält. Vollständiger Katalog:
Threat Categories.
Skript zur automatischen Aktualisierung
Richten Sie einen Cron-Job ein, um die aktuelle Blacklist automatisch herunterzuladen und Ihre Firewall Rules zu aktualisieren.
#!/bin/bash
# /usr/local/bin/update-reportedip-blocklist.sh
# Downloads the latest ReportedIP blacklist and updates Nginx blocklist
API_KEY="your-api-key-here"
API_URL="https://reportedip.com/wp-json/reportedip/v2/blacklist"
BLOCKLIST="/etc/nginx/blocklist.conf"
TMPFILE=$(mktemp)
# Download latest blacklist in TXT format
curl -sf -H "X-Key: $API_KEY" \
"$API_URL?format=txt&confidence=90&limit=50000" \
-o "$TMPFILE"
DOWNLOAD_OK=$?
COUNT=$(grep -cE '^[0-9a-fA-F.:]+$' "$TMPFILE")
# Never replace a working blocklist with a truncated or empty response
if [ "$DOWNLOAD_OK" -eq 0 ] && [ "$COUNT" -ge 1000 ]; then
# Convert to Nginx deny directives
grep -v "^#" "$TMPFILE" | grep -v "^$" | \
awk '{print "deny " $1 ";"}' > "$BLOCKLIST"
# Reload Nginx
nginx -t && systemctl reload nginx
echo "$(date): Blocklist updated with $(wc -l < "$BLOCKLIST") entries"
else
echo "$(date): Download failed or list too small ($COUNT) - keeping current blocklist" >&2
fi
rm -f "$TMPFILE"
Echtzeit vs. GitHub
Wichtig:
Das GitHub-Repository wird täglich aktualisiert, die exportierten Daten unterliegen jedoch einer
48-stündigen Abkühlphase für False Positives. Für eine Echtzeit-Blockierung mit den aktuellsten Daten nutzen Sie bitte direkt die API
– diese spiegelt Änderungen sofort wider, sobald neue Reports eingehen, während die GitHub-Dateien
um bis zu zwei Tage hinterherhinken. Mailserver können die Blacklist auch als
DNSBL-/RBL-Zone
nutzen, ohne Dateien herunterladen zu müssen.