Skip to main contentSkip to footer

Blacklist

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.

github.com/reportedip/reportedip-blacklist

Struktur des Repositorys

text
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.

json
{
  "meta": {
    "version": "2026-07-22",
    "generatedAt": "2026-07-22T00:00:00Z",
    "totalCount": 12847
  },
  "entries": [
    {
      "ip": "1.2.3.4",
      "confidence": 95,
      "categories": [18, 21],
      "source": "dynamic"
    },
    {
      "ip": "5.6.7.8",
      "confidence": 82,
      "categories": [14],
      "source": "dynamic"
    }
  ]
}

CSV-Format

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.

csv
ip,confidence,categories,last_reported
1.2.3.4,95,"18;21","2026-07-19 14:22:00"
5.6.7.8,82,"14","2026-07-18 09:15:00"
9.10.11.12,78,"21","2026-07-17 20:45:00"

Firewall-Integration

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:

bash
# Generate Nginx blocklist from TXT file
awk '{print "deny " $1 ";"}' blacklist-all.txt > /etc/nginx/blocklist.conf
nginx
# /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:

ini
# /etc/fail2ban/jail.d/reportedip.conf
[reportedip-blacklist]
enabled  = true
banaction = iptables-allports
bantime  = 86400
filter   = reportedip-blacklist
logpath  = /var/log/reportedip-blacklist.log
maxretry = 1

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
curl
curl -H "X-Key: YOUR_API_KEY" \
     "https://reportedip.com/wp-json/reportedip/v2/blacklist?format=txt&confidence=90&limit=50000"

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.

Liste category Wert Enthaltene Kategorien Anwenden auf
SSH 22,18 SSH-Brute-Force, generische Brute-Force sshd – Port 22
E-Mail 11,7,17,18 Email Spam, Phishing, Spoofing, Brute-Force (SMTP-AUTH/IMAP/POP3) Postfix/Exim, Dovecot – Ports 25, 465, 587, 110, 143, 993, 995
Web 21,16,10,19,12,31…58 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“ nginx/Apache inkl. WordPress-Hosting – Ports 80, 443
FTP 5,18 FTP Brute-Force, generische Brute-Force vsftpd/proftpd – Port 21
Edge 4,14,20 DDoS Attack, Port Scan, Exploited Host gesamter Netzwerk-Edge, alle Ports
curl
# 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.

Cron-Zeitplan

bash
# /etc/cron.d/reportedip-blacklist
0 */6 * * * root /usr/local/bin/update-reportedip-blocklist.sh

Aktualisierungsskript

bash
#!/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.
Methode Latenz Authentifizierung erforderlich Am besten geeignet für
API Echtzeit Ja (API Key) Automatische Sperrung, dynamische Firewall Rules, SIEM-Integration
GitHub Bis zu 48 Stunden Nein Statische Firewall Rules, CI/CD-Pipelines, Offline-Analyse

Zuletzt aktualisiert: · Betreut vom ReportedIP-Team

Security Focused
DSGVO-konform
Made in Germany
Zurück zur Doku