Skip to main contentSkip to footer

Honeypot Server

Un Honeypot Server open source qui détecte les attaques et partage automatiquement de la Threat Intelligence avec la communauté ReportedIP. Déployez-le au sein de votre infrastructure pour intercepter les attaquants avant qu’ils n’atteignent vos systèmes réels.

Qu'est-ce qu'un Honeypot ?

Un Honeypot est un système leurre conçu pour attirer et détecter les attaquants. Il imite des services réels mais n’a aucune finalité légitime — toute interaction avec lui est intrinsèquement suspecte.

Le Honeypot Server ReportedIP émule des installations CMS vulnérables afin d’identifier les adresses IP malveillantes. Lorsqu’un attaquant tente un Login Brute Force, recherche des failles connues ou analyse le système à la recherche de vulnérabilités, le honeypot capture l’adresse IP source et les détails de l’attaque, puis les transmet automatiquement à l’API ReportedIP.

CMS Emulation

Le Honeypot Server simule les pages de Login et les panneaux d’administration des systèmes de gestion de contenu les plus courants. Les attaquants tentant des attaques par Brute-Force ou par exploitation de failles sont détectés et signalés immédiatement.

CMS Chemins émulés Détection
WordPress /wp-login.php, /wp-admin/, /xmlrpc.php Attaques Brute-Force sur le Login, utilisation abusive de XML-RPC, exploits de plugins
Drupal /user/login, /admin/ Tentatives de Login, signatures « Drupalgeddon »
Joomla /administrator/, /index.php/component/users/ Attaques Brute-Force sur l'interface d'administration, failles de composants

Threat Analyzers

Le Honeypot intègre 36 analyseurs qui inspectent chaque requête entrante à la recherche de modèles et de techniques d'attaque connus :

Analyseur Description
Détection des attaques Brute Force Identifie les tentatives de Login répétées provenant d’une même source
SQL Injection Détecte les Payloads d'SQL Injection dans les paramètres et les en-têtes
Payloads XSS Détecte les tentatives de cross-site scripting dans les données de requête
Traversée de répertoires Identifie les séquences de traversée de répertoires (../, ..\\)
Signatures d’exploits connus Compare les requêtes à une base de données d'exploits CVE connus
Credential Stuffing Détecte les tentatives automatisées de connexion à l'aide de différentes paires nom d'utilisateur/mot de passe
Énumération de répertoires Identifie les analyses systématiques visant à repérer des fichiers et répertoires sensibles
Abus XML-RPC Détecte l'amplification des pingbacks et les attaques Brute-Force sur les méthodes via XML-RPC

Génération automatique de rapports

Chaque attaque détectée est automatiquement signalée à la ReportedIP API sans intervention manuelle. Chaque rapport comprend :

  • L'adresse IP source — l'adresse IP de l'attaquant
  • Type d’attaque — le modèle d’attaque spécifique détecté
  • ID de catégorie — associé à l’une des 30 Threat Categories prédéfinies
  • Horodatages — heure précise de chaque événement d’attaque
Confiance accrue : les rapports provenant des honeypots sont pondérés davantage dans le calcul du Confidence Score. Les adresses IP signalées par les honeypots bénéficient d’un bonus spécifique et leurs rapports restent pertinents plus longtemps grâce à un Time Dampening réduit.

Impact sur le Confidence Score

Les rapports des honeypots ont un poids particulier dans le système de réputation car ils représentent une activité malveillante confirmée — il n’existe aucune raison légitime d’interagir avec un honeypot. Le système applique un bonus « honeypot » spécifique en plus du Confidence Score de base.

Avantage Détails
Bonus « Honeypot » Jusqu’à +25 points ajoutés au Confidence Score
Réduction du Time Dampening Les rapports restent pertinents plus longtemps ; le ratio « Honeypot » réduit le facteur de décroissance
Pondération de confiance plus élevée Les rapports « honeypot » sont multipliés par honeypot_report_weight_multiplier (par défaut : 2,0x)
Confiance minimale Avec ≥2 rapports « Honeypot », un niveau de confiance minimum de 25 % est garanti

Formule du bonus « Honeypot »

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)

Configuration requise

Le Honeypot Server est une application PHP autonome ne présentant aucune dépendance externe à Composer. Il stocke toutes les données dans une base de données SQLite locale ; aucun serveur de base de données distinct n’est donc nécessaire.

  • PHP 8.2+ avec le pdo_sqlite, curl, ainsi que json extensions
  • nginx ou Apache redirigeant toutes les requêtes vers public/index.php
  • SQLite pour le stockage — aucun serveur MySQL/PostgreSQL n’est nécessaire

Installation

Docker (recommandé)

La manière la plus rapide de démarrer Getting Started. Clonez le dépôt et lancez la pile Compose fournie :

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

Ouvrez l’URL du conteneur dans votre navigateur — l’installateur web démarre automatiquement lors de la première visite et vous guide à travers les vérifications du système, la saisie de l’API Key, la sélection du CMS et la configuration des identifiants d’administrateur. Vous avez besoin d’une API Key ReportedIP pour l’étape de génération de rapports — consultez la section « Authentification et Rate Limits » pour savoir comment en créer une (des clés dédiées de type « Honeypot » avec un nombre Unlimited de rapports sont attribuées sur demande).

Configuration manuelle

Clonez le dépôt et configurez votre serveur web pour qu’il pointe vers le public/ répertoire. Des configurations types pour les deux serveurs web sont fournies avec le dépôt :

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

Ouvrez ensuite l’URL du site dans votre navigateur. Le programme d’installation Web vous guide à travers les vérifications du système, la saisie de l’API Key, la sélection du CMS, les identifiants d’administrateur et la configuration optionnelle d’OpenAI.

Configuration

La plupart des paramètres sont enregistrés par l’installateur web lors de la première exécution. Ils peuvent être modifiés ultérieurement dans le panneau d’administration ou dans le fichier de configuration.

Paramètre Valeur par défaut Description
api_key Votre Community Access Key ReportedIP (obligatoire). Utilisez une clé de type « Honeypot » pour bénéficier d'un nombre Unlimited de rapports — demandez-en une à l'adresse 1@reportedip.com.
cms_profile wordpress profil CMS à émuler : wordpress, drupal, ou joomla.
admin_path /_hp_admin Chemin d’accès URL du panneau d’administration. Choisissez une valeur peu évidente pour la garder cachée.
trusted_proxies CIDR Cloudflare Plages d’adresses IP proxy utilisées pour résoudre l’adresse IP réelle du client derrière un CDN.
rate_limit_per_ip 10 Nombre maximal d'entrées de journal stockées par adresse IP et par minute.
report_rate_limit 60 Nombre maximal de rapports API envoyés par minute.
report_batch_size 10 Nombre de rapports en file d'attente transmis par lot cron.
queue_mode web Mode de traitement de la file d'attente des rapports : web (après chaque visite de page) ou cron.
log_retention_days 90 Nombre de jours avant que les anciennes entrées de journal ne soient automatiquement supprimées.
openai_api_key Clé OpenAI facultative pour le contenu leurre généré par l'IA.

Traitement de la file d'attente

Les attaques détectées sont mises en file d’attente et transmises à la ReportedIP API par petits lots. Deux modes sont disponibles :

  • Cron Web (par défaut) : la file d’attente est traitée automatiquement après chaque visite de la page. Aucune tâche cron externe n’est nécessaire — idéal pour l’hébergement mutualisé.
  • Cron manuel : configurez queue_mode de cron et planifiez vous-même le worker CLI.
bash
# Process the report queue every 5 minutes
*/5 * * * * php /path/to/honeypot-server/cli.php process-queue

Webhooks

Le Honeypot peut transférer en temps réel chaque détection correspondante vers un Endpoint externe — acheminant ainsi les attaques directement vers votre SIEM, votre plateforme de journalisation, une alerte par chat ou une autre base de données de menaces. Les Webhooks ont été introduits dans la version 1.2.0 ; la version 1.3.0 les a transformés en un routeur flexible capable de cibler n’importe quelle API HTTP, y compris un mappage AbuseIPDB intégré.

Chaque Webhook est un endpoint HTTP(S) qui reçoit une requête pour chaque détection à laquelle il correspond. La transmission a lieu après l’envoi de la réponse de piège à l’attaquant ; ainsi, les Webhooks ne ralentissent jamais le Honeypot. Lorsqu’une seule requête déclenche plusieurs analyseurs, les détections sont agrégées en une seule transmission (catégories fusionnées, gravité la plus élevée).

Configuration

Les Webhooks sont gérés dans le panneau d’administration, sous la rubrique « Webhooks ». Chaque Endpoint prend en charge :

  • Filtres par catégorie — limitent la transmission à des identifiants de Threat Categories spécifiques.
  • Filtres par analyseur — limitent la transmission à des moteurs de détection nommés (par ex. SqlInjection).
  • Clé secrète — facultative, active la signature de la Payload HMAC-SHA256.

Des filtres vides signifient que toutes les détections sont transmises. Lorsque les deux filtres sont définis, le Webhook se déclenche dès qu’un des deux correspond. Chaque Endpoint peut être vérifié depuis le panneau d’administration à l’aide d’ un envoi test, qui comporte l’en-tête X-ReportedIP-Event: test.

En-têtes de requête

En-tête Valeur
Content-Type application/json
User-Agent reportedip-honeypot-server/<version>
X-ReportedIP-Event detection ou test
X-ReportedIP-Signature sha256=<HMAC> — uniquement lorsqu’un secret est configuré

Payload

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
    }
  ]
}

Signature Verification

Lorsqu’un secret est configuré, calculez le HMAC sur le corps brut de la requête et comparez-le en temps constant :

php
$expected = 'sha256=' . hash_hmac('sha256', $rawBody, $secret);
$valid = hash_equals($expected, $_SERVER['HTTP_X_REPORTEDIP_SIGNATURE'] ?? '');
État de la livraison : le panneau d’administration suit le dernier résultat de livraison, l’horodatage et un compteur d’échecs consécutifs par Webhook, ce qui vous permet de repérer d’un seul coup d’œil un Endpoint défaillant.

Routage vers n’importe quelle API

Un Webhook n’est plus limité au format JSON ReportedIP. Depuis la version 1.3.0, chaque Endpoint définit sa propre méthode HTTP, ses en-têtes et son corps, ce qui vous permet d’envoyer directement des requêtes vers AbuseIPDB, Slack, Discord, ou n’importe quelle API HTTP — sans avoir besoin de middleware.

Options par Webhook Choix Remarques
Méthode HTTP POST, PUT, PATCH, GET Adaptez-la aux exigences de l’API cible.
En-têtes personnalisés Un par ligne Ajoutez des API Keys ou des en-têtes d'authentification ; ceux-ci remplacent les valeurs par défaut.
Format du corps json, form, modèle personnalisé JSON structuré, paires clé/valeur encodées en URL ou modèle libre.

Espaces réservés

Les en-têtes personnalisés et les corps de message basés sur des modèles sont remplis à partir des espaces réservés. Les jetons confirmés incluent {{ip}}, {{categories}}, {{severity}}, et {{timestamp}}; les autres champs de requête et de détection indiqués dans la Payload ci-dessus sont également disponibles. Chaque jeton comporte également une {{..._url}} variante (encodée en URL) et {{..._json}} (avec échappement JSON) afin que les valeurs restent sécurisées dans n’importe quel contexte.

Intégration d’AbuseIPDB

The honeypot provides a dedicated {{abuseipdb_categories}} qui traduit les catégories de menaces ReportedIP (ID 1 à 30) en ID de catégories AbuseIPDB les plus proches. Cela permet de générer un rapport direct vers l’API AbuseIPDB v2 à l’aide d’un modèle de corps de message d’une seule ligne :

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

Préréglages

Vous n’avez pas besoin de configurer cela manuellement. Des préréglages intégrés pour AbuseIPDB, Slack, Discord et une cible JSON générique prémplissent la méthode, les en-têtes et le corps — choisissez-en un, insérez votre clé ou votre URL, puis envoyez un test.

Tests sécurisés : les envois de test utilisent l’adresse IP de bouclage 127.0.0.1, de sorte que la vérification d’un Webhook AbuseIPDB ou tiers n’entraîne jamais l’envoi d’un véritable signalement à une adresse active.

Dépôt GitHub

Le Honeypot Server est entièrement open source. Les contributions, les rapports de bogues et les demandes de fonctionnalités sont les bienvenus.

Open source : github.com/reportedIP/Honeypot Server — Ajoutez le dépôt à vos favoris, signalez des problèmes ou contribuez à la création d’analyseurs pour aider à protéger la communauté.

Dernière mise à jour : · Géré par l'équipe ReportedIP

Security Focused
GDPR Compliant
Made in Germany
Retour aux Docs