Rokad
Toute la documentation
Documentation dhal

Règles et profils de route

Configurez les packs de règles, l’application par route, les suppressions et les faux positifs.

Voir le dépôt
Documentation dhal
Page 4 sur 9

Dhal combine des contrôles déterministes avec des politiques spécifiques aux routes. Commencez en surveillance puis appliquez le blocage aux routes dont le comportement est connu.

Contrôles disponibles

  • listes IP autorisées et bloquées ;
  • signatures SQLi, XSS, traversée de chemin, SSRF, RCE, SSTI, GraphQL et probes ;
  • taille de requête ;
  • anomalies d’en-têtes et de type de contenu ;
  • sécurité positive JSON ;
  • bots et automatisation ;
  • honeypots ;
  • credential stuffing ;
  • limitation et réputation IP.

Packs

generic-web, api, auth, wordpress et strict-api.

json
{
  "rules": {
    "packs": ["generic-web", "api"],
    "sqli": true,
    "xss": true,
    "pathTraversal": true
  }
}

Consultez le catalogue avec npx dhal rules.

Profils de route

json
{
  "mode": "monitor",
  "routes": {
    "/api/login": {
      "mode": "block",
      "tags": ["authentication"],
      "rateLimit": {
        "enabled": true,
        "windowSeconds": 60,
        "max": 20,
        "keyBy": ["ip", "route"]
      },
      "rules": {
        "credentialStuffing": {
          "enabled": true,
          "windowSeconds": 300,
          "maxFailures": 4,
          "keyBy": ["ip", "route", "userAgent"]
        }
      }
    }
  }
}

Les motifs acceptent les chemins exacts et le joker *. Si plusieurs motifs correspondent, Dhal choisit le plus spécifique selon sa longueur hors jokers.

json
{
  "routes": {
    "/api/admin/*": { "mode": "strict" },
    "/api/public/*": { "mode": "monitor" }
  }
}

Faux positifs

Pour les bots, ajustez scoreThreshold, minSignals, allowUserAgents, skipStaticAssets et ignorePaths avant de désactiver la règle globalement.

Activez rules.api globalement uniquement pour les services exclusivement JSON ; sinon utilisez un profil de route.

Suppressions

json
{
  "policy": {
    "suppressions": [
      {
        "id": "scanner-interne",
        "enabled": true,
        "ruleId": "honeypot.triggered",
        "path": "/.well-known/security-canary",
        "reason": "scanner interne approuvé",
        "expiresAt": "2027-01-01T00:00:00.000Z"
      }
    ]
  }
}

Les suppressions restent visibles dans l’audit. Rendez-les précises, justifiées et temporaires.