Aller directement au contenu principalAller directement au pied de page

Serveur « honeypot »

Un serveur honeypot open source qui détecte les attaques et partage automatiquement des informations sur les menaces avec la 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 pirates. Il imite des services réels mais n'a aucune utilité légitime : toute interaction avec lui est intrinsèquement suspecte.

Le serveur ReportedIP simule des installations de CMS vulnérables afin d'identifier les adresses IP malveillantes. Lorsqu'un pirate tente une attaque par force brute pour se connecter, recherche des failles connues ou analyse le système à la recherche de vulnérabilités, le honeypot enregistre l'adresse IP source et les détails de l'attaque, puis les transmet automatiquement à ReportedIP .

Émulation CMS

Le serveur honeypot simule les pages de connexion et les panneaux d'administration des systèmes de gestion de contenu les plus courants. Les pirates qui tentent des attaques par force brute ou par exploitation sont immédiatement détectés et signalés.

CMS Chemins émulés Détection
WordPress /wp-login.php, /wp-admin/, /xmlrpc.php Attaques par force brute lors de la connexion, utilisation abusive du protocole XML-RPC, failles dans les plugins
Drupal /user/login, /admin/ Tentatives de connexion, signatures Drupalgeddon
Joomla /administrator/, /index.php/component/users/ Attaques par force brute contre les comptes administrateur, failles de sécurité des composants

Analyseurs de menaces

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

Analyseur Description
Détection des attaques par force brute Détecte les tentatives de connexion répétées provenant d'une même source
Injection SQL Détecte les charges utiles d'injection SQL dans les paramètres et les en-têtes
Charges utiles XSS Détecte les tentatives de cross-site scripting dans les données de requête
Parcours de chemin Identifie les séquences de traversée de répertoires (../, ..\\)
Signatures d'exploits connus Compare les requêtes à une base de données répertoriant les failles CVE connues
Attaque par réutilisation d'identifiants Détecte les tentatives automatisées de piratage de comptes à l'aide de différentes combinaisons de nom d'utilisateur et de mot de passe
Énumération des répertoires Identifie l'analyse systématique des fichiers et répertoires sensibles
Abus via XML-RPC Détecte l'amplification des pingbacks et les attaques par force brute via XML-RPC

Génération automatique de rapports

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

  • Adresse IP source — l'adresse IP de l'attaquant
  • Type d'attaque — le schéma d'attaque spécifique détecté
  • ID de catégorie — associé à l'une des 30 catégories de menaces prédéfinies
  • Horodatages — heure exacte de chaque incident de sécurité
Confiance accrue : les rapports des honeypots ont un poids plus important dans le calcul du score de confiance. 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 à une atténuation temporelle réduite.

Incidence sur l'indice de confiance

Les rapports issus des honeypots ont un poids particulier dans le système de réputation, car ils reflètent une activité malveillante confirmée — il n'y a aucune raison légitime d'interagir avec un honeypot. Le système applique un bonus « honeypot » spécifique en plus du score de confiance de base.

Avantage Détails
Bonus Honeypot Jusqu'à +25 points ajoutés au score de confiance
Réduction de l'atténuation temporelle Les rapports restent d'actualité plus longtemps ; le taux de honeypots réduit le facteur de décroissance
Poids de confiance plus élevé Les rapports sur les honeypots se multiplient par honeypot_report_weight_multiplier (par défaut : 2.0x)
Confiance minimale À partir de 2 rapports de honeypot, un niveau de confiance d'au moins 25 % est garanti

Formule bonus Honeypot

texte
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)

Conditions requises

Le serveur honeypot est une application PHP autonome qui ne dépend d'aucun composant Composer externe. Il stocke toutes les données dans une base de données SQLite locale, ce qui rend inutile l'utilisation d'un serveur de base de données distinct.

  • PHP 8.2+ avec le pdo_sqlite, curl, et json extensions
  • nginx ou Apache rediriger 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 se lancer. Clonez le dépôt et démarrez 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 : le programme d'installation en ligne se lance automatiquement lors de votre première visite et vous guide tout au long des vérifications du système, de la saisie de la clé API, de la sélection du CMS et de la configuration des identifiants d'administrateur. Vous aurez besoin d'une clé ReportedIP pour l'étape de génération de rapports. Consultez la section « Authentification et limites de débit» pour savoir comment en créer une (des clés dédiées de type « honeypot » avec un nombre illimité 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. Les 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 en ligne vous guide tout au long des vérifications du système, de la saisie de la clé API, du choix du CMS, de la configuration des identifiants d'administrateur et de la configuration facultative d'OpenAI.

Configuration

La plupart des paramètres sont enregistrés par le programme d'installation 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.

Contexte Par défaut Description
api_key Votre clé d'accès ReportedIP (obligatoire). Utilisez une clé de type « Honeypot » pour bénéficier d'un nombre illimité de rapports — demandez-en une à l'adresse [email protected].
cms_profile wordpress Profil CMS à imiter : wordpress, drupal, ou joomla.
admin_path /_hp_admin Chemin d'accès au panneau d'administration. Choisissez une valeur peu évidente pour le garder caché.
trusted_proxies CIDR de Cloudflare Plages d'adresses IP proxy utilisées pour déterminer 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 consultation de la page) ou cron.
log_retention_days 90 Combien de jours avant que les anciennes entrées du journal ne soient supprimées automatiquement ?
openai_api_key Clé OpenAI facultative pour le contenu leurre généré par l'IA.

Traitement des files d'attente

Les attaques détectées sont mises en file d'attente et transmises à ReportedIP 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 : ensemble queue_mode à cron et planifier vous-même le travailleur 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 terminal externe — en acheminant directement les attaques vers votre SIEM, votre plateforme de journalisation, une alerte par chat ou une autre base de données de menaces. Les webhooks ont fait leur apparition 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 point de terminaison 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 regroupé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 point de terminaison prend en charge :

  • Filtres par catégorie — limiter la diffusion aux identifiants de catégorie de menaces spécifiques.
  • Filtres d'analyseur — limiter la diffusion à certains moteurs de détection (par exemple SqlInjection).
  • Clé secrète — facultative, permet la signature de la charge utile HMAC-SHA256.

Des filtres vides signifient tout les alertes sont transmises. Lorsque les deux filtres sont activés, le webhook se déclenche lorsque ou bien correspond. Chaque point de terminaison 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é

Charge utile

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

Vérification de la signature

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 enregistre 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 point de terminaison défaillant.

Routage vers n'importe quelle API

Un webhook n'est désormais plus limité au format ReportedIP . Depuis la version 1.3.0, chaque point de terminaison définit sa propre méthode HTTP, ses en-têtes et son corps ; vous pouvez ainsi envoyer des requêtes directement vers AbuseIPDB, Slack, Discord ou n'importe quelle API HTTP, sans avoir besoin de middleware.

Option par webhook Choix Remarques
Méthode HTTP POST, PUT, PATCH, GET Respectez les exigences de l'API cible.
En-têtes personnalisés Un par ligne Ajoutez des clés API ou des en-têtes d'authentification ; ceux-ci remplaceront 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 modèle sont remplis à partir de variables de remplacement. Les jetons confirmés comprennent {{ip}}, {{categories}}, {{severity}}, et {{timestamp}}; les autres champs de requête et de détection indiqués dans la charge utile ci-dessus sont également disponibles. Chaque jeton comporte également un {{..._url}} (codé en URL) et {{..._json}} (au format JSON) afin que les valeurs restent valides dans n'importe quel contexte.

Intégration d'AbuseIPDB

Le honeypot fournit un {{abuseipdb_categories}} espace réservé qui traduit le Catégories ReportedIP (ID 1 à 30) aux ID de catégorie AbuseIPDB les plus proches. Ainsi, un rapport direct à l'API AbuseIPDB v2 se résume à un modèle de corps de message d'une seule ligne :

texte
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 remplissent automatiquement la méthode, les en-têtes et le corps du message : choisissez-en un, saisissez votre clé ou votre URL, puis envoyez un test.

Tests en toute sécurité : Les livraisons de test utilisent l'adresse IP de bouclage 127.0.0.1, de sorte que la vérification d'un AbuseIPDB ou d'un webhook tiers n'entraîne jamais l'envoi d'un véritable rapport concernant une adresse active.

Dépôt GitHub

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

Open Source : github.reportedip — Ajoutez le dépôt à vos favoris, signalez des problèmes ou proposez des analyseurs pour aider à protéger la communauté.

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

Axé sur la sécurité
Conforme au RGPD
Fabriqué en Allemagne
Retour à Docs