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
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.
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.
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).
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.
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.
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.
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.
| Verdict | Signification | Action 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.