Zum Hauptinhalt springenZur Fußzeile springen

Honeypot-Server

Ein Open-Source-Honeypot-Server, der Angriffe erkennt und automatisch Bedrohungsdaten an die ReportedIP übermittelt. Setzen Sie ihn in Ihrer Infrastruktur ein, um Angreifer abzufangen, bevor sie Ihre eigentlichen Systeme erreichen.

Was ist ein Honeypot?

Ein Honeypot ist ein Ködersystem, das dazu dient, Angreifer anzulocken und aufzuspüren. Es ahmt echte Dienste nach, hat jedoch keinen legitimen Zweck – jede Interaktion damit ist von Natur aus verdächtig.

Der ReportedIP emuliert anfällige CMS-Installationen, um böswillige IP-Adressen zu identifizieren. Wenn ein Angreifer einen Brute-Force-Anmeldeversuch unternimmt, nach bekannten Exploits sucht oder nach Sicherheitslücken scannt, erfasst der Honeypot die Quell-IP und die Angriffsdetails und meldet diese automatisch an die ReportedIP .

CMS-Emulation

Der Honeypot-Server simuliert Anmeldeseiten und Administrationsbereiche beliebter Content-Management-Systeme. Angreifer, die Brute-Force- oder Exploit-Angriffe versuchen, werden sofort erkannt und gemeldet.

CMS Emulierte Pfade Erkennung
WordPress /wp-login.php, /wp-admin/, /xmlrpc.php Brute-Force-Angriffe auf den Login, Missbrauch von XML-RPC, Ausnutzung von Plugin-Sicherheitslücken
Drupal /user/login, /admin/ Anmeldeversuche, Drupalgeddon-Signaturen
Joomla /administrator/, /index.php/component/users/ Brute-Force-Angriffe auf das Admin-System, Ausnutzung von Sicherheitslücken in Komponenten

Bedrohungsanalysatoren

Der Honeypot verfügt über 36 integrierte Analysatoren, die jede eingehende Anfrage auf bekannte Angriffsmuster und -techniken überprüfen:

Analysator Beschreibung
Erkennung von Brute-Force-Angriffen Erkennt wiederholte Anmeldeversuche von derselben Quelle
SQL Injection Erkennt SQL-Injection-Payloads in Parametern und Headern
XSS-Payloads Erkennt Cross-Site-Scripting-Versuche in Anfragedaten
Pfaddurchlauf Erkennt Verzeichnisüberquerungssequenzen (../, ..\\)
Bekannte Exploit-Signaturen Gleicht Anfragen mit einer Datenbank bekannter CVE-Exploits ab
Credential Stuffing Erkennt automatisierte Anmeldeversuche mit verschiedenen Benutzernamen-Passwort-Kombinationen
Verzeichnisaufzählung Ermittelt systematische Suchvorgänge nach sensiblen Dateien und Verzeichnissen
Missbrauch von XML-RPC Erkennt Pingback-Amplifikation und Brute-Force-Angriffe über XML-RPC

Automatische Berichterstellung

Jeder erkannte Angriff wird automatisch und ohne manuellen Eingriff an die ReportedIP gemeldet. Jeder Bericht enthält:

  • Quell-IP – die IP-Adresse des Angreifers
  • Angriffstyp – das erkannte spezifische Angriffsmuster
  • Category ID — mapped to one of the 30 predefined threat categories
  • Zeitstempel – genauer Zeitpunkt jedes Angriffsvorfalls
Höheres Vertrauen: Honeypot-Meldungen werden bei der Berechnung des Vertrauenswerts stärker gewichtet. Von Honeypots gemeldete IP-Adressen erhalten einen speziellen Bonus, und ihre Meldungen bleiben aufgrund einer geringeren zeitlichen Abschwächung länger relevant.

Auswirkungen auf den Vertrauensindex

Honeypot-Meldungen haben im Reputationssystem besonderes Gewicht, da sie bestätigte böswillige Aktivitäten darstellen – es gibt keinen legitimen Grund, mit einem Honeypot zu interagieren. Das System wendet zusätzlich zur Basis-Vertrauensbewertung einen speziellen Honeypot-Bonus an.

Vorteil Details
Honeypot-Bonus Bis zu +25 Punkte werden zum Vertrauenswert hinzugefügt
Reduzierte Zeitdämpfung Berichte bleiben länger aktuell; die Honeypot-Quote verringert den Verfallsfaktor
Höheres Vertrauensgewicht Honeypot-Meldungen werden mit honeypot_report_weight_multiplier (Standard: 2.0x)
Mindestvertrauen Bei ≥2 Honeypot-Meldungen ist eine Zuverlässigkeit von mindestens 25 % gewährleistet

Honeypot-Bonusformel

Text
base_bonus = honeypot_count * base_bonus_per_report

# Diversity requirement
diversity_factor = min(unique_reporters / diversity_divisor, 1.0)
base_bonus = base_bonus * diversity_factor

# Single reporter penalty (if > 5 honeypot reports & only 1 reporter)
if honeypot_reports > threshold AND unique_reporters == 1:
    penalty = 10

final_bonus = min(base_bonus - penalty, 25)

# Time dampening reduction
honeypot_ratio = honeypot_reports_count / report_count
dampening_reduction = honeypot_ratio * 0.5
time_dampening_factor = min(1.0, time_dampening_factor + dampening_reduction)

Anforderungen

Der Honeypot-Server ist eine eigenständige PHP-Anwendung ohne externe Composer-Abhängigkeiten. Er speichert alle Daten in einer lokalen SQLite-Datenbank, sodass kein separater Datenbankserver erforderlich ist.

  • PHP 8.2+ mit dem pdo_sqlite, curlund json Erweiterungen
  • nginx oder Apache alle Anfragen an public/index.php
  • SQLite als Speicherlösung – kein MySQL-/PostgreSQL-Server erforderlich

Installation

Docker (empfohlen)

Der schnellste Weg, um loszulegen. Klonen Sie das Repository und starten Sie den mitgelieferten Compose-Stack:

bash
git clone https://github.com/reportedip/honeypot-server.git
cd honeypot-server
docker compose -f docker/docker-compose.yml up -d

Open the container URL in your browser — the web installer starts automatically on first visit and walks you through system checks, API key entry, CMS selection, and admin credentials. You need a ReportedIP API key for the reporting step — see Authentication & Rate Limits for how to create one (dedicated honeypot keys with unlimited reporting are assigned on request).

Manuelle Einrichtung

Klonen Sie das Repository und richten Sie Ihren Webserver auf das public/ Verzeichnis. Vorlagen für beide Webserver sind im Repository enthalten:

bash
git clone https://github.com/reportedip/honeypot-server.git
cd honeypot-server

# nginx: adapt the bundled example
cp config/nginx.conf.example /etc/nginx/sites-available/honeypot.conf

# Apache: copy the htaccess template into the document root
cp config/apache.htaccess.example public/.htaccess

Öffnen Sie anschließend die URL der Website in Ihrem Browser. Der Web-Installer führt Sie durch die Systemprüfungen, die Eingabe des API-Schlüssels, die Auswahl des CMS, die Eingabe der Administrator-Anmeldedaten und die optionale OpenAI-Einrichtung.

Konfiguration

Die meisten Einstellungen werden beim ersten Start vom Web-Installationsprogramm erfasst. Sie können später im Admin-Panel oder in der Konfigurationsdatei angepasst werden.

Einstellung Standard Beschreibung
api_key Ihr ReportedIP -Zugangsschlüssel (erforderlich). Verwenden Sie einen Schlüssel mit Honeypot-Rolle für uneingeschränkte Berichterstellung – fordern Sie diesen unter [email protected].
cms_profile wordpress Zu emulierendes CMS-Profil: wordpress, drupaloder joomla.
admin_path /_hp_admin URL-Pfad des Admin-Bereichs. Wähle einen nicht offensichtlichen Wert, damit er verborgen bleibt.
trusted_proxies Cloudflare-CIDRs Proxy-IP-Bereiche, die verwendet werden, um die tatsächliche Client-IP hinter einem CDN zu ermitteln.
rate_limit_per_ip 10 Maximale Anzahl der pro IP-Adresse und Minute gespeicherten Protokolleinträge.
report_rate_limit 60 Maximale Anzahl der pro Minute gesendeten API-Anfragen.
report_batch_size 10 Anzahl der pro Cron-Batch übermittelten Berichte in der Warteschlange.
queue_mode web Verarbeitungsmodus für die Berichtswarteschlange: web (nach jedem Seitenaufruf) oder cron.
log_retention_days 90 Wie viele Tage, bevor alte Protokolleinträge automatisch gelöscht werden.
openai_api_key Optionaler OpenAI-Schlüssel für KI-generierte Scheininhalte.

Warteschlangenverarbeitung

Erkannte Angriffe werden in eine Warteschlange gestellt und in kleinen Stapeln an die ReportedIP weitergeleitet. Es stehen zwei Modi zur Verfügung:

  • Web-Cron (Standard): Die Warteschlange wird nach jedem Seitenaufruf automatisch verarbeitet. Ein externer Cron-Job ist nicht erforderlich – ideal für Shared Hosting.
  • Manueller Cron-Job: Satz queue_mode zu cron und planen den CLI-Worker selbst ein.
bash
# Process the report queue every 5 minutes
*/5 * * * * php /path/to/honeypot-server/cli.php process-queue

Webhooks

Der Honeypot kann jede übereinstimmende Erkennung in Echtzeit an einen externen Endpunkt weiterleiten – Angriffe werden direkt an Ihr SIEM, Ihre Protokollierungsplattform, einen Chat-Alarm oder eine andere Bedrohungsdatenbank weitergeleitet. Webhooks wurden mit Version 1.2.0 eingeführt; in Version 1.3.0 wurden sie zu einem flexiblen Router, der jede beliebige HTTP-API ansteuern kann, einschließlich einer integrierten Zuordnung zur AbuseIPDB.

Jeder Webhook ist ein HTTP(S)-Endpunkt, der für jede Erkennung, auf die er zutrifft, eine Anfrage empfängt. Die Übermittlung erfolgt, nachdem die Trap-Antwort an den Angreifer gesendet wurde, sodass Webhooks den Honeypot niemals verlangsamen. Wenn eine einzelne Anfrage mehrere Analysatoren auslöst, werden die Erkennungen zu einer einzigen Übermittlung zusammengefasst (zusammengeführte Kategorien, höchster Schweregrad).

Einrichtung

Webhooks werden im Admin-Bereich unter „Webhooks“ verwaltet. Jeder Endpunkt unterstützt:

  • Kategoriefilter – Beschränken Sie die Zustellung auf bestimmte IDs von Bedrohungskategorien.
  • Analysatorfilter — die Bereitstellung auf bestimmte Erkennungsmodule beschränken (z. B. SqlInjection).
  • Geheimer Schlüssel – optional, ermöglicht die Signierung der Nutzdaten mit HMAC-SHA256.

Leere Filter bedeuten alle Erkennungen übermittelt werden. Wenn beide Filter aktiviert sind, wird der Webhook ausgelöst, wenn oder eine Übereinstimmung vorliegt. Jeder Endpunkt kann über das Admin-Panel mit einer Testübermittlung überprüft werden, die den Header X-ReportedIP-Event: test.

Anfrage-Header

Kopfzeile Wert
Content-Type application/json
User-Agent reportedip-honeypot-server/<version>
X-ReportedIP-Event detection oder test
X-ReportedIP-Signature sha256=<HMAC> — nur wenn ein Secret konfiguriert ist

Nutzlast

json
{
  "event": "detection",
  "generated_at": "2026-06-12T14:00:00+00:00",
  "honeypot": {
    "name": "reportedip-honeypot-server",
    "version": "1.3.0",
    "host": "your-honeypot.example.com",
    "profile": "wordpress"
  },
  "request": {
    "ip": "203.0.113.50",
    "method": "POST",
    "uri": "/wp-login.php",
    "user_agent": "sqlmap/1.7"
  },
  "detections": [
    {
      "analyzer": "SqlInjection",
      "categories": [16, 21],
      "category_names": ["SQL Injection", "Web App Attack"],
      "comment": "SQL injection attempt detected: ...",
      "severity": 85
    }
  ]
}

Unterschriftsprüfung

Wenn ein Geheimnis konfiguriert ist, berechne den HMAC über den Rohtext des Anfragetextkörpers und vergleiche ihn in konstanter Zeit:

php
$expected = 'sha256=' . hash_hmac('sha256', $rawBody, $secret);
$valid = hash_equals($expected, $_SERVER['HTTP_X_REPORTEDIP_SIGNATURE'] ?? '');
Lieferstatus: Das Admin-Panel erfasst das letzte Lieferergebnis, den Zeitstempel sowie einen Zähler für aufeinanderfolgende Fehler pro Webhook, sodass Sie einen fehlerhaften Endpunkt auf einen Blick erkennen können.

Weiterleitung an eine beliebige API

Ein Webhook ist nicht mehr an das ReportedIP gebunden. Seit Version 1.3.0 definiert jeder Endpunkt seine eigene HTTP-Methode, seine eigenen Header und seinen eigenen Body, sodass Sie Daten direkt an AbuseIPDB, Slack, Discord oder jede beliebige HTTP-API senden können – ganz ohne Middleware.

Option pro Webhook Auswahlmöglichkeiten Anmerkungen
HTTP-Methode POST, PUT, PATCH, GET Passe dich den Anforderungen der Ziel-API an.
Benutzerdefinierte Kopfzeilen Einer pro Zeile Fügen Sie API-Schlüssel oder Authentifizierungs-Header hinzu; diese überschreiben die Standardeinstellungen.
Seitenformat json, form, benutzerdefinierte Vorlage Strukturiertes JSON, URL-kodierte Schlüssel-Wert-Paare oder eine frei gestaltbare Vorlage.

Platzhalter

Benutzerdefinierte Kopfzeilen und vorlagenbasierte Hauptteile werden anhand von Platzhaltern ausgefüllt. Zu den bestätigten Tokens gehören {{ip}}, {{categories}}, {{severity}}und {{timestamp}}; die anderen in der obigen Nutzlast angezeigten Anfrage- und Erkennungsfelder sind ebenfalls verfügbar. Jedes Token verfügt zudem über ein {{..._url}} (URL-kodiert) und {{..._json}} (JSON-escaped) Variante, damit die Werte in jedem Kontext sicher bleiben.

Integration von AbuseIPDB

Der Honeypot verfügt über einen eigenen {{abuseipdb_categories}} placeholder that translates the ReportedIP threat categories (IDs 1–30) to their nearest AbuseIPDB category IDs. That makes a direct report to the AbuseIPDB v2 API a one-line body template:

Text
POST https://api.abuseipdb.com/api/v2/report
Header:  Key: <your-abuseipdb-api-key>
Body (form):  ip={{ip}}&categories={{abuseipdb_categories}}&comment={{comment_url}}

Voreinstellungen

Sie müssen dies nicht manuell einrichten. Integrierte Voreinstellungen für AbuseIPDB, Slack, Discord und ein generisches JSON-Ziel füllen die Methode, die Header und den Body bereits vorab aus – wählen Sie eine Option aus, geben Sie Ihren Schlüssel oder Ihre URL ein und senden Sie einen Test.

Sicheres Testen: Bei Testlieferungen wird die Loopback-IP verwendet 127.0.0.1, daher führt die Überprüfung einer AbuseIPDB oder eines Webhooks eines Drittanbieters niemals zu einer tatsächlichen Meldung gegen eine aktive Adresse.

GitHub-Repository

Der Honeypot-Server ist vollständig Open Source. Beiträge, Fehlermeldungen und Feature-Anfragen sind willkommen.

Open Source: github.reportedip — Markiere das Repo mit einem Stern, melde Probleme oder steuere Analysetools bei, um zum Schutz der Community beizutragen.

Zuletzt aktualisiert: · Betreut vom ReportedIP

Sicherheitsorientiert
DSGVO-konform
Hergestellt in Deutschland
Zurück zu Docs