Rokad
Toda la documentación
Documentación de dhal

Reglas y perfiles de ruta

Configura paquetes de reglas, aplicación por ruta, supresiones y control de falsos positivos.

Ver repositorio
Documentación de dhal
Página 4 de 9

Dhal combina controles deterministas con políticas específicas por ruta. Comienza en monitorización y aplica bloqueos donde el comportamiento de la aplicación sea conocido.

Controles incluidos

  • listas IP permitidas y bloqueadas;
  • firmas de SQLi, XSS, traversal, SSRF, RCE, SSTI, GraphQL y probes;
  • tamaño de solicitud;
  • anomalías de cabeceras y tipo de contenido;
  • seguridad positiva para APIs JSON;
  • bots y automatización;
  • honeypots;
  • credential stuffing;
  • límites de solicitudes y reputación IP.

Paquetes de reglas

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

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

Revisa el catálogo con npx dhal rules.

Perfiles de ruta

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

Los patrones admiten rutas exactas y comodines *. Si coinciden varios, se selecciona el patrón más específico según su longitud sin comodines.

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

Falsos positivos de bots

Usa scoreThreshold, minSignals, allowUserAgents, skipStaticAssets e ignorePaths antes de desactivar la protección globalmente.

APIs JSON

Activa rules.api en servicios solo JSON o en perfiles de ruta específicos. Puedes exigir content-type, limitar profundidad y número de claves, y definir métodos con cuerpo.

Supresiones

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

Las supresiones permanecen en los metadatos de auditoría. Hazlas estrechas, documentadas y con fecha de expiración.