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. Eine manuelle Prüfung gibt es nicht: Die API-Liste wird laufend aus den aktuellen Scores gebaut, der GitHub-Export einmal täglich aktualisiert.

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 die Schwelle erreicht (berechnet aus der Häufigkeit der Reports, der Vielfalt der Quellen, dem Schweregrad und der Aktualität). Über die API wählen Sie die Schwelle mit confidence, der GitHub-Export verwendet ≥ 75 %
  • nur beim GitHub-Export: ihr erster Report mindestens 48 Stunden alt ist (Abkühlphase für False Positives: Eine neue Adresse kommt erst in den Export, wenn sich ihr Score einpendeln konnte, und bleibt dann so lange, wie ihr Score hält)
  • sie nicht auf der Whitelist steht (Suchmaschinen, CDN-Anbieter und als sicher bekannte Infrastrukturen sind ausgeschlossen)

Beide Listen entstehen automatisch, es findet keine manuelle redaktionelle Überprüfung statt. Die Scores folgen neuen Reports und sinken mit der Zeit, eine Adresse, die ruhig wird, verliert also an Score und fällt wieder heraus. Die gesamte Pipeline ist offen und transparent. Ohne Key zeigt die DNSBL-Blacklist-Prüfung den Status jeder Adresse; mit Key prüfen Sie 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 einmal täglich aus den aktuellen Scores neu gebaut wird. Eine neue Adresse erscheint dort 48 Stunden nach ihrem ersten Report (die oben beschriebene Abkühlphase für False Positives) und bleibt, solange sie aktiv ist. Die Wartezeit gilt nur für neue Adressen: Eine Adresse, die herausgefallen ist und durch neue Reports wieder 75 erreicht, kommt mit dem nächsten täglichen Schnappschuss zurück. 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/
#
# Daily snapshot. New addresses appear 48 hours after their first report.
# 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.

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
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"

Senden Sie den gespeicherten ETag als If-None-Match zurück; unveränderte Listen antworten mit 304 Not Modified, was kein Kontingent kostet. Den Abfragerhythmus und den Fall eines veralteten Tags behandelt Blockierung auf Netzwerkebene. Gültige Kategorie-IDs reichen von 1 bis 63: die IDs 31 bis 58 bilden den WordPress-Block, den die oben aufgeführte web-Liste enthält, die IDs 59 bis 63 stammen aus High-Interaction-Honeypots. Vollständiger Katalog: Threat Categories.

Ein Cronjob, der die Liste holt und die Firewall neu lädt, gehört zum übrigen Netzwerk-Setup: das Sync-Skript unter Blockierung auf Netzwerkebene lädt bedingt, tauscht das Set atomar, verwirft einen abgebrochenen Download und behandelt IPv6. Ein kurzes Herunterladen-und-Ersetzen leistet das alles nicht.

Echtzeit vs. GitHub

Wichtig: Das GitHub-Repository ist ein täglicher Schnappschuss, und eine neue Adresse erscheint dort erst 48 Stunden nach ihrem ersten Report. Für eine Blockierung mit aktuellen Daten nutzen Sie direkt die API: Ihre Listen werden laufend aus den aktuellen Scores gebaut, neue Angreifer kommen also hinzu und ruhige Adressen fallen heraus, ohne auf den nächsten Schnappschuss zu warten. 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 Laufend, aus den aktuellen Scores Ja (API Key) Automatische Sperrung, dynamische Firewall Rules, SIEM-Integration
GitHub Täglicher Schnappschuss, neue Adressen nach 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