Capacités

Tout ce qu'un WAF de périphérie doit offrir, sans rien activer à votre place

PingWAF livre ses protections désactivées par site. Activez ce dont votre trafic a besoin, dans l'ordre qui vous convient, et chaque changement est versionné.

Détection

Un moteur sémantique, pas une liste d'expressions

Les requêtes sont normalisées, puis évaluées par signatures, heuristiques et expressions avant de produire un verdict.

  • La normalisation précède toute règle : les encodages ne cachent plus de charge utile.
  • Heuristiques libinjection pour SQLi et XSS, plus correspondance multi-motifs Aho-Corasick.
  • Expressions façon Cloudflare comme http.request.uri.path contains "/admin".
  • Le score d'anomalie agrège toutes les correspondances en un seul verdict.

normaliser → signatures → expressions → score

localhost:9080/sites/example.com/security/protection
Éditeur de règles WAF dans la console PingWAF
Règles personnalisées et ensembles gérés s'activent par site.

Disponibilité

Absorber les pics, laisser passer les humains

Des défis successifs arrêtent les avalanches de requêtes sans mur CAPTCHA devant vos utilisateurs.

  • Bouclier JavaScript de 5 secondes, preuve de travail et défis interactifs.
  • Cookies de passage signés en HMAC et liés au site émetteur.
  • Listes de bots vérifiés et navigateurs connus pour préserver robots et supervision.
  • Les défis s'appliquent par site : une politique stricte n'affecte pas les autres domaines.

Empreinte TLS et analyse comportementale sont sur la feuille de route.

localhost:9080/sites/example.com/security/bot
Réglages de protection anti-bots dans la console
Politique anti-bots, robots vérifiés et actions par site.

Accès

Décider qui atteint l'origine

Bloquez, autorisez ou défiez par adresse et région, et plafonnez les abus par dimension de requête.

  • Règles IP avec block, allow, challenge et js_challenge, plages CIDR et import CSV.
  • Groupes IP globaux depuis du texte, du JSON ou les plages Cloudflare, synchronisés avec rapport d'erreur.
  • Restrictions géographiques par pays et ASN, avec blocage optionnel des pays inconnus.
  • Limitation par IP, hôte, chemin, ASN, pays, en-tête, cookie ou paramètre.
localhost:9080/sites/example.com/security/access
Page de contrôle d'accès avec règles IP et restrictions géographiques
Règles IP et politique géographique sur la même page.

Trafic

Router, répartir et cacher en périphérie

Les pools d'origine, les routes et le cache vivent à côté de la politique de sécurité : règle et route évoluent ensemble.

  • Pools d'origine : round-robin, least connections, aléatoire et hachage cohérent par IP, URL, chemin, en-tête, cookie ou requête.
  • Routes par préfixe, exactes ou regex, limitables à un groupe IP.
  • Cache en périphérie avec quotas par site, éviction LRU, stale-while-revalidate et TTL navigateur.
  • Réécriture d'en-têtes, chemins, requêtes et corps, pages d'erreur Tera et mise en pause par site (503).
localhost:9080/sites/example.com/caching
Configuration du cache en périphérie dans la console
Règles de cache, TTL et quota du site.

TLS

Des certificats émis et renouvelés en périphérie

ACME s'exécute sur le plan de données, et le plan de contrôle sait toujours ce que chaque agent détient.

  • Émission et renouvellement ACME / Let's Encrypt avec défis HTTP-01 et DNS-01.
  • DNS-01 via Aliyun, Cloudflare, Tencent Cloud DNSPod, Huawei Cloud ou DNS manuel.
  • État du certificat par site (valide, bientôt expiré, expiré) remonté par heartbeat et journal ACME consultable.
  • HSTS et HTTPS forcé en périphérie, mTLS avec certificats clients émis depuis la console et révocation immédiate.

La vérification du certificat d'origine est un commutateur explicite, global ou par pool.

localhost:9080/sites/example.com/ssl
Page TLS avec état du certificat et événements ACME
État du certificat et historique ACME d'un site.

Observabilité

Chaque verdict laisse une trace

Les journaux restent là où vos outils interrogent déjà, et une requête bloquée peut être rejouée en commande curl.

  • Journalisation complète dans Elasticsearch avec troncature du corps et tampon WAL.
  • Capture des requêtes et réponses dans PostgreSQL : en-têtes bruts, préfixes de corps, tailles réelles.
  • Tableaux de bord trafic et attaques construits sur les métriques envoyées par les agents.
  • Santé des agents, taux de cache et compteurs d'éviction visibles depuis le plan de contrôle.
localhost:9080/logs
Liste des journaux avec verdicts, scores et règles déclenchées
Journal de requêtes interrogeable avec verdicts et règles appliquées.

Exploitation

Piloter la flotte depuis une console

La configuration est versionnée, les agents sont observables et la console est compilée dans le binaire.

  • Authentification JWT + bcrypt, isolation multi-locataire et connexion par passkey (WebAuthn).
  • Versionnage de configuration : lister les instantanés, comparer table par table, restaurer après confirmation.
  • Console en anglais, 简体中文 et 日本語 intégrée via rust-embed, sans déploiement frontend séparé.
  • Vue de flotte en direct et attribution CPU/mémoire via les endpoints système.
localhost:9080/agents
Page des agents avec les nœuds de périphérie connectés
État de la flotte d'agents et activité de heartbeat.

Score

Du score d'anomalie à un verdict unique

Chaque requête sort du pipeline avec exactement un verdict, et c'est celui-là que le journal enregistre.

VerdictSignificationAction en périphérie
Pass Aucune règle n'a franchi le seuil. Transmise à l'origine sans modification.
Monitor Suspecte mais sous le seuil de blocage. Transmise et enregistrée pour ajuster la règle avant de l'appliquer.
Block Le score a franchi le seuil de blocage. Rejetée avec une page de blocage et journalisée avec la règle appliquée.
Challenge La requête doit prouver qu'elle vient d'un navigateur. Défi JS ou preuve de travail ; en cas de succès, cookie de passage.

Voir comment un verdict est produit

Les documents architecture et moteur WAF décrivent le cycle de vie des requêtes, l'évaluation des règles et le score.