Niveau 3 · Ajuster
Un WAF utile bloque les attaques sans gêner vos clients. Kokiris fait l'essentiel de ces réglages pendant la phase de training. Ce niveau vous apprend à corriger un faux positif, à exempter du trafic de confiance et à limiter les abus quand votre site évolue.
3.1 Corriger un faux positif
- Choisir la portée la plus étroite possible pour une correction.
- Corriger plusieurs règles et plusieurs champs en une fois, et relire la règle générée.
- Ne corriger que sous conditions, par exemple pour un seul outil.
Un faux positif est une requête légitime que le WAF prend pour une attaque. Exemple courant : un éditeur de contenu qui enregistre du HTML dans un champ de formulaire.
| Portée | Effet | Quand l'utiliser |
|---|---|---|
| Ignorer un champ précis | Les règles ignorent un seul paramètre, par exemple ARGS:content. | Le cas le plus fréquent. Choisissez-le d'abord. |
| Seulement sur un chemin | Les règles sont coupées sous un chemin, par exemple /wp-admin/. | Un outil d'administration envoie des données inhabituelles. |
| Désactiver complètement | Les règles ne s'appliquent plus du tout sur le site, ou partout. | En dernier recours, quand la règle ne sert à rien pour ce site. |
- Dans Journaux, ouvrez la requête : 🔍 Détails, puis 🔬 Radiographie. Vous voyez le champ en cause, et si une correction le couvre déjà.
- Cliquez sur Corriger ce faux positif : le formulaire Corriger une règle s'ouvre, rempli avec le champ en cause et les règles qui ont réagi sur lui. Depuis une ligne des journaux, Corriger ce blocage ouvre RuleForge, lui aussi déjà rempli.
- Choisissez la portée la plus étroite et indiquez une raison. Ajoutez une date d'expiration si la correction est provisoire : à l'heure dite, elle cesse d'agir d'elle-même, sans Appliquer.
- Enregistrez, puis appliquez. Rejouez la requête légitime pour vérifier qu'elle passe.
Plusieurs règles, plusieurs champs
Un même champ fait souvent réagir plusieurs règles. Le champ Règles accepte plusieurs numéros et Champs à ignorer plusieurs champs, séparés par des virgules : une seule correction couvre chaque combinaison. Avant d'enregistrer, le formulaire compte les combinaisons et affiche la Règle générée, c'est-à-dire exactement ce que le WAF recevra.

Deux règles, deux champs, quatre combinaisons. La règle générée se met à jour à chaque saisie.
Le chemin d'une correction ne tient pas compte des majuscules : /Admin/ couvre aussi /admin/x. Il vaut pour un segment entier : /admin couvre /admin et /admin/x, mais pas /administration. La portée Seulement sur un chemin retire toutes les règles listées sous ce chemin.
Un champ peut aussi viser le nom d'un cookie, avec REQUEST_COOKIES_NAMES:<nom>, quand c'est le nom du cookie, et non sa valeur, qui fait réagir une règle.
Ne corriger que sous conditions
Une correction peut ne s'appliquer que si la requête remplit une ou plusieurs Conditions. Exemple : l'import du catalogue d'un fournisseur fait réagir la règle 942100 sous /import/. Plutôt que de couper la règle pour tout le monde sur ce chemin, ajoutez la condition « l'en-tête X-Fournisseur est présent » : les autres requêtes sous /import/ restent inspectées.
- Dans le formulaire de la correction, section Conditions, cliquez sur + Ajouter une condition.
- Choisissez la variable (
REQUEST_HEADERS,ARGS,REQUEST_COOKIES,REQUEST_URI…), son nom si elle en a un (X-Fournisseur), puis l'opérateur : est présent, est absent, contient, ne contient pas, correspond à (regex) ou ne correspond pas à (regex). - Enregistrez, puis appliquez. La liste des corrections affiche les conditions sous chaque entrée, précédées de « Seulement si ».
- Toutes les conditions doivent être vraies (ET). Pour un OU, créez une seconde correction.
- contient et ne contient pas ignorent les majuscules. Une expression régulière est vérifiée à l'enregistrement.
- Saisir en texte passe à une saisie d'une condition par ligne, dans la syntaxe ModSecurity :
REQUEST_HEADERS:User-Agent @contains ERP-Sync,ARGS:id @rx ^[0-9]+$,!ARGS:debug(absent). Le panel vérifie chaque ligne pendant la frappe. - Une condition sur le corps (
ARGS,ARGS_POST,FILES,REQUEST_BODY…) n'est connue qu'en phase 2 : la correction ne retire alors pas les règles de phase 1 (920…, 913…).

Faux positifs. Toutes les corrections, globales ou par site, avec leur portée et leur expiration. Dessous, Champs qui déclenchent des règles classe les champs qui font réagir le WAF sur 1 h, 6 h ou 24 h.
Dans le détail d'un événement, 🤖 Faux positif ? (IA) analyse la requête. Sur la page Faux positifs, 🤖 Analyser avec l'IA donne un verdict pour chaque champ : FAUX POSITIF, ATTAQUE ou INCERTAIN. Pour un faux positif, l'IA propose une correction déjà contrôlée par le serveur : Pré-remplir l'exclusion ouvre le formulaire, vous relisez et vous enregistrez (chapitre 5.4).
La règle 941100 (XSS) bloque le champ content de l'éditeur WordPress, et seulement lui. Quelle portée choisissez-vous ?
3.2 Déclarer du trafic de confiance
- Faire la différence entre « Ne pas inspecter » et « Toujours inspecter ».
- Limiter une entrée de confiance par des conditions.
Le trafic de confiance ne passe pas par Coraza. On l'utilise pour une sonde de supervision, un partenaire qui appelle une API, ou un outil interne connu.
- Ne pas inspecter : l'IP, la plage, le chemin ou le paramètre n'est plus analysé.
- Toujours inspecter : force l'analyse, même si une autre règle de confiance couvre ce trafic. Elle l'emporte toujours.
- Ne pas journaliser ce trafic : le WAF reste actif, mais ces requêtes n'encombrent plus les journaux.
C'est le badge du personnel : on ne fouille pas le sac des employés connus. Raison de plus pour ne le donner qu'à ceux que vous connaissez vraiment.

Trafic de confiance. Chaque règle peut viser un site ou tous les sites, et porter une date d'expiration.
À l'expiration, un chemin ou un paramètre cesse d'agir à l'heure exacte, sans Appliquer. Une adresse ou une plage en « Ne pas inspecter » est retirée dans l'heure qui suit, sur tous les nœuds, elle aussi sans Appliquer. La règle expirée quitte la liste dans l'heure ; si le bandeau vous propose alors d'appliquer, c'est pour la retirer des fichiers du WAF : son effet a déjà cessé.
Comme une correction, une entrée Ne pas inspecter accepte des Conditions (chapitre 3.1). Exemple : la sonde de supervision n'est exemptée que si son User-Agent contient Kokiris-Supervision. Avec des conditions, une adresse IP n'est plus exemptée par HAProxy : bans, vérification JavaScript et limite de débit s'appliquent à elle. Seule l'inspection du WAF est levée, quand les conditions sont vraies.
Sans condition, une adresse ou une plage de confiance vaut pour tous les sites de la plateforme. Un compte revendeur ou membre doit donc lui ajouter au moins une condition, et ne peut pas créer de « Toujours inspecter ». Avec une condition, l'entrée ne vaut que pour son site.
Un faux positif se corrige règle par règle. Le trafic de confiance retire toute l'inspection. Gardez-le pour les sources que vous maîtrisez.
Réserver un chemin à vos bureaux
Un groupe d'IP est une liste nommée d'adresses (par exemple « Siège » ou « Direction »), créée une fois dans l'onglet Groupes d'IP et réutilisable sur tous vos sites. Une règle de type chemin peut ensuite cocher un ou plusieurs groupes.
- Onglet Groupes d'IP → Ajouter un groupe d'IP : un nom, puis une adresse ou une plage par ligne.
- Onglet Entrées → Ajouter une règle de trafic, type Motif de chemin, par exemple
/wp-login.php, et cochez le groupe. Attention : ne restreignez pas/wp-adminen entier, WordPress appelle/wp-admin/admin-ajax.phpdepuis les pages publiques. - Décision Accès réservé : seules les adresses du groupe atteignent le chemin, les autres reçoivent une page 403. Avec Ne pas inspecter, ce sont seulement ces adresses qui passent sans inspection.

Groupes d'IP. La colonne Utilisé par compte les entrées qui s'en servent : ici, le chemin du back-office réservé à l'agence et aux bureaux.
Modifier le groupe suffit : toutes les règles qui l'utilisent suivent. Un groupe utilisé ne peut pas être supprimé. L'accès réservé s'applique même quand le site est en mode Détecter, mais pas à une adresse déjà en confiance globale.
Votre outil de supervision appelle /health toutes les minutes et se fait bloquer. Quelle est la bonne réponse ?
3.3 Limiter le débit
- Protéger une page de connexion contre les essais de mots de passe en série.
- Vérifier la limite avec une boucle curl.
- Choisir ce que deviennent les gros envois.
- Ouvrez la fiche du site, carte Contrôle du trafic, puis cliquez sur + Ajouter une limite.
- Saisissez le chemin de votre page de connexion (
/wp-login.phppour WordPress), 5 requêtes, fenêtre de 60 secondes. - Enregistrez, puis appliquez.

Contrôle du trafic. Cinq réglages : maintenance, file d'attente, vérification JavaScript, gros envois et limitation de débit.
Ce que vous devez voir
for i in $(seq 1 8); do curl -s -o /dev/null -w '%{http_code} ' https://www.votre-site.fr/wp-login.php; done; echo
200 200 200 200 200 429 429 429
curl -s -D - -o /dev/null https://www.votre-site.fr/wp-login.php
HTTP/2 429
retry-after: 60
cache-control: no-cache
content-length: 2818
content-type: text/html; charset=UTF-8
alt-svc: h3=":443"; ma=60
Les cinq premières requêtes passent. À partir de la sixième, HAProxy répond 429 et indique au client d'attendre 60 secondes.
| Outil | Réponse | Exemple d'usage |
|---|---|---|
| Limitation de débit | 429 | Page de connexion, API publique |
| Mode maintenance | 503 | * pendant une mise à jour, !/api pour garder l'API ouverte |
| File d'attente | 429 | Soldes : au plus N visiteurs simultanés |
| Vérification JS | 200 + page de calcul | Écarter les robots simples sur /panier |
| Corps plus grand que la taille inspectée | 413 | Refuser un envoi que le WAF ne pourrait pas lire en entier |
Utilisateurs simultanés max vaut pour chaque nœud : sur deux nœuds, jusqu'à deux fois ce nombre de visiteurs. Les admissions repartent de zéro à chaque rechargement de HAProxy (Appliquer, mise à jour des zones GEO) : évitez d'appliquer en plein pic. Sans Durée de session, un visiteur admis garde sa place 30 minutes. La file ne retient jamais votre panel kokiGUARD ni le renouvellement de vos certificats.
Les gros envois
kokiGUARD inspecte le corps d'une requête (un formulaire, un JSON d'API) jusqu'à une certaine taille, 64 Ko par défaut. Au-delà, il ne pourrait pas lire la fin : une attaque cachée en fin de corps passerait. Le réglage Corps plus grand que la taille inspectée de la carte Contrôle du trafic dit quoi faire de ces requêtes :
- Bloquer (413) : la requête est refusée avec le code
413et l'en-têtex-waf-action: body-too-large, sauf sur les Chemins exemptés (même syntaxe que la maintenance :*, préfixes,!/cheminpour retirer). Exemptez par exemple l'envoi de médias de WordPress,/wp-admin/async-upload.php. - Laisser passer : la requête passe sur tout le site, mais la fin de son corps n'est pas inspectée.
Le refus ne s'applique qu'aux sites en mode Bloquer, Challenge ou Bannir. Les envois de fichiers (multipart/form-data) ne sont jamais refusés pour leur taille, et un chemin de confiance n'est jamais concerné. Un corps trop grand ne donne aucun point de réputation et ne mène jamais à un ban.
Dans les journaux, ces requêtes portent la pastille Corps trop grand (« · refusé (413) », « · passé » ou « · upload »). Sur une ligne refusée, Exempter ce chemin de la limite de taille ajoute son chemin aux chemins exemptés du site. Le tableau de bord les compte dans la carte Corps trop grands.
La taille elle-même se règle pour toute l'installation : Paramètres, carte Paramètres WAF par défaut, Taille de corps inspectée, de 64 Ko à 1 Mo (administrateur). Plus grand coûte de la mémoire et du temps d'inspection pour chaque gros envoi : parlez-en à Kokiris avant de changer.
Avec une limite de 5 requêtes par 60 s, à partir de quelle requête un client reçoit-il 429 ?
3.4 Bloquer par pays
- Créer une règle géographique globale.
- Faire une exception pour un site.
La page Blocage géographique agit par pays ou par continent, pour tous les sites. Trois actions : Bloquer (403), Détection seule (journalise sans bloquer) et Rediriger vers une URL, obligatoire avec cette action. Cochez les pays, ou Tous pour un continent entier, choisissez l'action, cliquez sur Enregistrer, puis appliquez. Si vous quittez la page avant d'enregistrer, le panel vous demande confirmation.

Blocage géographique. Trois pays en Détection seule : leurs requêtes passent et sont journalisées, le temps de mesurer avant de bloquer. Plus bas, la base de zones à mettre à jour de temps en temps.
Pour un site qui doit faire autrement, utilisez la carte Blocage géographique — Dérogation par site de sa fiche : ajouter des pays à la liste globale, en retirer (liste blanche), ou la remplacer.
Un continent est enregistré comme la liste de ses pays, y compris depuis le radar des menaces ou RuleForge. AF désigne l'Afghanistan, AS les Samoa américaines, NA la Namibie et SA l'Arabie saoudite, jamais un continent. Avec les versions antérieures à octobre 2026, un continent bloqué depuis le radar ou RuleForge était enregistré sous l'un de ces codes : relisez vos listes si vous en aviez créé, ou demandez à Kokiris de le faire.
Une requête bloquée par pays reçoit un 403 avec l'en-tête X-Geo-Blocked: 1.
3.5 Robots et crawlers
- Distinguer un robot vérifié, un robot déclaré et un usurpateur.
- Choisir, site par site, ce que vous faites de chaque robot connu.
Moteurs de recherche, robots d'entraînement d'IA, assistants IA, outils SEO, aperçus des réseaux sociaux : une partie de votre trafic vient de robots qui se présentent sous leur vrai nom. Certains vous amènent des clients, d'autres copient vos contenus sans rien rapporter. La carte Robots et crawlers de la fiche du site décide, robot par robot, de ce qu'ils peuvent faire.
kokiGUARD reconnaît un robot à son User-Agent et, quand son éditeur les publie, à ses plages d'adresses IP. La colonne Vérification le dit :
| Marque | Signification |
|---|---|
| ✔ Vérifié | User-Agent du robot et adresse dans les plages publiées par son éditeur (Google, Microsoft, OpenAI…). |
| ⚠ Non vérifiable | L'éditeur ne publie pas ses plages : le robot n'est reconnu qu'à son User-Agent, que n'importe qui peut imiter. |
| Usurpateurs | User-Agent d'un robot vérifiable, mais depuis une adresse hors de ses plages : quelqu'un se fait passer pour lui. |
Pour chaque robot, quatre actions :
| Action | Effet |
|---|---|
| Autoriser | Le robot passe. Vérifié, il échappe aussi à la détection des scanners et à la limite de débit par adresse, et ses détections ne comptent pas pour le bannissement. Jamais au WAF : une attaque reste bloquée. |
| Limiter (requêtes/min) | Au-delà de N requêtes par minute, il reçoit un 429. |
| Challenge | Il reçoit la page du challenge (chapitre 4.5) : un robot ne la résout pas. |
| Bloquer | Il reçoit un 403 avec l'en-tête X-Bot-Blocked. |
Sans réglage sur le site, chaque robot suit le Défaut global (Paramètres, carte Robots et crawlers, administrateur) : Autoriser, sauf GPTBot, ChatGPT-User, OAI-SearchBot et Bytespider, bloqués. Les usurpateurs reçoivent le challenge.
- Ouvrez la fiche du site, carte Robots et crawlers.
- Partez d'un Préréglage…, puis ajustez robot par robot dans la colonne Action : Référencement seul autorise les moteurs de recherche et bloque tous les autres robots ; Sans entraînement IA bloque les robots d'entraînement d'IA et laisse les autres inchangés ; Permissif remet tous les robots sur le défaut global.
- Regardez la colonne 30 jours (vues · refusées) : elle montre quels robots visitent vraiment ce site.
- Cliquez sur Enregistrer les réglages des robots, puis appliquez.

Robots et crawlers. La boutique bloque les robots d'entraînement d'IA qui copient ses fiches produit, limite les plus gourmands et garde les moteurs de recherche.
Un moteur de recherche bloqué ou soumis au challenge n'indexe plus votre site, et votre référencement en pâtit. Le panel vous le rappelle quand vous le choisissez.
- Les actions des robots passent après le verdict du WAF : un robot qui attaque reçoit le 403 du WAF, comme tout le monde.
- Elles ne s'appliquent jamais au trafic de confiance ni au panel kokiGUARD.
- Les plages des robots sont téléchargées avec les zones GEO, par le bouton Mettre à jour les zones de la page Blocage géographique.
Votre boutique doit rester dans Google, mais vous ne voulez pas que vos fiches produit servent à entraîner des IA. Que choisissez-vous ?
3.6 Paranoïa et catégories : laissez Kokiris régler
- Comprendre ce que règlent la paranoïa et les catégories.
- Savoir pourquoi ce réglage se fait avec Kokiris.
Ce réglage change le comportement de centaines de règles à la fois. Trop haut, il bloque de vrais clients. Trop bas, il laisse passer des attaques. Kokiris le fixe pour vous pendant la phase de training, à partir du trafic réel de vos sites, et l'adapte ensuite si vos sites évoluent.
Vous voulez renforcer ou assouplir la protection ? Demandez-le à Kokiris : le changement sera testé en mode Détecter avant d'être mis en production.
La paranoïa, c'est la sensibilité d'un détecteur de fumée. Trop sensible, il sonne pour un toast ; pas assez, il rate un début d'incendie. Le bon réglage dépend de la pièce, c'est-à-dire de votre site et de son trafic.
Pour comprendre ce que vous voyez dans la fiche d'un site :
| Niveau | Effet |
|---|---|
| PL1 · Minimal | Peu de faux positifs, protection de base solide. Le point de départ habituel. |
| PL2 · Standard | Plus de détections, quelques faux positifs à corriger. |
| PL3 · Strict | Détection fine, beaucoup de corrections à prévoir. |
| PL4 · Paranoïaque | Très strict, beaucoup de faux positifs. |
Sous le niveau de paranoïa, la carte Catégories de règles activées liste les 13 familles du CRS. Kokiris désactive pendant le training les familles qui ne concernent pas votre site, par exemple Injection Java sur un site PHP.

Règles CRS. Le catalogue complet. Pour chaque règle, vous pouvez demander une explication à l'IA.
- La paranoïa et les catégories se règlent avec Kokiris, pendant le training puis sur demande.
- Tout changement passe d'abord par le mode Détecter.
Votre boutique a subi une vague d'attaques et vous voulez la protéger davantage. Que faites-vous ?
- Corriger un faux positif avec la portée la plus étroite, sur une ou plusieurs règles et un ou plusieurs champs.
- Choisir entre trafic de confiance et correction de faux positif.
- Poser une limite de débit, une page de maintenance, une file d'attente ou une vérification JavaScript.
- Ne corriger ou ne faire confiance que sous conditions.
- Choisir entre refuser et laisser passer les gros envois.
- Bloquer un pays, en détection d'abord.
- Choisir, site par site, ce que vous faites de chaque robot connu.
- Laisser la paranoïa et les catégories à Kokiris, et savoir pourquoi.