⏱️ Qu'est-ce que la Limitation de Débit?
La Limitation de Débit contrôle le nombre de requêtes qu'une IP peut effectuer dans une fenêtre de temps donnée. Si une IP dépasse la limite configurée, une action est déclenchée (surveillance, défi ou blocage). C'est la défense principale contre les attaques par force brute (tentatives de connexion massives), le scraping (extraction automatisée de contenu) et l'abus de ressources (requêtes excessives aux API ou formulaires).
🎯 Ce qu'il protège
- Login / wp-admin : Arrête les attaques par force brute contre wp-login.php, wp-admin et les pages d'inscription.
- XML-RPC : Protège le point de terminaison xmlrpc.php contre les attaques par amplification et l'énumération d'utilisateurs.
- API REST : Limite les requêtes à /wp-json/ pour éviter la saturation par le scraping ou les abus.
- Site général : Couvre l'ensemble du site (front-end) contre les robots agressifs et les crawlers.
⚙️ Comment RPM + Burst fonctionnent
RPM (Requêtes Par Minute) est la limite soutenue de requêtes par minute : combien de fois une IP peut charger du contenu en une minute (un humain qui navigue normalement génère environ 5 à 15 requêtes/min ; un bot agressif, 100+). Burst indique combien de ces requêtes peuvent arriver quasi instantanément — le chargement d'une seule page en déclenche déjà plusieurs à la fois (HTML, CSS, JS, images). Si le Burst est dépassé, le serveur répond en demandant d'attendre quelques secondes avant la requête suivante ; cela ne bloque pas l'IP en soi tant qu'elle reste sous la limite de RPM. Cela permet de distinguer le trafic humain réel (pics courts occasionnels liés au chargement d'une page) des attaques automatisées (pics continus et soutenus).
Action : Monitor / Challenge / Block
L'action définit ce qui se passe lorsqu'une IP dépasse la limite configurée. Chaque mode offre un niveau de sévérité différent :
📋 Monitor (Journal Seulement)
Enregistre chaque fois qu'une IP dépasse la limite mais n'entreprend aucune action. Idéal pour la phase d'observation initiale. Utilisez-le pendant les premières 24 à 48 heures pour établir une base de trafic légitime.
⚠️ Challenge (HTTP 429)
Répond avec le code HTTP 429 Too Many Requests et inclut un en-tête Retry-After. Le navigateur ou le client doit attendre avant de réessayer. C'est l'option recommandée pour la production : arrête les abus sans blocage permanent.
🚫 Block (HTTP 403)
Répond avec HTTP 403 Forbidden et bloque l'IP immédiatement. L'IP est ajoutée à la liste des bloquées et toutes les requêtes suivantes sont rejetées. Utilisez-le seulement lorsque vous êtes sûr que les limites n'affectent pas le trafic légitime.
Préréglages & Limites Personnalisées
SeenSecure inclut des préréglages préconfigurés pour les scénarios les plus courants. Vous pouvez sélectionner un préréglage ou configurer des limites personnalisées manuellement. Les préréglages ajustent automatiquement RPM et Burst :
Personnalisé
Vous définissez RPM (1-3600) et Burst (1-1000). Idéal pour les sites ayant des besoins spécifiques ou après analyse des journaux en mode Monitor.
🧪 Testing (50/10)
50 RPM + Burst 10. Conçu pour les tests et le développement. Limite très permissive pour éviter les interférences pendant le réglage.
🔑 Login (50/10)
50 RPM + Burst 10. Optimisé pour protéger wp-login.php et wp-admin. 50 tentatives de connexion par minute suffisent pour les utilisateurs légitimes mais arrêtent les attaques par force brute.
🔌 XML-RPC (30/5)
30 RPM + Burst 5. Limite plus restrictive car xmlrpc.php est un vecteur courant d'attaques par amplification. Si vous n'utilisez pas XML-RPC, envisagez de le désactiver complètement.
🌐 API REST (1000/100)
1000 RPM + Burst 100. Limite élevée pour ne pas interférer avec les intégrations légitimes (plugins, thèmes, applications externes). Ajustez si votre API a un trafic important.
🌍 Site (1000/100)
1000 RPM + Burst 100. Couverture générale pour le front-end du site. Convient à la plupart des sites avec un trafic modéré. Surveillez les journaux et réduisez en cas d'abus.
🔧 Limites personnalisées
En sélectionnant "Personnalisé", vous pouvez définir :
- RPM : Plage 1-3600. Requêtes soutenues par minute.
- Burst : Plage 1-1000. Maximum de requêtes consécutives en pic.
Contextes Protégés
La Limitation de Débit s'applique indépendamment dans quatre contextes distincts. Chaque contexte a son propre compteur RPM/Burst, permettant des limites spécifiques sans affecter les autres zones du site :
🔐 Login / wp-admin
Protège wp-login.php, wp-admin/, les pages d'inscription et de réinitialisation de mot de passe. Le contexte le plus critique : une attaque réussie ici peut compromettre tout le site. Utilisez le préréglage Login (50 RPM) ou une limite personnalisée plus restrictive.
🔌 XML-RPC
Protège xmlrpc.php. Ce point de terminaison est tristement célèbre pour les attaques DDoS par amplification et l'énumération d'utilisateurs. Le préréglage XML-RPC (30 RPM + Burst 5) est très restrictif car idéalement ce point de terminaison devrait avoir un trafic minimal voire nul.
🌐 API REST
Protège /wp-json/. De nombreux plugins et thèmes effectuent des requêtes fréquentes à l'API REST. Le préréglage (1000 RPM + Burst 100) est élevé pour ne pas casser les intégrations. Surveillez les journaux pour identifier si un plugin externe a besoin de plus ou moins de limite.
🌍 Site Général
Couvre tout le front-end du site : pages, articles, archives, recherches et toute URL non couverte par les autres contextes. Le préréglage (1000 RPM + Burst 100) convient à la plupart des cas. Réduisez en cas de scraping agressif de contenu.
Escalade Progressive
Le système d'escalade progressive augmente automatiquement la sévérité des pénalités pour les IPs récidivistes. Au lieu d'appliquer toujours la même punition, les sanctions se durcissent à mesure que l'abus persiste :
Niveau 1 (Léger)
Pénalité initiale de courte durée. L'IP reçoit un délai d'attente bref (quelques minutes) avant de pouvoir réessayer. Si l'abus cesse, l'IP revient à la normale automatiquement.
Niveau 2 (Modéré)
Si l'IP récidive dans la fenêtre d'escalade, la pénalité s'allonge considérablement (minutes à heures). Le système enregistre la récidive et applique un temps de blocage plus long.
🚫 Blocage Permanent
Si l'IP dépasse le seuil de récidives dans la fenêtre d'escalade configurée, elle est automatiquement ajoutée à la liste de blocage permanent. Seul un administrateur peut la débloquer manuellement depuis la liste des IPs bloquées.
⚙️ Paramètres configurables
- Durée Niveau 1 : Temps de pénalité initial (15 minutes par défaut, configurable entre 1 et 60).
- Durée Niveau 2 : Pénalité pour les récidivistes (120 minutes / 2 heures par défaut, configurable entre 30 et 1440).
- Seuil Permanent : Nombre de récidives avant le blocage permanent (5 par défaut, configurable entre 2 et 10).
- Fenêtre d'Escalade : Période pendant laquelle les récidives sont comptées (24 heures par défaut, configurable entre 1 et 168). Si l'IP se comporte bien pendant cette période, le compteur se réinitialise.
❓ FAQ — Foire Aux Questions
🔹 Que faire si un service externe (API, webhook) est bloqué ?
Si un service externe dont votre site a besoin (passerelle de paiement, CRM, webhook tiers) est bloqué par la Limitation de Débit :
- Vérifiez les journaux — Allez dans le journal de Limitation de Débit et identifiez l'IP ou la plage d'IPs du service bloqué.
- Ajoutez l'IP à la liste blanche — Dans la section Whitelist du firewall, ajoutez l'IP ou la plage CIDR (ex : 203.0.113.0/24) pour que le trafic de ce service contourne la Limitation de Débit.
- Vérifiez la connectivité — Effectuez un test pour confirmer que le service fonctionne correctement.
🔹 Combien de temps dois-je utiliser le mode Monitor avant de passer à Challenge ?
Nous recommandons 24 à 48 heures en mode Monitor au minimum. Cela vous permet de :
- Identifier les pics de trafic légitimes (lancements, promotions, campagnes email).
- Établir la référence RPM pour chaque contexte.
- Détecter les IPs abusives avant d'activer les blocages.
- Ajuster les préréglages ou créer des limites personnalisées éclairées.
Après cette période, passez à Challenge (HTTP 429). Surveillez encore 7 jours avant d'envisager Block.
🔹 La journalisation affecte-t-elle les performances ?
L'interrupteur de journalisation active ou désactive l'enregistrement détaillé des événements de Limitation de Débit. Avec la journalisation activée, chaque fois qu'une IP dépasse une limite, une entrée est écrite dans le journal. Avec la journalisation désactivée, les actions (Challenge/Block) s'exécutent toujours mais ne sont pas enregistrées. Nous recommandons de garder la journalisation activée pendant les phases Monitor et Challenge pour la visibilité, et de la désactiver en production si le volume de journaux est très élevé.
🔹 ¿Puedo tener límites distintos para cada contexto?
Oui. Chaque contexte (Login, XML-RPC, API REST, Site) a sa propre configuration RPM et Burst. Vous pouvez avoir, par exemple, 50 RPM sur Login, 30 RPM sur XML-RPC, 1000 RPM sur l'API REST et 1000 RPM sur le site général, tout en même temps.
🔹 La Limitation de Débit affecte-t-elle les moteurs de recherche (Googlebot) ?
Les bots de moteurs de recherche légitimes (Googlebot, Bingbot, etc.) sont identifiés par leur User-Agent et ne dépassent généralement pas les limites standard des préréglages (1000 RPM). En cas de doute, examinez les journaux en mode Monitor pour voir si un crawler est limité. Si c'est le cas, vous pouvez ajouter son IP à la liste blanche ou augmenter la limite du contexte Site général.
🔹 Qu'est-ce que la "Première Ligne" affichée sur cet onglet ?
C'est une couche de protection supplémentaire (pas spécifique aux bots) qui agit avant même le chargement de WordPress, conçue pour les pics de trafic et les attaques très intenses susceptibles de surcharger le reste du site. Elle s'active et se configure ici même, dans la section "🚀 Première Ligne". Dans le cadre de cette protection, elle évite aussi de nuire à votre référencement : avant d'appliquer une limite, elle vérifie si la visite appartient réellement à un moteur de recherche ou un assistant IA légitime (en recoupant son IP, pas seulement le texte envoyé) afin de la laisser passer sans friction.
🔹 Un visiteur légitime a été bloqué définitivement pour récidive — comment le débloquer ?
Un blocage permanent par escalade progressive ne peut être annulé que manuellement par un administrateur, depuis la liste des IP bloquées du pare-feu (ou en ajoutant l'IP à la liste blanche, prioritaire sur tout blocage). Il ne s'annule pas seul, même si l'IP cesse de générer du trafic.
🔹 Que signifie exactement une réponse HTTP 429 ?
C'est la réponse standard "trop de requêtes" quand le mode actif est Challenge : le visiteur peut réessayer après un certain temps. Ce n'est pas un blocage permanent et cela n'indique pas une activité malveillante confirmée, seulement que la limite RPM configurée pour ce contexte a été dépassée.