Skip to main contentSkip to footer

Vous cherchez une vue d'ensemble ? Rendez-vous sur la page d'accueil du plugin pour découvrir ses fonctionnalités, ses tarifs et la procédure d'installation. Cette page constitue la référence technique.

Plugin WordPress — ReportedIP Hive (Full Edition)

Il existe deux éditions — assurez-vous de lire la bonne. Cette page présente ReportedIP Hive (Full Edition) — distribuée via GitHub Releases, elle inclut l'authentification à deux facteurs (2FA), seize Attack Sensors, la prise en charge Multisite, l'intégration WooCommerce et un SMS Relay géré. Vous recherchez l'édition allégée de WordPress.org sans 2FA ni niveaux d'abonnement ? Consultez plutôt les Docs de Hive Light . Les deux plugins partagent le même domaine de texte — n’en installez qu’un seul par site.

ReportedIP Hive est un plugin de sécurité WordPress développé par la communauté. Il transforme chaque site protégé en capteur : lorsqu’un site est attaqué, la « ruche » en tire des enseignements et tous les autres sites peuvent repousser l’attaquant avant même que la première requête n’aboutisse. Threat Intelligence en temps réel, seize Attack Sensors dont un Web Application Firewall, une authentification à deux facteurs (2FA) à quatre méthodes, Progressive Block Escalation et des ensembles de règles de pare-feu signés et fournis par le serveur. Open source, publié sous licence GPLv2+ sur GitHub.

Version actuelle : 2.1.37 (notes de mise à jour ). Configuration requise : WordPress 5.9+ (testé jusqu’à la version 7.0), PHP 8.1+. Réseau : oui — s’installe à l’échelle du réseau sur WordPress Multisite. Fonctionne de manière autonome (Local Shield) ou connecté à la ReportedIP API (Community Network).
Code source et distribution : github.com/reportedip/reportedip-hive — les tickets, les pull requests et le Changelog sont publics. L’Full Edition n’ est pas disponible sur WordPress.org en raison du relais de messagerie / SMS géré (quotas payants) et du système Multisite, qui sont tous deux en contradiction avec les directives de wp.org « pas de vente incitative, pas de service lié ». Les mises à jour sont diffusées via GitHub Releases (détectées automatiquement toutes les 12 heures par le Plugin-Update-Checker intégré). Format des balises épinglées vX.Y.Z.

Installation

1

Télécharger le plugin

Téléchargez la dernière version reportedip-hive.zip sur la page GitHub Releases, ou téléchargez-le depuis votre Dashboard.

2

Installez et activez

Dans votre interface d'administration WordPress, rendez-vous dans Plugins → Ajouter → Télécharger un plugin, sélectionnez le fichier ZIP, cliquez sur « Installer maintenant », puis sur « Activer ».

3

Lancer le Setup Wizard

Après l’activation, le Setup Wizard en dix étapes se lance automatiquement. Il vous guide à travers le mode de fonctionnement, l’API Key, les seuils de Brute Force, le pare-feu (WAF, action « verified-bot », mode « e-mail jetable », « Comment Honeypot »), la liste d’authentification à deux facteurs (2FA), les règles de conservation, le slug de connexion masqué et le pied de page automatique (facultatif).

4

Restez à jour

Le vérificateur de mises à jour intégré (Plugin Update Checker v5.6+) interroge GitHub Releases toutes les 12 heures. Les nouvelles versions apparaissent dans l'écran « Plugins » de WordPress comme n'importe quelle autre mise à jour de plugin — aucune réinstallation manuelle n'est nécessaire. Format des balises épinglées : vX.Y.Z.

Setup Wizard (10 étapes)

L’assistant s’exécute lors de la première activation et peut être relancé à tout moment depuis les paramètres du plugin. Chaque étape est immédiatement enregistrée côté serveur à chaque navigation (y compris en cliquant sur « Retour »), ce qui vous permet de vous interrompre et de reprendre sans perdre aucun paramètre.

ÉtapeCe qu’elle configure
1. BienvenuePrésentation, lien vers les Docs et importation facultative en un clic d'un fichier JSON d'exportation des paramètres existants.
2. ConnexionMode de fonctionnement (Local Shield / Community Network), API Key avec validation en temps réel sur reportedip.com. La procédure de création d'une API Key est décrite dans les Docs relatives à l'authentification.
3. ProtectionSeuil et durées pour le Login, le spam dans les commentaires, XMLRPC, le scan 404 et les rafales REST ; option « rapport uniquement » ; stratégie de durée de blocage (durée fixe ou échelle progressive).
4. Pare-feuWeb Application Firewall (activer / signaler uniquement), action en cas de bot vérifié (signaler ou bloquer les usurpateurs), mode e-mail jetable (désactivé / surveiller / bloquer) et le Comment Honeypot — le tout avec des paramètres par défaut sécurisés.
5. Authentification à deux facteurs (2FA)Activer / désactiver chacune des quatre méthodes (TOTP, e-mail, SMS, WebAuthn), appliquer des rôles, des jours de grâce, l’expiration des Trusted Devices.
6. ConfidentialitéConservation des données, anonymisation automatique, niveau de journalisation, activation/désactivation de la journalisation détaillée.
7. NotificationsDestinataires (séparés par des virgules, validés via is_email()), nom et adresse e-mail de l'expéditeur pour les e-mails transactionnels, synchronisation facultative de la liste de contacts vers le compte reportedIP.com.
8. LoginHide Login URL slug (3 à 50 caractères, les slugs figurant sur la Blacklist sont rejetés), mode de réponse pour l’ancienne /wp-login.php (page de blocage ou 404).
9. PromotionBannière de pied de page automatique facultative, variante (badge / écusson / bannière / statistique) et alignement.
10. TerminéRésumé de l’opération, lien vers le Dashboard.

Modes de fonctionnement

Deux modes — basculez entre eux à tout moment sans perdre vos données locales.

Fonctionnalité Local Shield Community Network
Les seize Attack SensorsOuiOui
Authentification à deux facteurs (2FA) à 4 méthodes + Trusted Devices + Recovery CodesOuiOui
Progressive Block EscalationOuiOui
Masquer l'URL de LoginOuiOui
Vérification de la réputation IP par rapport à la base de données HiveNonOui (via l'API)
Reports d'attaques anonymisés renvoyés à la communautéNonOui (automatique)
Clé API requiseNonOui (Free tier disponible)
Les données quittent votre serveurJamaisUniquement l'adresse IP de l'attaquant + la Threat Category + l'horodatage
Recommandation : utilisez le mode « Community Network » pour bénéficier de la meilleure protection. Votre site profite ainsi des informations sur les menaces signalées par des milliers d’autres sites, et vous contribuez en retour à protéger la communauté. Ces mêmes données communautaires alimentent également les Blacklist Feeds téléchargeables et la DNS / RBL Zone pour les infrastructures non WordPress.

Ce dont vous bénéficiez à chaque niveau

Le plugin Hive est entièrement fonctionnel sur le Free tier : protection locale, les seize capteurs, les quatre méthodes d’authentification à deux facteurs (2FA). Les niveaux payants incluent une infrastructure de diffusion gérée (e-mail et SMS) ainsi que des quotas plus élevés pour le Community Network. Consultez la page Tarifs pour une comparaison complète et pour passer à un niveau supérieur.

  Free Contributor Professional Business Enterprise
Prix / mois (TVA comprise)0 €0 €14,90 €39,00 €À partir de 663 €
Prix / an (≈ 17 % de réduction)0 €0 €149 €389 €Personnalisé
Durée minimaleMensuelMensuel12 mois
Vérifications API / jour1 0005 00025 000100 000Unlimited
Détection et signalement des Decoy Paths (fichier .htaccess géré automatiquement, depuis la version 2.0.11)OuiOuiOuiOuiOui
Hardening Mode contre les attaques coordonnées (depuis la version 2.0.8)OuiOuiOui
Web Application Firewall — moteur + ensemble de règles de base (depuis la version 2.1.2)OuiOuiOuiOuiOui
Priority Sync — ensembles de règles WAF avancés (Paranoia Level 2/3) + flux en temps réel d'adresses IP de bots / flux jetablesHebdomadaireQuotidienQuotidienQuotidien
Verified Bot Detection (plages d’adresses IP officielles + FCrDNS)OuiOuiOuiOuiOui
Disposable-Email Blocking et Comment HoneypotOuiOuiOuiOuiOui
Security Headers — le trio de base (X-Content-Type-Options, X-Frame-Options, Referrer-Policy)OuiOuiOuiOuiOui
Security Headers avancés (HSTS, Permissions-Policy, générateur CSP, isolation inter-origines)OuiOuiOui
Protection & Hardening Score (jauges du Dashboard, note de A+ à F)OuiOuiOuiOuiOui
Codes de référence des pages de bloc (X-RIP-Ref)OuiOuiOuiOuiOui
MainWP Integration (gestion à distance)OuiOuiOuiOuiOui
Audit Event Trail (journal du cycle de vie des utilisateurs + exportation au format CSV/JSON, depuis la version 2.1.2)OuiOui
Reports / jour502001 0005 000Unlimited
Threat Feed de la communauté (Blacklist quotidienne)OuiOuiOuiOui
Nombre de domaines par licence11315Unlimited
E-mails 2FA / mois (SMTP géré)5002 500Unlimited (utilisation raisonnable)
2FA SMS / mois (relais géré dans le monde entier)2575Sur mesure
SMS Bundles prépayés (50 / 200 / 500 SMS à 14,90 / 49,90 / 99,90 €, TTC)OuiOuiOui
Mail Bundles (1 000 / 5 000 / 25 000 e-mails à 4,90 / 14,90 / 49,90 €, TTC)OuiOuiOui
Modèles de courrier personnalisés à l'image de votre marqueOuiOui
Rapports et analyses sur l'utilisation de la 2FAOuiOuiOui
Politiques d'authentification à deux facteurs (2FA) configurables par rôle d'utilisateurOuiOuiOui
Restriction des horaires de Login des utilisateurs (par rôle / par utilisateur)OuiOui
Opérations en masse et analysesOuiOuiOui
Multi-site Dashboard sur reportedip.comOuiOuiOui
Clés de sécurité avancées (clés WebAuthn multiples, détection de modèle, alertes relatives aux clés)OuiOui
White-label (Setup Wizard, pages d'authentification 2FA, modèles d'e-mails)OuiOui
WooCommerce Frontend 2FA (défi intégré à la boutique en ligne avec thème personnalisé)OuiOuiOui
Intégration complète de WooCommerce (modèles White-label, audit des abonnements / adhésions)OuiOui
Scripts WP-CLI completsOuiOui
GDPR Export Tool conforme au RGPDOuiOui
Weekly PDF Security Report (e-mail)Oui (hebdomadaire)Oui (quotidien en option)Oui
Cloud Backup des paramètres Hive30 j90 jours1 an
Conservation des journaux30 jours30 jours90 jours1 anConfigurable
Support SLACommunautéCommunautéE-mail : 48 hPriorité : 12 hTéléphone : 4 h
AVV / DPA personnalisésOui

La formule Business peut faire l'objet de plusieurs réservations. Tous les chiffres indiqués ci-dessus pour la formule Business s'entendent par licence. Réservez la formule Business x2, x5, x10 ou x20 lors du paiement (ou modifiez ce choix ultérieurement dans le portail client Stripe) : le nombre de vérifications/Reports quotidiens, le quota mensuel d’e-mails/SMS pour l’authentification à deux facteurs (2FA) et le nombre de domaines s’adaptent tous en fonction du nombre de licences que vous possédez — par exemple, x5 = 75 domaines et 500 000 vérifications/jour. Une remise sur volume s’applique automatiquement à partir de x2. La version PRO reste à licence unique ; les chiffres de la version Enterprise sont Unlimited (dans le cadre d’une utilisation raisonnable) et ne sont jamais multipliés.

Ordre de consommation des forfaits (PRO et Business) : d’abord le quota mensuel inclus (25 SMS / 500 e-mails pour la version PRO, 75 / 2 500 pour la version Business), puis le solde prépayé du forfait. Une fois ces deux quotas épuisés, l’API renvoie un code HTTP 429 et Hive bascule vers l’authentification locale wp_mail() pour les e-mails (ou les limites strictes pour les SMS) — les autres méthodes de 2FA restent opérationnelles. Les crédits des forfaits n’expirent jamais. Stripe utilise tax_behavior = inclusive pour les forfaits au prix brut (conformes à la PAngV) ; la facturation inversée / OSS est gérée automatiquement par Stripe Tax.

Gestion multisite. Sur les formules Professional et supérieures, le plugin Hive permet d’enregistrer jusqu’à 3 (PRO) ou 15 (Business) domaines protégés sous une seule licence — et la souscription à Business x2–x20 porte ce nombre à 30–300 domaines. Dashboard inter-sites, Whitelist centralisée, facturation unique — gérez le tout depuis votre Dashboard reportedIP.com .
Nouveautés de la série 2.1 — la version du pare-feu et son renforcement en production. Une couche de pare-feu complète a été ajoutée au capteur existant et au cœur de l’authentification à deux facteurs (2FA) :
  • 2.1.0 — MainWP Integration et codes de référence pour la page de blocage. Hive est désormais gérable à distance depuis un Dashboard MainWP (synchronisation agrégée des métriques de sécurité et provisionnement des API Keys) sans plugin enfant supplémentaire, avec authentification via le canal MainWP Child — aucune adresse IP, aucun nom d’utilisateur, aucun secret ni aucune API Key ne quitte le site. Chaque réponse bloquée comporte désormais un code de référence corrélable (par exemple WAF_SQLI-3F9A2B71), affiché sur la page et émis en tant qu’en-tête X-RIP-Ref en-tête ; le jeton d’incident est un hachage à sens unique de l’adresse IP, du motif et de l’heure, de sorte qu’aucune donnée personnelle n’est exposée. La page bloquée a été reconstruite sur le système de conception et entièrement traduite.
  • 2.1.2 — Cadre de diffusion des règles + Web Application Firewall (moteur gratuit, fonctionnalités PRO). Ensembles de règles diffusés par le serveur, versionnés, signés avec Ed25519 et échelonnés par niveau (waf, bot_signatures, disposable_domains, scan_paths) vérifiés par rapport à une clé publique intégrée avant leur application — un flux altéré ou inaccessible ne peut en aucun cas corrompre les règles, et une base de référence intégrée fonctionne entièrement hors ligne. Le WAF inspectant les requêtes et sa base de référence OWASP Top 10 de Paranoia Level 1 sont gratuits sur tous les forfaits ; la formule « Professional » débloque le jeu de règles plus approfondi et fréquemment mis à jour de niveau 2/3 via Priority Sync. Renforcé contre les attaques ReDoS et en mode « fail-open », avec un module prêt à l’emploi pré-WordPress en option (configuration automatique Apache / PHP-FPM, snippet nginx) qui bloque les menaces avant même le chargement de WordPress.
  • 2.1.2 — Davantage de capteurs gratuits. Verified Bot Detection (plages d’adresses IP officielles + Reverse DNS confirmé en amont — les robots d’indexation légitimes ne sont jamais bloqués), Disposable-Email Blocking lors de l’inscription (les relais de confidentialité sont autorisés), un « Comment Honeypot » invisible, des Security Headers de base, un Protection & Hardening Score (note de A+ à F) — le tout Free. La version « Professional » ajoute des Security Headers avancés (HSTS, Permissions-Policy, CSP, isolation inter-origines) ; la version « Business » ajoute l’Audit Event Trail (le schéma v9 ajoute le audit_log tableau).
  • 2.1.3 — Correction IPv6 pour les bots vérifiés. La confirmation directe résout désormais également les enregistrements AAAA ; ainsi, les robots d’indexation légitimes se connectant via IPv6 ne sont plus signalés comme faux ; facebookexternalhit la vérification s’effectue par rapport aux plages d’adresses IP publiées par Meta plutôt que par Reverse DNS.
  • 2.1.4 — Refonte de l’expérience utilisateur de l’administration du pare-feu. L’onglet « Aperçu » est désormais un mini-Dashboard (état par module, compteurs d’activité sur 7 jours, flux des événements récents du pare-feu) ; chaque onglet s’ouvre avec une introduction en langage clair, et un nouvel onglet « Configuration du serveur » regroupe tous les extraits de code relatifs au serveur web en un seul endroit. La configuration de l’Extended Protection est désormais vérifiable : le statut indique si la protection s’est effectivement déclenchée pour la requête en cours. Nouveaux codes de motif WAF spécifiques pour SSRF, Log4Shell, injection d’objets PHP, NoSQL, XXE, web-shell, CRLF et injection de modèles.
  • 2.1.5 – 2.1.8 — Renforcement de la gestion des False Positives et des mécanismes de sécurité intégrés. Les robots d’indexation vérifiés sont exemptés de la chaîne de sondes d’User Enumeration (correction d’une régression SEO), la classification des bots s’effectue désormais selon trois états (« inconnu » n’est jamais signalé), le comparateur CIDR rejette proprement les familles d’adresses non correspondantes, les adresses de bouclage et privées ne sont jamais signalées comme provenant d’attaquants, et la suppression du module « Extended Protection » neutralise la protection en la transformant en un espace réservé inerte au lieu de la supprimer — une directive résiduelle auto_prepend_file ne peut plus provoquer d’erreur 500 sur le site.
  • 2.1.9 – 2.1.11 — WAF Exceptions gérées en arrière-plan. Les False Positives peuvent être corrigés depuis l’interface d’administration sans modifier le code : une Allowlist « WAF Exceptions » (applicable à une règle, un groupe de règles ou le moteur sur un chemin, éventuellement restreinte à une adresse IP/CIDR) ainsi qu’une action « Autoriser » en un clic sur chaque ligne du journal WAF. Les exceptions sont également intégrées dans le module prêt à l’emploi pré-WordPress, et chaque décision de blocage enregistre désormais la valeur correspondante, la cible, la méthode, l’URI et l’agent utilisateur — ce qui permet un diagnostic sans avoir à reproduire la requête. Voir « WAF Exceptions » ci-dessous.
  • 2.1.12 – 2.1.13 — Dashboard de provisionnement et d’analyse MainWP. MainWP peut basculer un site géré en mode « Community Network » parallèlement à l’approvisionnement clé, et le Dashboard de sécurité a été remanié pour offrir une vue analytique complète (bandeau d’en-tête, sept familles de menaces, graphique des groupes de règles WAF, répartition par niveau de gravité, principaux attaquants).
  • 2.1.14 – 2.1.18 — Exactitude en conditions réelles d’hébergement. Toutes les dates et heures stockées sont conformes à l’UTC (le blocage automatique échouait silencieusement sur les serveurs dont le fuseau horaire de la base de données n’était pas l’UTC), les horodatages administratifs s’affichent dans le fuseau horaire du site, les requêtes de niveau sont servies exclusivement à partir du cache (plus de sondage de quota par chemin d’accès fréquent), et la santé de l’API est mesurée sur une fenêtre glissante, de sorte qu’une interruption ponctuelle n’entraîne plus un état « dégradé » permanent.
  • 2.1.17 – 2.1.20 — Extended Protection sur nginx. Les piles PHP-FPM sont configurées automatiquement via un répertoire racine .user.ini , quel que soit le location , le garde ignore l’inspection du corps des requêtes authentifiées (les éditeurs enregistrant des articles ne peuvent plus le déclencher), la désactivation du WAF neutralise également le garde, et l’onglet « Configuration du serveur » affiche les extraits manuels de php.ini / fastcgi_param extraits de php.ini manuels dès que la directive de génération automatique n’est pas encore active.
  • 2.1.22 – 2.1.24 — Application de l’authentification à deux facteurs (2FA) sans verrouillage de compte. Un utilisateur qui a épuisé le délai de grâce et son quota de tentatives est désormais connecté et redirigé directement vers l’inscription obligatoire à la 2FA au lieu d’être bloqué (l’ancien comportement de blocage définitif reste disponible en tant qu’option de politique) ; les administrateurs et les super-administrateurs ne peuvent jamais être bloqués définitivement. Une soumission en double du défi d’authentification à deux facteurs (2FA) ne bloque plus les utilisateurs sur une page « session expirée ». De plus, de nouvelles signatures WAF : la eval-stdin.php (CVE-2017-9841) est bloquée sur toutes les formules.
  • 2.1.25 — Classe d’attaques REST par lots bloquée, contournement par Payload encodée corrigé. Deux nouvelles règles de base gratuites bloquent structurellement la primitive de confusion de routes REST du cœur de WordPress (et non par jeton, de sorte que les variantes ne peuvent pas les contourner) ; le pare-feu inspecte désormais une copie décodée du corps de la requête (les Payloads encodés en pourcentage dissimulés dans le JSON sont détectés), et les blocages de Paranoia Level 2/3 affichent leur catégorie de référence spécifique au lieu d’un BLOCKED .
  • 2.1.26 – 2.1.28 — Vérification des déclarations des robots d’indexation, blocages basés sur la réputation partout. Un agent utilisateur se présentant comme un robot d’indexation est soumis à une vérification croisée par rapport à un Reverse DNS confirmé en amont et aux plages d’adresses IP officielles avant qu’un capteur ne l’épargne ; un garde central empêche tout chemin de blocage automatique d’exclure un Googlebot vérifié, tandis que les événements impliquant des identifiants (échecs de Login, attaques par spray de mots de passe) contournent entièrement l’Allowlist des bots — les véritables robots d’indexation ne soumettent jamais d’identifiants. Une baisse de réputation au sein de la communauté entraîne désormais un blocage temporaire couvrant toutes les surfaces, et pas seulement le formulaire de Login. Version minimale de WordPress portée à 5.9.
  • 2.1.29 – 2.1.31 — Autoprotection et escalade plus intelligente. Le serveur ne peut plus bloquer automatiquement sa propre adresse IP en cas de robots d’indexation préchargeant le cache, de boucles WP-Cron ou d’auto-requêtes REST (une migration par mise à jour supprime les auto-blocages existants), l’échelle d’escalade pondère le volume d’attaques (une rafale de 60 violations saute des échelons au lieu de repartir du minimum), les infractions répétées à une même règle sont regroupées en une seule ligne de journal sans perte de crédit sur l’échelle, et les pages d’archives d’auteur peuvent rester publiques indépendamment du ?author=N blocage par énumération.
  • 2.1.32 — La version axée sur les performances. 36 → 11 requêtes de plugin par requête frontale anonyme, la Blocklist pré-WordPress répond à partir d’un en-tête de 8 Ko au lieu de lire jusqu’à 1 Mo par requête, les corps de requête ne sont lus que lorsqu’une règle les inspecte réellement, le TTFB du Dashboard est passé de 920 ms à 278 ms sur une table de journaux de 500 000 lignes, et le nettoyage de la rétention s’effectue par blocs délimités (le schéma v13 rééquilibre l’ensemble d’index). Les blocages par plage CIDR sont à nouveau appliqués par la couche WordPress.
  • 2.1.33 – 2.1.36 — Prise en charge officielle de YubiKey et des Hardware Security Keys. Les trois surfaces de défi effectuent une procédure WebAuthn complète ; un gestionnaire de clés de sécurité dans le profil gère plusieurs clés nommées ; l’enregistrement détecte le modèle de clé via une attestation (AAGUID) ; un compteur de signatures non incrémental (clé clonée) est rejeté et signalé par e-mail, et la section 2FA du profil a été repensée autour de fiches de méthodes rédigées en langage clair, avec une méthode par défaut sélectionnable par l’utilisateur. Une clé par compte est gratuite sur tous les forfaits ; les clés de sécurité avancées (clés multiples, détection du modèle, alertes de cycle de vie) sont réservées à la version Business. Voir Hardware Security Keys.

Défense à 6 niveaux

Hive applique ses vérifications dans l’ordre — chaque couche peut interrompre la requête avant qu’elle n’atteigne la suivante. Le plugin est configuré init priorité 1 afin que les autres plugins ne s’exécutent pas pour une adresse IP bloquée.

  1. Whitelist — les adresses IP et plages CIDR de confiance sont toujours autorisées (votre bureau, les services de surveillance, etc.).
  2. Liste de blocage locale — adresses IP que vous avez bloquées manuellement ou qui ont dépassé les seuils locaux. Stockées dans wp_reportedip_hive_blocked.
  3. Web Application Firewall — l’ensemble de règles WAF actif est comparé à l’URI, à la requête, au corps du message et à l’agent utilisateur ; toute correspondance est bloquée via le chemin 403 partagé et codé par référence. Prise en compte de la Whitelist et de l’auteur du contenu pour éviter les False Positives. Un module optionnel à intégrer avant WordPress peut exécuter cette couche avant même le chargement de WordPress.
  4. Compteurs de tentatives — les compteurs de Login, de commentaires, d’XMLRPC, de rafales REST et de scans 404 déclenchent un blocage automatique dès que le seuil est atteint.
  5. Réputation de la communauté — en mode « Community Network », les adresses IP dont le niveau de confiance est ≥ au seuil sont bloquées en périphérie.
  6. Vérification 2FA — les comptes protégés doivent fournir un deuxième facteur d’authentification pour se connecter.

The sixteen Attack Sensors

Chaque capteur peut être activé ou désactivé et réglé indépendamment dans Paramètres → Protection. Les deux dernières lignes — la Block Escalation et le pont de connexion WooCommerce — sont des mécanismes complémentaires s’inscrivant dans le même pipeline plutôt que des capteurs distincts : l’escalade correspond à l’échelle de réponse alimentée par chaque capteur, tandis que le pont WooCommerce comptabilise les échecs de Login à la boutique en ligne au profit du capteur de Brute Force existant.

CapteurCe qu’il surveilleSeuil par défaut
Login par Brute-ForceÉchecs de Login par adresse IP via wp_login_failed.5 en 15 minutes
Attaque par « password spray »Nombre de noms d'utilisateur distincts testés depuis la même adresse IP (attaques par essais de mots de passe « low-and-slow »).5 en 10 min
Spam de commentairesNombre de commentaires publiés par adresse IP via comment_post.5 en 60 min
Abus XMLRPCAppels XMLRPC par adresse IP via xmlrpc_call.10 en 60 min
Pics d'API REST APIRequêtes REST anonymes par adresse IP. Les Endpoints de la bannière de cookies sont contournés par défaut (real-cookie-banner, complianz, borlabs-cookie, cookie-law-info).240 en 5 minutes
Détecteur de 404 / scanTaux élevé de 404 et déclenchement instantané sur les chemins des Honeypots (.env, .git/config, wp-config.php.bak, …).12 en 2 min
Détection et signalement des chemins leurresPistes leurres (.env.backup, wp-config.old.php, db-dump-master.sql.php, admin-shell-console.php, …). Un seul accès renvoie un code 403 et met en file d’attente un rapport communautaire de gravité élevée — mais ne déclenche pas de blocage local de l’adresse IP pendant 24 h ; ainsi, un plugin de sauvegarde en train d’écrire wp-config.old.php ou un administrateur testant l’URL-appât ne risque pas de bloquer l’accès au site à son propre trafic. Apache .htaccess est géré automatiquement (bloc de marqueurs # BEGIN ReportedIP Hive Decoy placé au-dessus # BEGIN WordPress via insert_with_markers()) ; ainsi, les véritables fichiers-appâts présents sur le disque sont acheminés via WordPress au lieu d’être servis directement par Apache. Les administrateurs Nginx disposent d’un extrait de code à copier-coller rewrite ^ /index.php last; extrait de code à copier-coller dans les Paramètres. Le filtre reportedip_hive_decoy_paths permet d’étendre la liste des leurres.1 accès = 403 + signalement par la communauté
Web Application FirewallInspecte l’URI, la chaîne de requête, le corps de la requête et l’agent utilisateur par rapport au waf (SQLi, XSS, traversée de chemin, injection de commande, wrappers LFI, SSRF, Log4Shell/JNDI, injection d’objet PHP, NoSQL, XXE, téléchargements de shells web, CRLF, injection de modèle). Moteur + base de référence OWASP Top 10 « Paranoia Level 1 » gratuite sur tous les forfaits ; la version Professional débloque les ensembles de règles signés de niveaux 2 et 3 via Priority Sync. Renforcé contre les attaques ReDoS, mode « fail-open », prise en charge des Whitelists et des auteurs de contenu. Blocages optionnels à intégrer avant le chargement de WordPress.Paranoia Level sélectionnable
Verified Bot DetectionVérifie qu’une requête se présentant comme provenant de Googlebot, Bingbot ou d’un autre robot d’indexation provient bien de ces sources — d’abord par une correspondance sans DNS avec les plages d’adresses IP officielles du robot, puis par un recours à la Reverse DNS confirmée en amont. Les usurpateurs sont signalés (par défaut) ou bloqués ; les robots d’indexation authentiques ne sont jamais bloqués.Signaler ou bloquer les usurpateurs
Disposable-Email BlockingVérifie l’adresse lors de l’inscription (WordPress + WooCommerce) par rapport à la disposable_domains liste. Les relais de confidentialité (Apple « Masquer mon e-mail », Firefox Relay, etc.) constituent une catégorie distincte qui est autorisée par défaut.Désactiver / surveiller / bloquer
Comment HoneypotUn champ leurre invisible et ignoré par les lecteurs d’écran dans le formulaire de commentaire ; les robots spammeurs qui remplissent tous les champs sont rejetés sans que les visiteurs réels ne subissent les inconvénients d’un CAPTCHA.Toujours activé (lorsqu’il est activé)
User EnumerationBloque ?author=N, /wp-json/wp/v2/users, les recherches d’utilisateurs via oEmbed ; uniformise les réponses d’erreur pour les utilisateurs invalides et les mots de passe incorrects. Les pages d’archives d’auteur (/author/<slug>/) partagent ce bloc par défaut et peuvent rester publiques grâce à un commutateur distinct.5 en 5 min
Surveillance des mots de passe d'applicationLimite application_password_failed_authentication; empêche le contournement de l’authentification à deux facteurs (2FA) via l’authentification Basic.5 en 15 min
Geo / ASN AnomalyCompare le pays et l’ASN lors d’un Login réussi à un historique glissant de 90 jours ; révoque éventuellement les jetons des Trusted Devices en cas d’anomalie.Au moins un Login préalable requis
Force du mot de passeImpose une longueur minimale et une combinaison de classes de caractères pour les rôles concernés ; vérification optionnelle « Have-I-Been-Pwned » k-anon (préfixe SHA-1 uniquement).8 caractères + classes
Masquer l’URL de LoginSlug personnalisé (par défaut wp-login.php) ; l’URL d’origine renvoie une page de blocage ou une erreur 404.Slug de 3 à 50 caractères
Block EscalationÉchelle progressive — les récidivistes paient davantage à chaque cycle.5 min → 15 min → 30 min → 24 h → 48 h → 7 j
Login à WooCommerceLes échecs de connexion au formulaire de compte WooCommerce sont pris en compte dans le compteur de tentatives de Brute-Force.Hérite de la limite de tentatives par Brute Force

Progressive Block Escalation

Les récidivistes paient plus cher. L'échelle par défaut est la suivante : 5 min → 15 min → 30 min → 24 h → 48 h → 7 j. Après 30 jours sans incident, le compteur revient à l'étape 1. Les visiteurs légitimes bloqués pour la première fois (CGNAT, administrateurs ayant fait une erreur de saisie, sortie du réseau mobile) sont débloqués en quelques minutes ; les attaquants persistants atteignent l’étape des 7 jours.

L'échelle, la fenêtre de réinitialisation et le commutateur principal se trouvent sous Paramètres → Blocage → Blocage progressif. L'étape « Protection » de l'assistant affiche le commutateur principal afin que les nouvelles installations prennent en compte l'escalade dès la première sauvegarde. Le paramètre fixe block_duration s'applique toujours lorsque l'échelle est désactivée. Une granularité inférieure à l'heure est fournie par le ReportedIP_Hive_Database::block_ip_for_minutes().

Web Application Firewall et distribution des règles

Depuis la version 2.1.2, Hive intègre un Web Application Firewall inspectant les requêtes. Lorsqu’ init il compare l’ensemble de règles actif waf ensemble de règles actives à l’URI, à la chaîne de requête, au corps de la requête et à l’agent utilisateur, et bloque toute correspondance via le chemin 403 partagé, compatible avec la mise en cache et codé par référence. Il est renforcé contre les attaques ReDoS (retour en arrière PCRE limité, mode « fail-open » en cas de règle mal formée), prend en compte les Whitelists et l’auteur du contenu pour éviter les False Positives, et ajoute environ 4 µs d’utilisation du processeur par requête sans aucune requête de base de données supplémentaire lorsqu’un cache d’objets persistant est présent.

Les règles ne sont pas codées en dur dans le plugin. Elles sont fournies par la Rule API de ReportedIP — diffusées par le serveur, versionnées, signées avec Ed25519 et réparties par niveaux sur quatre ensembles de règles (waf, bot_signatures, disposable_domains, scan_paths). Le plugin vérifie chaque ensemble de règles par rapport à une clé publique intégrée avant de l’appliquer et se rabat toujours sur un ensemble de règles de base intégré ; ainsi, un flux altéré, surdimensionné ou inaccessible ne peut jamais corrompre vos règles. Les nouvelles signatures d’attaques sont diffusées à toutes les installations en quelques heures, sans qu’aucune mise à jour du plugin ne soit nécessaire.

  • Gratuit sur tous les forfaits — le moteur WAF et l’ensemble de règles de base OWASP Top 10 « Paranoia Level-1 », entièrement utilisables hors ligne en mode Local Shield à partir de la base de référence intégrée.
  • Priority Sync (formules Professional et supérieures) — les ensembles de règles Paranoia Level-2/3 plus approfondis, fréquemment mis à jour et signés (couverture de l’obfuscation et du contournement), ainsi que les flux en temps réel sur les plages d’adresses IP de bots et les domaines jetables. La formule Free synchronise la base de référence intégrée ; la formule Contributor, chaque semaine ; les formules Professional et supérieures, quotidiennement.
  • Module « Extended Protection » (en option) — un module pré-WordPress auto_prepend_file qui exécute le WAF avant le chargement de WordPress. Les piles Apache (.htaccess) et PHP-FPM — y compris nginx + PHP-FPM — sont automatiquement configurées via un répertoire racine .user.ini, qui couvre tous les Endpoints PHP indépendamment des location (depuis la version 2.1.17) ; les piles sans SAPI PHP FastCGI bénéficient d’une ligne dans le fichier php.ini ou dans le panneau d’hébergement auto_prepend_file ou un extrait de code nginx fastcgi_param extrait de l’onglet « Configuration du serveur ». Par défaut, le garde ignore l’inspection du corps de la requête pour les requêtes authentifiées ; ainsi, les éditeurs connectés qui enregistrent du contenu ne le déclenchent jamais. Les règles relatives aux URL et aux user-agents continuent toutefois de s’appliquer, et le moteur intégré à WordPress reste le dispositif de sécurité tenant compte des capacités. Désactivé par défaut ; sa suppression supprime les directives contrôlées par Hive et neutralise le garde en le transformant en un espace réservé inerte au lieu de le supprimer (depuis la version 2.1.8), de sorte qu’une directive résiduelle dans un fichier php.ini ou une configuration nginx modifiée manuellement ne peut jamais pointer vers un fichier manquant et provoquer une erreur 500 sur le site. La désactivation du moteur WAF ou le passage en mode « rapport uniquement » neutralise également automatiquement le garde.
  • Codes de référence — chaque bloc (WAF ou capteur) comporte un code corrélable tel que WAF_SQLI-3F9A2B71, affiché sur la page de blocage et émis dans l’en-tête X-RIP-Ref en-tête. Un visiteur bloqué par erreur fournit une courte chaîne de caractères que l’administrateur peut retrouver dans les journaux ; ce jeton est un hachage à sens unique de l’adresse IP, du motif et de l’heure, ce qui garantit qu’aucune donnée personnelle n’est exposée.

La configuration et l’état en temps réel se trouvent dans le menu dédié au pare-feu : un mini-Dashboard « Aperçu » (état par module, compteurs sur 7 jours, événements récents du pare-feu), un onglet WAF (moteur / mode / sélecteur de niveau de paranoïa), un onglet « Vérification des bots », un onglet « Défense anti-spam » (adresses e-mail jetables + Honeypots), une vue de l’état de Rule Sync et un onglet « Configuration du serveur » qui regroupe tous les extraits de code du serveur web en un seul endroit.

WAF Exceptions — Gestion des False Positives

Depuis la version 2.1.9, un False Positive peut être résolu depuis l’interface d’administration sans modifier le code — à l’instar du fonctionnement des exclusions ModSecurity et de l’Allowlist de Wordfence. Un endpoint propriétaire qui reçoit légitimement des Payloads ressemblant à des attaques (un formulaire acceptant du code HTML, une API de sécurité ingérant des données d’attaques signalées, un constructeur de pages publiant du balisage brut) déclenche parfois une signature d’injection ; une exception permet à ce cas particulier de passer tandis que le moteur continue de protéger tout le reste.

  • Où ? Pare-feu → WAF → WAF Exceptions, plus une action « Autoriser » en un clic sur chaque ligne du journal WAF qui préremplit une exception ciblée pour exactement cette règle sur ce chemin — pas besoin de connaître l’ID de la règle par cœur.
  • Portées. Une exception cible une règle unique (par ID de règle, extrait du journal des blocages du WAF), un groupe de règles (sélectionné parmi les catégories connues du moteur) ou — pour un Endpoint propriétaire — l’ensemble du moteur sur un chemin, éventuellement restreint à une plage d’adresses IP ou CIDR. Une exception portant sur l’ensemble du moteur doit toujours comporter une restriction de chemin d’accès ou d’adresse IP, afin que le pare-feu ne puisse jamais être désactivé globalement par accident.
  • Définissez son champ d’application de manière aussi restrictive que possible. Préférez une règle unique sur un chemin à un groupe de règles, et un groupe de règles à une exception portant sur l’ensemble du moteur. Le journal des blocages enregistre la valeur correspondante, la cible inspectée, la méthode de requête, l’URI et l’agent utilisateur (depuis la version 2.1.11), ce qui vous permet de voir exactement quelle règle s’est déclenchée et pourquoi avant de l’autoriser.
  • Extended Protection respecte cette même liste. Les exceptions actives sont intégrées au pare-feu « drop-in » pré-WordPress et réactualisées à chaque modification de l’Allowlist — la couche pré-WordPress et le moteur intégré à WordPress sont toujours en accord.
  • Multisite et formules d’abonnement. Les exceptions constituent des données à l’échelle du réseau, disponibles sur toutes les formules d’abonnement — le moteur de protection lui-même reste gratuit.
  • Porte de secours pour les développeurs. apply_filters('reportedip_hive_waf_bypass_routes', []) Exclut les routes REST au niveau du code. La correspondance s’effectue via un test de préfixe ancré par rapport à la route REST WP résolue — jamais via une sous-chaîne non ancrée de l’URI brute — ; ainsi, un jeton de contournement introduit clandestinement dans un paramètre de requête sans rapport ne peut pas désactiver le WAF.

Verified Bot Detection, Disposable-Email Blocking et Comment Honeypot

  • Verified Bot Detection (Free). Permet de confirmer qu’une requête se présentant comme provenant de Googlebot, Bingbot ou d’un autre robot d’indexation provient bien de celui-ci — d’abord par une correspondance sans DNS avec les plages d’adresses IP officielles du robot (Priority Sync), puis par un recours au Reverse DNS confirmé en amont qui résout à la fois les enregistrements A et AAAA. Les usurpateurs sont signalés (par défaut) ou bloqués ; un robot d’indexation authentique n’est jamais bloqué. facebookexternalhit Vérification par rapport aux plages d’adresses IP publiées par Meta.
  • Disposable-Email Blocking (Free). Vérifie l’adresse fournie lors de l’inscription (WordPress et WooCommerce) par rapport à la liste des adresses jetables. Trois modes : désactivé / surveillance / blocage. Les relais de confidentialité (Apple « Hide My Email », Firefox Relay, etc.) constituent une catégorie distincte qui est autorisée par défaut. La liste en temps réel s’appuie sur Priority Sync.
  • Comment Honeypot (Free). Un champ leurre invisible, exclu des lecteurs d’écran, sur le formulaire de commentaire ; les robots de spam qui remplissent tous les champs sont rejetés sans que les visiteurs réels aient à passer par un CAPTCHA.

Security Headers

Renforcement des en-têtes de réponse sur chaque requête front-end. Les en-têtes déjà envoyés par votre serveur ou par un autre plugin sont détectés et laissés intacts.

  • Trio de base (Free)X-Content-Type-Options, X-Frame-Options, Referrer-Policy.
  • Avancé (Professional) — HSTS, Permissions-Policy, une politique de sécurité du contenu (Content-Security-Policy, en mode « rapport uniquement » par défaut, avec un générateur) et le trio d’isolation inter-origines (COOP / CORP / COEP).

L'onglet « Configuration du serveur » permet en outre d'exporter les en-têtes configurés au format nginx add_header / Apache Header au niveau du serveur.

Protection & Hardening Score

Deux jauges du Dashboard (0–100 plus une note de A+ à F, à la manière de Mozilla Observatory) évaluent votre couverture de détection et votre niveau de renforcement de la sécurité, avec des liens directs vers chaque élément pour activer un capteur. Les fonctionnalités verrouillées (payantes) sont prises en compte dans le potentiel visible, mais n’affectent pas votre score — le Free tier peut donc tout de même atteindre la meilleure note.

Dashboard de sécurité et analyses

Le Dashboard principal s’ouvre sur une bande d’en-tête — attaques bloquées au cours des 30 derniers jours, attaques bloquées aujourd’hui, adresses IP actuellement bloquées et nombre de vos couches de protection activées (par exemple 17 / 20). En dessous, les analyses s’appuient sur toutes les données des capteurs, et ne se limitent pas aux compteurs classiques de Login ou de spam.

  • Chronologie des événements de sécurité. Un diagramme de zones empilées regroupant toutes les activités en sept catégories — Login et identifiants, Pare-feu (WAF), Scanners et sondes, Faux bots, Reconnaissance et énumération, Spam et inondations, et Anomalies — sur une période sélectionnable de 7, 30 ou 90 jours.
  • Répartition des menaces. Une ventilation indiquant quelle famille d’attaques a dominé la période, afin que vous puissiez voir d’un seul coup d’œil si vous êtes confronté à des attaques par Brute Force, à des tentatives d’exploitation au niveau du pare-feu, à des scanners ou à du spam.
  • Pare-feu — Principaux types d’attaques. Classement des blocages du WAF par groupe de règles (SQL Injection, cross-site scripting, traversée de chemin, Log4Shell, agents utilisateurs de scanners, etc.).
  • Répartition par niveau de gravité. Nombre d’événements critiques / élevés / moyens / faibles, afin que le volume d’événements graves ne soit jamais masqué par un simple total.
  • Principaux attaquants (30 jours). Les adresses IP sources les plus actives avec leur nombre d’accès, la date de leur dernière détection et s’elles sont actuellement bloquées ou simplement surveillées.
  • Activité récente. Le flux d’événements en temps réel, chaque entrée étant associée à sa gravité et à sa famille de menaces, ainsi qu’aux détails pertinents (règle WAF correspondante, chemin exploré, nom de bot usurpé par le Spoofing).

Tous les chiffres sont réels, quel que soit le forfait : le Dashboard reflète ce que votre site a réellement bloqué. Les forfaits « Professional » et « Business » offrent en outre des analyses plus approfondies (historique et conservation des journaux plus longs, géolocalisation des attaquants et piste d’audit conforme aux normes de conformité décrite ci-dessous).

Audit Event Trail (Business)

Une piste du cycle de vie des utilisateurs en mode « ajout seul » — Logins, échecs de Login, réinitialisations de mot de passe, mises à jour de profil, changements de rôle (y compris l’utilisateur par procuration), inscriptions et détection de nouvelles adresses IP — avec des filtres, l’exportation au format CSV / JSON, l’intégration d’exportation/effacement conforme au RGPD pour WordPress et le nettoyage de la conservation des données (1 an pour la formule Business, configurable pour la formule Enterprise). Stockée dans la audit_log (schéma v9). Les journaux de sécurité standard de 30 jours restent disponibles sur toutes les formules ; la piste d’audit constitue l’enregistrement conforme aux normes de conformité qui s’y ajoute.

MainWP Integration

Hive peut être géré à distance depuis un Dashboard MainWP sans plugin enfant supplémentaire et sans extension MainWP à acheter. Il s’intègre au filtre « MainWP Child » mainwp_child_extra_execution , de sorte que chaque tâche est authentifiée par le canal MainWP Child existant — pas d’identifiants supplémentaires, pas de nouvelle surface d’attaque. La configuration est simple : installez MainWP Child et Hive sur le site géré, connectez le site à votre Dashboard MainWP comme d’habitude, et le tour est joué.

Deux types de tâches sont pris en charge :

  • Synchronisation des métriques de sécurité — uniquement les comptages agrégés : blocages actifs, taille de la Whitelist, tentatives de Login échouées, spam dans les commentaires, blocages liés à la réputation, taille de la file d’attente, événements critiques récents, utilisateurs utilisant l’authentification à deux facteurs (2FA). Depuis la version 2.1.6, la synchronisation rend également compte de l’état du pare-feu (waf_enabled, waf_report_only, waf_dropin_enabled, waf_dropin_running, waf_server ainsi qu’un indicateur dérivé waf_needs_setup ), ce qui permet à un Dashboard de signaler les sites dont la « Extended Protection » est activée mais ne fonctionne pas encore — généralement un hôte nginx qui attend toujours son snippet serveur.
  • Provisionnement (reportedip_hive_provision) — envoie une API Key à un site géré depuis le Dashboard de confiance et, depuis la version 2.1.12, permet en option de le basculer en mode « Community Network » dans la même tâche (community indicateur). La tâche de synchronisation signale l’état actuel de chaque site enfant operation_mode.

Aucune adresse IP, aucun nom d’utilisateur, aucun secret ni aucune API Key ne quittent jamais le site géré — la charge utile de la synchronisation se compose uniquement de comptes et d’indicateurs d’état.

Réseaux multisites

La Full Edition est réservée aux réseaux (Network: true, depuis la version 2.0.0) : l’activation par site est masquée par WordPress afin que la configuration de sécurité reste uniforme sur l’ensemble du réseau. Les neuf tables se trouvent toutes sous $wpdb->base_prefix, ce qui fait que chaque décision relative aux menaces s’applique à l’ensemble du réseau : les tentatives de Brute-Force inter-sites sont agrégées dans un compteur central, et un seul blocage exclut l’adresse IP de tous les sous-sites simultanément.

  • Les administrateurs de réseau disposent de l’ensemble des paramètres et d’une vue des journaux pour tous les sites.
  • Les administrateurs de site sur un sous-site disposent d’une interface utilisateur « Statut / Journaux » en lecture seule, ainsi que de deux options de remplacement modifiables par site : le slug « Frontend 2FA » et les rôles supplémentaires pour l’application de l’authentification à deux facteurs (un sous-site peut appliquer l’authentification à deux facteurs à davantage de rôles, mais jamais à moins).
  • Cron ne s’exécute que sur le site principal — pas de synchronisations en double ni de nettoyages par sous-site.
  • Les WAF Exceptions concernent l’ensemble du réseau et sont gérées par l’administrateur réseau.

Authentification à deux facteurs (2FA)

Quatre méthodes sont prises en charge et peuvent être combinées par utilisateur. Les Recovery Codes sont générés lors de la première configuration. Les secrets sont chiffrés au repos (libsodium avec un repli sur OpenSSL).

  • TOTP — RFC 6238 (6 chiffres, fenêtre de 30 secondes). Compatible avec Google Authenticator, Authy, 1Password, Bitwarden, …
  • E-mail — mot de passe OTP à six chiffres via le fournisseur de messagerie configuré ; débit limité (3 codes toutes les 15 minutes, 5 tentatives de vérification par code, délai de réenvoi de 60 secondes).
  • SMS — mot de passe à usage unique (OTP) à six chiffres via le SMS Relay managed reportedIP (formule Professional et supérieures ; voir ci-dessous). Le numéro de téléphone est chiffré au repos.
  • WebAuthn — Passkeys, clés de sécurité (YubiKey), authentificateurs de plateforme (Touch ID, Face ID, Windows Hello). Analyseur CBOR interne, aucune dépendance externe.
  • Trusted Devices — jetons « se souvenir de cet appareil » (opt-in) avec durée d’expiration configurable (30 jours par défaut). Stockés sous forme de wp_reportedip_hive_trusted_devices sous forme de hachages SHA-256.
  • Recovery Codes — 10 codes à usage unique xxxx-xxxx ; alerte de niveau de code faible lorsqu’il en reste ≤ 3.

Hardware Security Key (YubiKey)

Depuis la série 2.1.33–2.1.36, les clés matérielles FIDO2 sont pleinement prises en charge : la série YubiKey 5 (USB-A, USB-C, Lightning et les modèles NFC à approcher d’un téléphone), la gamme Security Key de Yubico et tous les autres authentificateurs CTAP2 fonctionnent sur les trois surfaces de défi : la page interstitielle wp-login, le défi de la boutique WooCommerce et la page de réinitialisation du mot de passe. Les anciennes clés U2F uniquement (CTAP1) ne sont pas officiellement prises en charge.

  • Configuration : ouvrez votre page de profil (Utilisateurs → Profil → Authentification à deux facteurs), sélectionnez « Ajouter une clé de sécurité » → « Clé de sécurité (USB / NFC) », donnez un nom à la clé, puis insérez-la et touchez le contact doré lorsque le navigateur vous y invite. Sur un téléphone, placez la clé à plat contre l’arrière de l’appareil, près du haut (NFC). Aucun code PIN FIDO2 n’est requis pour l’enregistrement.
  • Une clé par compte est gratuite. Le Business plan ajoute des clés de sécurité avancées : plusieurs clés par compte — enregistrez une deuxième YubiKey et conservez-la en lieu sûr à titre de sauvegarde — ainsi que la détection automatique du modèle (« YubiKey série 5 avec NFC » s'affiche à côté de la clé) et des alertes par e-mail chaque fois qu'une clé est ajoutée ou supprimée.
  • Vous avez perdu votre clé ? Connectez-vous à l’aide de l’un de vos Recovery Codes (ou de votre clé de secours avec le forfait Business), puis supprimez la clé perdue sur la page de votre profil. La suppression de la dernière clé désactive définitivement cette méthode.
  • Détection des clones — chaque connexion fait incrémenter le compteur de signatures de la clé. Toute authentification dont le compteur n’augmente pas est rejetée, consignée et signalée au titulaire du compte par e-mail, quel que soit le forfait.
  • Algorithmes — ES256 sur chaque clé ; Ed25519 est négocié automatiquement sur le micrologiciel YubiKey 5.2.3+ lorsque le serveur dispose de libsodium.

Protection contre les attaques Brute Force de 2FA

L'échelle de vérification de l'authentification à deux facteurs (2FA) est la suivante : 3 → 30 s, 5 → 5 min, 10 → 30 min, 15 → 1 h. Lorsque le compteur atteint le dernier échelon, l'adresse IP est transférée vers le auto_block_ip() (événement 2fa_brute_force) ce qui déclenche une escalade progressive et des Reports en mode « Community » comme pour tout autre capteur.

Headless 2FA REST

Pour les intégrations d’applications, le plugin expose trois routes sous l’espace de noms reportedip-hive/v1:

  • POST /2fa/challenge — nom d’utilisateur + mot de passe → jeton de défi + méthodes activées (20 requêtes / 5 min par adresse IP).
  • POST /2fa/verify — jeton + méthode + code → définit le cookie d’authentification (30 requêtes / 5 min par adresse IP).
  • GET /2fa/methods — affiche les méthodes actives pour l’utilisateur actuel.

Login front-end WooCommerce

Le Frontend 2FA de Hive s’intègre à votre thème de boutique en ligne actif : les clients se connectant via [woocommerce_my_account], la page de paiement classique ou les blocs « Panier » / « Paiement » de WooCommerce effectuent leur deuxième facteur d’authentification sur une page personnalisée selon le thème. L’état du panier et de la page de paiement est conservé après la redirection, et le cookie Trusted Device est partagé avec le flux wp-login.

  • Chemin de configuration2FA → Login en front-end pour WooCommerce.
  • Slugs configurables — slug de vérification (par défaut reportedip-hive-2fa) et slug de configuration (par défaut reportedip-hive-2fa-setup) ; tous deux modifiables, avec vérification des conflits, et les règles de réécriture sont automatiquement actualisées en cas de modification.
  • Rétrogradation de forfait — désactivation en douceur sur les forfaits Free et Contributor ; les paramètres, les choix de slugs et l’état d’intégration sont conservés, aucune perte de données lors de la nouvelle mise à niveau.
  • Détection des conflits — Hive affiche un message d’administration lorsque Solid Security, le plugin WP Two-Factor ou Wordfence 2FA gère le formulaire de Login, et désactive le défi en interface publique pour éviter les doubles invites.
  • Disponibilité des formules — Formule « Professional » et supérieures. Les capteurs gratuits d’échec de Login WooCommerce (woocommerce_login_failed, woocommerce_checkout_login_form_failed_login) restent disponibles sur tous les forfaits et continuent d’alimenter le compteur Brute-Force.

Envoi d’e-mails et de SMS

La couche de messagerie fonctionne via un contrat de fournisseur modulable (ReportedIP_Hive_Mailer). Le fournisseur par défaut est WordPress wp_mail() ; les intégrateurs peuvent le remplacer par leur propre fournisseur sans modifier le reste du plugin. À partir de la formule Professional, les e-mails transactionnels (codes 2FA, notifications de sécurité) peuvent être acheminés via le Mail Relay géré reportedIP.com — une infrastructure d’expédition conforme aux normes SPF, DKIM et DMARC —, ce qui évite que les e-mails contenant des codes OTP ne finissent dans les spams, contrairement à ce qui arrive souvent avec un wp_mail() provenant d’un hébergement mutualisé.

  • L’authentification à deux facteurs par SMS est une fonctionnalité de la formule « Professional » fournie exclusivement via le relais géré reportedIP.com — aucun compte SMS personnel, identifiants Twilio ou contrat avec un opérateur n’est requis. Elle est configurée automatiquement avec une formule payante ; activez-la sous Paramètres → 2FA → SMS. Le délai de réenvoi par destinataire augmente progressivement (0 s → 30 s → 1 m → 2 m → 5 m → 15 m), ce qui permet de redemander un SMS lent ou non reçu sans pénalité, tandis qu’un véritable pic de trafic reste limité.
  • Forfaits mensuels et packs prépayés. Le forfait PRO comprend 25 SMS / 500 e-mails par mois, le forfait Business 75 / 2 500 (par licence). Les forfaits prépayés viennent compléter ces quotas — consultez le tableau des niveaux ci-dessus pour connaître les tarifs et le paragraphe consacré à l’ordre de consommation des forfaits pour savoir exactement ce qui se passe lorsqu’un quota est épuisé (attention, spoiler : les e-mails reviennent alors au serveur local wp_mail(), aucune méthode d’authentification à deux facteurs (2FA) n’est jamais désactivée).
  • Modèles d’e-mails personnalisés (à partir de la formule Business). La formule Business permet de personnaliser les e-mails transactionnels : votre logo, vos couleurs et l’identité de l’expéditeur apparaissent sur les e-mails de 2FA et de notification à la place de la marque ReportedIP, en accord avec le Setup Wizard et les pages de 2FA personnalisées.
  • Aperçu de la configuration

    Tous les paramètres se trouvent sous ReportedIP Hive → Paramètres. Les valeurs par défaut les plus importantes :

    ParamètreValeur par défautDescription
    operation_modeLocal ShieldLocal Shield ou Community Network.
    block_threshold75 %Confidence Score minimum pour bloquer une adresse IP (mode Communauté).
    login_threshold / _timeframe5 / 15 minNombre de tentatives de Login infructueuses par adresse IP avant le blocage automatique.
    comment_spam_threshold / _timeframe5 / 60 minNombre de commentaires par adresse IP avant le blocage automatique.
    scan_404_threshold / _timeframe12 / 2 minNombre de pages 404 par adresse IP avant le blocage du scanner.
    xmlrpc_threshold / _timeframe10 / 60 minNombre de requêtes XMLRPC par adresse IP avant blocage automatique.
    rest_burst_threshold / _timeframe240 / 5 minRequêtes REST anonymes par adresse IP. Contournement des pages de consentement.
    block_duration_hours24 hBlocage de durée fixe (utilisé lorsque l'échelle est désactivée).
    block_escalation_enabled + block_ladder_minutesActivé — 5, 15, 30, 1 440, 2 880, 10 080Échelle progressive (minutes par étape).
    report_modeActifactive (bloc) ou report_only (journal sans blocage).
    data_retention_days30 joursDurée de conservation des journaux de sécurité avant leur suppression automatique.
    auto_anonymize_days7 joursAnonymiser l'adresse IP et l'agent utilisateur sur les lignes de journal datant de plus de N jours.
    cache_duration / negative_cache_duration24 h / 2 hDurée de vie (TTL) du cache ETag pour les recherches de réputation positive / négative.
    max_api_calls_per_hour100Limite souple pour répartir l'utilisation de l'API tout au long de la journée.
    2fa_enforce_roles(vide)Rôles séparés par des virgules avec 2FA obligatoire.
    2fa_grace_days7Jours avant que la mesure ne bloque effectivement l'accès aux utilisateurs non inscrits.
    2fa_trusted_device_days30Expiration du jeton d’un Trusted Device.
    hide_login_enabled / _slug / _response_modeDésactivé — — page_de_blocageSlug Login personnalisé ; l’ancienne URL renvoie la page de blocage ou une erreur 404.

    Tables de la base de données

    Neuf tables, créées lors de l’activation et préfixées wp_reportedip_hive_. Version 13 du schéma, avec migration idempotente étape par étape à chaque mise à jour du plugin ; suppression sur demande lors de la désinstallation. En mode Multisite, toutes les tables se trouvent sous $wpdb->base_prefix , de sorte que les décisions relatives aux menaces s’appliquent à l’ensemble du réseau.

    • logs — événements de sécurité, détails JSON, gravité, indicateur « signalé » ; source des analyses du Dashboard (tendances sur 7, 30 et 90 jours, répartitions par famille et par gravité, principaux attaquants).
    • whitelist — adresses IP et plages CIDR de confiance ; expiration facultative.
    • blocked — blocages actifs (manuels / automatiques / basés sur la réputation), avec blocked_until.
    • attempts — des compteurs par IP et par type de tentative, avec horodatage de la première et de la dernière tentative.
    • api_queue — rapports en attente et ayant échoué vers l’API communautaire ; logique de nouvelle tentative.
    • stats — agrégats quotidiens (Logins échoués, blocages, spam, XML-RPC, réputation) pour les résumés de tendances et les Reports.
    • trusted_devices — jetons d’authentification 2FA (hachages SHA-256), adresse IP et nom de l’appareil, date d’expiration.
    • audit_log — piste d’audit du cycle de vie des utilisateurs en mode « ajout seul » (Business) ; ajoutée dans le schéma v9.
    • waf_exceptions — l’Allowlist WAF gérée par le backend (portée : règle / groupe / chemin d’accès, IP/CIDR en option) ; ajoutée dans le schéma v10, à l’échelle du réseau.

    Shortcodes front-end et pied de page automatique

    Intégrez un petit badge « protégé par Hive » n’importe où sur le site. Tous les codes courts génèrent un seul <rip-hive-banner> composant web et récupèrent les chiffres en temps réel à partir d’un cache temporaire de 6 heures (aucun appel API par page vue).

    • [reportedip_badge] — petit badge (ton de protection par défaut).
    • [reportedip_stat] — statistique unique (ton « confiance » par défaut).
    • [reportedip_banner] — grande bannière (ton « communauté » par défaut).
    • [reportedip_shield] — icône en forme de bouclier (ton « Contributor » par défaut).

    Attributs communs : stat (par exemple attacks_30d, reports_total), tone (protect / trust / community / contributor), color, background, label, intro. Le pied de page automatique de l’assistant utilise le même composant, avec une variante et un alignement configurables.

    Référence WP-CLI

    Les outils d’authentification 2FA sont entièrement scriptables. Disponibles sous wp reportedip 2fa …:

    wp reportedip 2fa status [--user=<id>]
    wp reportedip 2fa enable <user_id> --method=<totp|email|sms|webauthn> [--secret=<base32>]
    wp reportedip 2fa disable <user_id> [--method=<m>]
    wp reportedip 2fa reset <user_id>
    wp reportedip 2fa enforce --role=<role> [--remove]
    wp reportedip 2fa audit [--user=<id>] [--since=<date>]
    wp reportedip 2fa cleanup

    Compatibilité avec les plugins de cache

    Depuis la version 1.5.2, la réponse de page bloquée définit DONOTCACHEPAGE, DONOTCACHEDB et DONOTCACHEOBJECT (respectée par WP Rocket, W3 Total Cache, WP Super Cache et LiteSpeed Cache) et émet explicitement Cache-Control: no-store, no-cache, must-revalidate, max-age=0, Pragma: no-cache ainsi que le paramètre du cœur de WordPress nocache_headers() . Un seul attaquant bloqué ne peut plus polluer le cache de la page avec un code 403 que les visiteurs légitimes recevraient autrement jusqu’à l’expiration du cache.

    Filtres et crochets d’action

    • apply_filters('reportedip_hive_external_url', $url, $context) — remplacez n’importe laquelle des URL externes (politique de confidentialité, inscription, FAQ, …).
    • apply_filters('reportedip_hive_rest_bypass_routes', $routes) — étendez la liste des préfixes de routes REST qui contournent le moniteur de rafales (intégrations de bannières de cookies).
    • apply_filters('reportedip_hive_scan_paths', $paths) — étendez la liste des chemins d’accès aux Honeypots pour le détecteur d’analyse.
    • apply_filters('reportedip_hive_decoy_paths', $paths) — étendre la liste des chemins leurres.
    • apply_filters('reportedip_hive_waf_bypass_routes', $routes) — exclure des routes REST du WAF au niveau du code (correspondance de préfixe ancré par rapport à la route résolue ; vide par défaut). Privilégiez les WAF Exceptions gérées par le backend pour les False Positives ponctuels.
    • apply_filters('reportedip_hive_mail_provider', $provider) — Intégrez votre propre fournisseur de messagerie (implémentez interface-mail-provider.php).
    • do_action('reportedip_hive_ip_blocked', $ip, $reason) — déclenché lorsqu’une adresse IP est bloquée.
    • do_action('reportedip_hive_report_queued', $ip, $category) — déclenché lorsqu’un rapport est mis en file d’attente pour l’API.

    Foire aux questions

    Les questions qui nous sont le plus souvent posées. Chaque réponse renvoie, le cas échéant, à la section correspondante ci-dessus.

    Généralités

    Qu'est-ce que Hive, et quel est son lien avec ReportedIP ?

    ReportedIP Hive est le plugin WordPress que vous installez sur votre site. ReportedIP (reportedip.com) est le service central qui agrège la Threat Intelligence. Hive peut fonctionner de manière totalement autonome (Local Shield) ou communiquer avec le service (Community Network) — ces deux modes sont tout à fait équivalents.

    Ai-je besoin d'un compte pour utiliser le plugin ?

    Non — Local Shield fonctionne sans compte ni API Key. Vous n’avez besoin d’un compte ReportedIP Free que si vous souhaitez activer Community Network, qui ajoute des vérifications de réputation par rapport à Hive et partage en retour des rapports d’attaques anonymisés.

    Combien cela coûte-t-il ?

    Le plugin lui-même est gratuit sous licence GPLv2+. Local Shield ne nécessite jamais de forfait payant. Community Network propose un Free tier ; les niveaux supérieurs augmentent les quotas quotidiens de vérifications et de rapports. Consultez le Dashboard pour connaître les quotas actuels.

    Le plugin est-il disponible sur WordPress.org ?

    Il existe deux éditions. Hive Light est publié sur WordPress.org sous le slug reportedip-hive — protection contre les tentatives de connexion par Brute-Force et vérification communautaire en option, sans 2FA ni vente incitative. L’édition Full Edition décrite sur cette page est distribuée via GitHub Releases avec des mises à jour en un clic gérées par le Plugin-Update-Checker intégré. La raison de ces deux éditions : les directives de wp.org interdisent les ventes incitatives, les relais payants gérés et les systèmes de niveaux Multisite — autant de fonctionnalités sur lesquelles repose l’édition Full Edition. Consultez les Docs de Hive Light pour le plugin distribué par wp.org. Important : n’installez pas les deux plugins sur le même site — ils partagent le même domaine de texte et le même préfixe de classe.

    Où se trouve le code source ? Puis-je l’auditer ?

    Oui — le code source complet est disponible sur github.com/reportedip/ReportedIP Hive. Les tickets, les pull requests, le Changelog et les exécutions CI sont tous publics.

    Installation et configuration

    Comment installer le plugin ?

    Téléchargez reportedip-hive.zip à partir de la dernière version disponible sur GitHub Releases, puis dans WordPress : Plugins → Ajouter → Télécharger un plugin, sélectionnez le fichier ZIP, cliquez sur « Installer maintenant », puis sur « Activer ». Le Setup Wizard en 10 étapes se lance automatiquement.

    J’ai ignoré le Setup Wizard — comment puis-je le relancer ?

    Dans Paramètres → ReportedIP Hive, en haut de la page, vous trouverez un lien « Relancer le Setup Wizard ». Le Setup Wizard est non destructif : il affiche les valeurs actuelles comme valeurs par défaut, ce qui vous permet de parcourir les étapes et de ne modifier que ce dont vous avez besoin.

    Comment passer du mode « Local Shield » au mode « Community Network » ?

    Paramètres → Connexion → Mode de fonctionnement. Aucune donnée n’est perdue lors du changement. Le passage au « Community Network » nécessite une API Key valide.

    Puis-je importer des paramètres depuis un autre site ?

    Oui — Paramètres → Importer / Exporter. L’exportation se fait au format JSON, avec une limite de 512 Ko pour le téléchargement. Pour des raisons de sécurité, les API Keys et les secrets 2FA ne sont pas inclus ; tout le reste (seuils, échelles, Whitelist, slug de connexion masqué) est transférable.

    Comment fonctionnent les mises à jour ?

    Plugin Update Checker v5.6+ interroge GitHub Releases toutes les 12 heures. Les nouvelles versions apparaissent dans la section Plugins comme n’importe quelle autre mise à jour — installation en un clic. Le format de la balise doit être vX.Y.Z; le workflow release.yml valide l’en-tête + la constante + la balise « stable » du fichier README.

    Modes et capteurs

    Quelles informations sont exactement partagées avec la communauté lorsque je suis en mode « Community Network » ?

    Trois éléments par attaque : l’adresse IP de l’attaquant, la Threat Category (par exemple, Brute-Force, spam dans les commentaires, XML-RPC, scanner) et un horodatage. À cela s’ajoute la API Key de votre site afin que le rapport puisse être attribué à son auteur. Rien d’autre : ni noms d’utilisateur, ni mots de passe, ni contenu des commentaires, ni données des utilisateurs finaux, ni URL de sites dans la Payload.

    Quels sont les seize capteurs et puis-je en désactiver certains individuellement ?

    Consultez la section « Les seize Attack Sensors » ci-dessus pour obtenir la liste complète et les valeurs par défaut. Oui — chaque Attack Sensor dispose d’un bouton d’activation/désactivation principal et de curseurs de seuil/durée dans Paramètres → Protection. Vous pouvez également désactiver un Attack Sensor dans son intégralité sans désactiver les autres.

    Qu’est-ce que le « Report-Only Mode » ?

    Le plugin enregistre tout mais ne bloque rien. Utile lorsque vous ajustez les seuils sur un site très fréquenté et que vous souhaitez voir ce qui aurait été bloqué avant d’activer le commutateur. Paramètres → Protection → Report-Only Mode.

    Comment fonctionne la Progressive Block Escalation ?

    Échelle par défaut : 5 min → 15 min → 30 min → 24 h → 48 h → 7 j. Chaque blocage répété pendant la période de réinitialisation (30 jours par défaut) fait passer le compte à rebours d’un cran. Après 30 jours sans incident, l’adresse IP recommence à l’étape 1. Les cas de CGNAT et les erreurs de saisie des administrateurs sont résolus en quelques minutes ; les attaquants persistants atteignent 7 jours. Activable/désactivable ; revient au blocage fixe block_duration lorsqu’elle est désactivée.

    En quoi consiste la fonctionnalité « Hide Login » ?

    Elle remplace /wp-login.php par un slug personnalisé (3 à 50 caractères, les slugs figurant sur la Blacklist sont rejetés). L’ancienne URL renvoie soit une page de blocage Hive, soit une erreur 404 standard — à vous de choisir. Les flux REST, AJAX, WP-CLI et de réinitialisation de mot de passe sont automatiquement contournés afin de continuer à fonctionner. Réduit considérablement la surface d’attaque contre les attaques par force brute automatisées.

    Lorsque la fonctionnalité Hide Login est activée, les accès directs répétés à l’ancienne /wp-login.php provenant d’une même adresse IP sont considérés comme un scan et bloqués selon la procédure d’escalade standard. Une seule visite accidentelle reste inoffensive — seul un schéma récurrent déclenche un blocage. Ajustez le seuil ou désactivez le blocage dans Paramètres → Hide Login.

    Depuis la version 2.1.19, la page de Login personnalisée est compatible avec la mise en cache des pages : elle se désactive de tous les caches de pages connus (WP Rocket, W3 Total Cache, WP Super Cache, WP Fastest Cache, Comet Cache, Cache Enabler, Hummingbird, LiteSpeed Cache) et respecte la convention de permaliens avec barre oblique finale du site ; la connexion fonctionne donc de manière fiable derrière les caches et sur les sites nginx qui imposent l’utilisation de la barre oblique finale.

    2FA

    Quelles méthodes d’authentification à deux facteurs (2FA) Hive prend-il en charge ?

    Quatre : TOTP (RFC 6238 — Google Authenticator, Authy, 1Password, Bitwarden, …), OTP par e-mail, OTP par SMS (via le relais géré, formule Professional), WebAuthn (Passkeys, YubiKey, Touch ID, Face ID, Windows Hello). Sans oublier les Recovery Codes à usage unique et les jetons de Trusted Devices.

    Puis-je imposer la 2FA uniquement à certains utilisateurs ?

    Oui — sélectionnez les rôles dans Paramètres → 2FA → Rôles concernés. Les utilisateurs concernés sont guidés par un assistant de configuration en 5 étapes lors de leur premier Login, avec un délai de grâce configurable (7 jours par défaut). Depuis la version 2.1.22, le comportement par défaut une fois la période de grâce et le quota de tentatives épuisés est l’inscription forcée, et non un verrouillage : l’utilisateur est connecté et redirigé directement vers le Setup Wizard sans option de contournement. L’ancien comportement de verrouillage définitif est disponible sous la forme de la politique « Bloquer la connexion » — mais les administrateurs et les super-administrateurs suivent toujours la voie de l’inscription forcée, de sorte qu’un site ne peut jamais perdre son dernier administrateur capable de se connecter.

    J’ai perdu mon téléphone / mon générateur d’authentification — comment puis-je me reconnecter ?

    Utilisez l’un des dix Recovery Codes que vous avez enregistrés lors de la configuration de la 2FA. Si vous les avez également perdus, un administrateur peut réinitialiser la 2FA pour n’importe quel utilisateur sous Utilisateurs → 2FA. En dernier recours absolu : wp reportedip 2fa reset <user_id> via WP-CLI / SSH.

    Combien de temps un « Trusted Device » reste-t-il de confiance ?

    Configurable ; par défaut, 30 jours. Le jeton est un hachage SHA-256 stocké dans wp_reportedip_hive_trusted_devices avec l’adresse IP et le nom de l’appareil. Le capteur d’anomalies géographiques peut révoquer automatiquement les jetons des Trusted Devices en cas de changement de pays ou d’ASN.

    WebAuthn fonctionne-t-il sur tous les navigateurs ?

    Les versions récentes de Chrome/Edge/Safari/Firefox sur macOS, Windows, iOS et Android — oui. WebAuthn nécessite HTTPS (ou localhost pour le développement). Les navigateurs plus anciens ou renforcés ne prenant pas en charge WebAuthn basculent automatiquement vers TOTP/e-mail/SMS.

    Puis-je intégrer l’authentification à deux facteurs (2FA) dans une application headless ou mobile ?

    Oui — l’espace de noms REST reportedip-hive/v1 expose POST /2fa/challenge, POST /2fa/verify et GET /2fa/methods. Limitation par adresse IP (20 / 30 / Unlimited par fenêtre de 5 minutes).

    Performances et compatibilité

    Hive est-il compatible avec WP Rocket / W3 Total Cache / WP Super Cache / LiteSpeed ?

    Oui — depuis la version 1.5.2, la réponse de la page bloquée définit DONOTCACHEPAGE, DONOTCACHEDB et DONOTCACHEOBJECT ainsi que les Cache-Control: no-store, no-cache, must-revalidate, max-age=0, Pragma: no-cache et le paramètre du cœur de WordPress nocache_headers() . Un attaquant bloqué ne peut plus polluer le cache des pages.

    Cela fonctionne-t-il derrière Cloudflare ?

    Oui. Le plugin lit CF-Connecting-IP , puis se rabat sur X-Forwarded-For et REMOTE_ADDR. Whitelistez les adresses IP de surveillance de votre origine si vous utilisez Cloudflare comme proxy pour une page d'état.

    Qu'en est-il des plus de 50 appels REST générés par l'éditeur de blocs WordPress (Gutenberg) ?

    Depuis la version 1.2.2, les utilisateurs connectés ne sont plus pris en compte par le moniteur global de pics de requêtes REST ; seuls les pics provenant d’utilisateurs anonymes sont comptabilisés. La condition de correspondance du chemin d’accès du scanner s’applique toujours (ainsi, Gutenberg ne peut pas interroger accidentellement .env). Assurez-vous d’utiliser la version 1.2.2 ou une version plus récente.

    Comment limiter l’utilisation de l’API ?

    Par défaut, le cache ETag conserve les requêtes positives pendant 24 h et les requêtes négatives pendant 2 h. Augmentez ces durées si votre site est peu sollicité. Le Dashboard affiche le quota en temps réel et la file d’attente afin que vous puissiez voir si vous atteignez la limite. Les rapports par lots générés par cron (toutes les 15 min) regroupent les événements individuels.

    Hive va-t-il ralentir mon site ?

    La vérification de bloc est une requête indexée unique par wp_reportedip_hive_blocked par requête, avec une init priorité 1. La Whitelist est mise en cache en mémoire par requête. Les requêtes de réputation sont asynchrones : la page publique est d’abord affichée, puis le rapport est mis en file d’attente et envoyé lors du prochain cycle de cron.

    Confidentialité et RGPD

    Le plugin est-il GDPR Compliant ?

    Oui — Local Shield n’envoie jamais de données nulle part, Community Network n’envoie que les trois champs ci-dessus, les user-agents sont tronqués à 50 caractères, et les adresses IP peuvent être automatiquement anonymisées après un nombre de jours configurable. Le détail complet du traitement des données figure dans notre politique de confidentialité.

    Dois-je mentionner Hive dans ma propre politique de confidentialité ?

    Oui, si vous utilisez le mode Community Network : indiquez l’utilisation de Hive ainsi que la transmission de l’adresse IP de l’attaquant, de sa catégorie et de l’horodatage à reportedip.com. Si vous utilisez uniquement Local Shield, aucune transmission n’a lieu, mais vous traitez tout de même les adresses IP à des fins de sécurité (art. 6, paragraphe 1, point f) du RGPD), ce qui mérite d’être mentionné dans votre politique de confidentialité.

    Que deviennent mes données si je désinstalle l’application ?

    La désinstallation supprime toutes les wp_reportedip_hive_* tables et supprime toutes les reportedip_hive_* options. Les Reports déjà enregistrés dans la base de données communautaire sont conservés — ils ne permettent pas de vous identifier personnellement (seul le hachage de la API Key permet de les relier à votre site).

    Personnalisation et extension

    Les visiteurs de la bannière de cookies / du point d'endpoint de consentement sont bloqués — comment puis-je étendre la liste des exceptions ?

    Depuis la version 1.5.0, les quatre espaces de noms courants (real-cookie-banner, complianz, borlabs-cookie, cookie-law-info) sont contournés par défaut. Pour une pile personnalisée, interceptez le filtre :

    add_filter('reportedip_hive_rest_bypass_routes', function ($routes) {
        $routes[] = '/my-consent-plugin/v1';
        return $routes;
    });
    Le pare-feu continue de bloquer une requête légitime sur mon site — comment puis-je résoudre ce problème sans désactiver le WAF ?

    Créez une exception WAF — Pare-feu → WAF → WAF Exceptions, ou cliquez directement sur « Autoriser » dans la ligne du journal concernée. Limitez-la à une seule règle sur un chemin d’accès lorsque cela est possible ; une exception à l’échelle du moteur doit toujours comporter une restriction de chemin d’accès ou d’adresse IP afin que le pare-feu ne puisse jamais être désactivé globalement par accident. Les exceptions s’appliquent également au garde « Extended Protection » pré-WordPress. Pour les routes REST, il existe également un filtre au niveau du code, reportedip_hive_waf_bypass_routes. Voir la section « WAF Exceptions » ci-dessus.

    Comment ajouter mes propres chemins d’accès Honeypot au détecteur d’analyse ?

    Hook reportedip_hive_scan_paths:

    add_filter('reportedip_hive_scan_paths', function ($paths) {
        $paths[] = '/.aws/credentials';
        return $paths;
    });
    Puis-je créer mon propre fournisseur de messagerie ?

    Oui — implémentez interface-mail-provider.php pour la messagerie et en l’enregistrant via le filtre de messagerie (reportedip_hive_mail_provider). Les SMS, en revanche, sont exclusivement acheminés via le relais géré de reportedIP.com (formule Professional et supérieures) ; il n’y a pas de fournisseur de SMS auto-hébergé à configurer.

    D’où proviennent les données des codes courts du front-end ?

    D’un cache temporaire de 6 heures. Clés : attacks_30d, attacks_total, blocked_active, whitelist_active, logins_30d, spam_30d, api_reports_30d, reports_total. Les codes courts n’appellent jamais l’API à chaque affichage de page.

    Quotas, formules et compte

    Quels sont les droits associés à chaque rôle ?

    Consultez la documentation sur l’authentification pour le tableau complet. En résumé : Free (1 000 vérifications / 50 Reports par jour), Contributor (5 000 / 200), Professional (25 000 / 1 000), Business (100 000 / 5 000), Enterprise (Unlimited), Honeypot (Unlimited).

    Le Dashboard affiche un arriéré dans la file d’attente — que dois-je faire ?

    Ouvrez Paramètres → File d’attente API. Le bouton « Réessayer » (correction 1.2.4) déclenche désormais réellement l’appel API, et ne se contente plus de réinitialiser le statut. Si les tentatives échouent en raison d’un quota, augmentez la durée de mise en cache ou passez à un forfait supérieur.

    Puis-je exécuter Hive sur une installation Multisite ou en réseau ?

    Oui, entièrement, depuis la version 2.0.0. La Full Edition est réservée au réseau (Network: true) : l’activation par site est masquée par WordPress afin que la configuration de sécurité reste uniforme. Toutes les tables se trouvent sous $wpdb->base_prefix, de sorte qu’une seule décision en matière de menaces s’applique à l’ensemble du réseau : les tentatives de Brute-Force inter-sites sont agrégées dans un compteur central et un seul blocage exclut l’adresse IP de tous les sous-sites. Les administrateurs réseau disposent de tous les paramètres et d’une vue des journaux pour l’ensemble des sites ; les administrateurs de site sur un sous-site disposent d’une interface utilisateur en lecture seule pour l’état et les journaux, ainsi que de deux options de remplacement modifiables par site (slug « Frontend 2FA » et rôles supplémentaires d’application de l’authentification à deux facteurs). Cron ne s’exécute que sur le site principal.

    Dépannage

    Le plugin ne bloque aucune adresse IP

    Vérifiez si le Report-Only Mode est activé — il consigne les menaces sans les bloquer. Vérifiez également que le seuil de blocage n’est pas défini trop haut (75 % par défaut) et que le blocage automatique est activé (la stratégie de durée est désactivée lorsque le blocage automatique est désactivé).

    Erreurs de connexion à l’API en mode « Community Network »

    Assurez-vous que votre serveur peut effectuer des requêtes HTTPS sortantes vers reportedip.com. Certains hébergeurs bloquent les connexions sortantes par défaut. Vérifiez l’API Key sur le Dashboard.

    Les visiteurs de la bannière de cookies sont bloqués

    Depuis la version 1.5.0, les quatre espaces de noms de consentement courants (real-cookie-banner, complianz, borlabs-cookie, cookie-law-info) sont ignorés par défaut. Si votre pile utilise un espace de noms différent, ajoutez-le à la liste d’exclusion via le reportedip_hive_rest_bypass_routes filtre.

    Des utilisateurs légitimes sont bloqués

    Ajoutez leurs adresses IP ou leurs plages CIDR à la Whitelist locale. Les adresses IP figurant sur la Whitelist ne sont jamais bloquées, quelle que soit leur réputation.

    Le pare-feu bloque une requête légitime (False Positive du WAF)

    Ouvrez Pare-feu → WAF, repérez le blocage dans le journal (le X-RIP-Ref code de référence de la page de blocage correspond à une ligne du journal) et cliquez sur Autoriser — cela crée une exception ciblée pour cette règle précise sur ce chemin d’accès. Consultez la section WAF Exceptions pour obtenir des conseils sur la portée des exceptions. Les exceptions s’appliquent également au module Extended Protection pré-WordPress.

    Extended Protection est activée mais indique « ne fonctionne pas »

    C’est courant sur les hébergements nginx où la directive .user.ini n’est pas prise en compte (par exemple, user_ini.filename désactivée, ou lorsque la racine des documents n’est pas le chemin d’analyse). L’onglet Pare-feu → Configuration du serveur affiche les options manuelles : la ligne PHP-FPM-pool / php.ini auto_prepend_file ou le snippet nginx fastcgi_param . Le statut est vérifiable — il indique si la protection s’est effectivement déclenchée pour la requête en cours. Le moteur intégré à WordPress protège le site dans tous les cas ; le module « drop-in » ne fait qu’avancer ces mêmes vérifications.

    Utilisation élevée de l’API / épuisement des vérifications

    Les réponses sont mises en cache localement (avec ETag) pendant 24 heures par défaut. Si vous êtes toujours à court de vérifications, augmentez cache_duration ou passez à un forfait supérieur. Surveillez la file d’attente et le quota sur le Dashboard.

    Blocage dû à l’authentification à deux facteurs (2FA)

    Utilisez l’un des Recovery Codes enregistrés lors de la configuration de la 2FA. Si vous les avez perdus, un administrateur peut réinitialiser la 2FA pour n’importe quel utilisateur sous Utilisateurs → 2FA. En dernier recours : wp reportedip 2fa reset <user_id>.

    Depuis la version 2.1.22, un utilisateur soumis à la 2FA qui ne l’a jamais configurée n’est plus bloqué par défaut : une fois le délai de grâce et les tentatives autorisées épuisés, il est connecté et directement redirigé vers l’inscription forcée (sans option de report). Les administrateurs et les super-administrateurs Multisite ne peuvent jamais être définitivement bloqués, même si vous réactivez la politique « Bloquer la connexion ».

    L’éditeur de blocs (Gutenberg) continue d’être bridé

    L’éditeur de blocs déclenche plus de 50 appels REST en quelques secondes. Depuis la version 1.2.2, les utilisateurs connectés ne sont plus pris en compte par le moniteur global de pics de trafic REST ; seuls les pics provenant d’utilisateurs anonymes sont comptabilisés. Assurez-vous d’utiliser la version 1.2.2 ou une version plus récente.

    RGPD et confidentialité

    Le plugin a été conçu dans le respect de la vie privée et est entièrement GDPR Compliant.

    • Mode « Local Shield » : aucune donnée ne quitte votre serveur. Toutes les détections et tous les blocages s'effectuent localement.
    • Mode « Community Network » : seules l’adresse IP de l’attaquant, la Threat Category et l’horodatage sont partagés. Aucun nom d’utilisateur, aucun mot de passe, aucun contenu de commentaire, aucune donnée relative à l’utilisateur final.
    • Les user-agents sont tronqués à 50 caractères avant leur stockage.
    • Nettoyage automatique : les journaux de sécurité sont supprimés après la période de conservation configurée (30 jours par défaut). L’anonymisation automatique intervient plus tôt (7 jours par défaut).
    • Chiffrement au repos : les secrets TOTP, les identifiants WebAuthn et les numéros de téléphone SMS sont chiffrés avec libsodium (repli sur OpenSSL).
    • Pas de suivi : pas de cookies, pas de pixels de suivi, pas de télémétrie.
    • Intégration aux outils de confidentialité de WordPress : Hive enregistre un exportateur et un effaceur de données personnelles dans le cœur de WordPress ; ainsi, les requêtes effectuées via Outils → Exporter / Effacer les données personnelles incluent automatiquement les enregistrements de Hive concernant le sujet demandé (lignes de journal, Trusted Devices, entrées de piste d’audit). Il propose également un paragraphe à inclure dans le guide de la politique de confidentialité de WordPress (Paramètres → Confidentialité → Guide de la politique) que vous pouvez copier dans votre propre politique.
    • Open source : le code source complet est publié sur GitHub — chaque ligne est vérifiable.

    Points forts du Changelog

    • 2.1.33 – 2.1.36 — Prise en charge officielle de YubiKey et des Hardware Security Keys : procédures WebAuthn complètes sur les trois surfaces de défi, gestionnaire multi-clés avec détection de modèle basée sur l’attestation (Business), détection des clés clonées via une régression du compteur de signatures avec alertes par e-mail sur toutes les formules, Ed25519 lorsque libsodium est disponible, et une section 2FA en langage clair remaniée avec une méthode par défaut sélectionnable par l’utilisateur.
    • 2.1.26 – 2.1.32 — Contrôle croisé des robots d’indexation vérifiés (un user-agent Googlebot usurpé n’achète rien), un mécanisme central de protection « ne jamais bloquer un bot vérifié », des blocages basés sur la réputation de la communauté couvrant toutes les surfaces, la prévention de l’auto-blocage pour les adresses du serveur lui-même, la Block Escalation pondérée en fonction du volume, et l’amélioration des performances : 36 → 11 requêtes par demande, lecture d’un en-tête de Blocklist de 8 Ko et TTFB du Dashboard de 920 → 278 ms (schéma v13).
    • 2.1.25 — Le WAF bloque la classe d’attaques par confusion de routes REST du cœur de WordPress sur tous les forfaits (règles structurelles, pas de correspondance de jetons), inspecte une copie décodée du corps de la requête (ce qui empêche le contournement par Payload encodé), et les blocages de Paranoia Level 2/3 bloquent leur catégorie de référence spécifique.
    • 2.1.22 – 2.1.24 — L’authentification à deux facteurs (2FA) imposée par défaut entraîne désormais une inscription obligatoire au lieu d’un verrouillage (les administrateurs et super-administrateurs ne peuvent jamais être définitivement bloqués) ; une soumission en double du défi 2FA ne bloque plus les utilisateurs sur le message « session expirée » ; la sonde RCE PHPUnit eval-stdin.php (CVE-2017-9841) est bloquée sur toutes les formules.
    • 2.1.14 – 2.1.20 — Exactitude de l’hébergement en production : dates et heures conformes à l’UTC (le blocage automatique échouait silencieusement sur les serveurs de bases de données non UTC), Hide Login fonctionne derrière les caches de page et sur les sites utilisant une barre oblique finale ou Nginx, Extended Protection se configure automatiquement sur nginx + PHP-FPM et ignore l’inspection du corps de la requête pour les éditeurs connectés, la santé de l’API utilise une fenêtre glissante, et l’interrogation du quota de relais sur les chemins fréquents a été supprimée.
    • 2.1.9 – 2.1.13 — WAF Exceptions gérées par le backend avec une action « Autoriser » en un clic (schéma v10), journalisation des blocages intuitive (valeur correspondante, cible, méthode, URI, user-agent), le provisionnement MainWP permet de basculer les sites en mode « Communauté », et le Dashboard de sécurité est devenu une vue analytique complète (sept familles de menaces, graphique des groupes de règles WAF, principaux attaquants).
    • 2.1.0 – 2.1.8 — Lancement du pare-feu : un « Rule Delivery Framework » fourni par le serveur et signé avec Ed25519, alimentant un Web Application Firewall (WAF) inspectant les requêtes (moteur Free + configuration de base « Paranoia Level-1 », niveaux PRO 2/3 via Priority Sync), Verified Bot Detection, Disposable-Email Blocking, Comment Honeypot, Security Headers (de base gratuits, avancés en version PRO), Protection & Hardening Score sur le Dashboard, codes de référence pour les pages de blocage (X-RIP-Ref), l’Audit Event Trail d’entreprise (schéma v9), l’intégration MainWP et un espace d’administration du pare-feu — suivis de corrections de False Positives pour les robots d’indexation légitimes et de la suppression sans risque des éléments « drop-in ».
    • 2.0.x — Activation multisite à l’échelle du réseau (Network: true), gestion des niveaux par blog, bannières de mise à niveau, renforcement des moniteurs de mots de passe d’application et d’anomalies géographiques, ouverture de la Frontend 2FA en interface publique WooCommerce pour la version PRO+, Hardening Mode contre les attaques coordonnées, détection et signalement des chemins leurres.
    • 1.5.2 — Compatibilité avec les plugins de cache sur la page 403 ; la limitation de l’authentification à deux facteurs (2FA) évolue vers un véritable blocage par escalade ; init priorité 1.
    • 1.5.1 — Clarté de l’onglet de blocage (Signaler uniquement > Blocage automatique > stratégie de durée) ; permutation en ligne des éditeurs à longueur fixe et à échelle.
    • 1.5.0 — Progressive Block Escalation (échelle de 5 m → 7 j) ; Endpoints de la bannière de cookies contournés par défaut ; assouplissement des paramètres par défaut pour les pages 404 et le spam dans les commentaires.
    • 1.2.4 — Le bouton « Réessayer » de la file d’attente API déclenche désormais réellement l’appel API.
    • 1.2.0 — Sept nouveaux capteurs : surveillance des mots de passe d’application, surveillance des rafales REST, blocage de l’User Enumeration, détecteur de 404/scans, anomalie géographique, force des mots de passe, Hide Login.
    • 1.1.0 — Système d’envoi d’e-mails centralisé avec modèle personnalisé.
    • 1.0.0 — Première version publique : blocage d’adresses IP, 2FA à 4 méthodes, Setup Wizard, tableaux de listes.

    Historique complet : Changelog.md sur GitHub.

    Vous recherchez la version allégée ?

    ReportedIP Hive Light est la version allégée distribuée sur WordPress.org : protection contre les tentatives de connexion par Brute Force, plus des recherches optionnelles sur la réputation des adresses IP par la communauté. Pas de 2FA, pas de niveaux d’abonnement, pas de relais géré. Le choix idéal pour les petits sites et les amateurs. Consultez la documentation de Hive Light ou installez-le directement depuis WordPress.org .

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

    Security Focused
    GDPR Compliant
    Made in Germany
    Retour aux Docs