Apache-2.0 Rust · Pingora Auto-hébergé

Une protection de niveau Cloudflare pour votre propre infrastructure

PingWAF est un pare-feu applicatif distribué et administré de façon centralisée. Définissez sites, règles et politiques une fois dans le plan de contrôle ; chaque agent en périphérie les applique en quelques secondes, sans rechargement ni interruption.

Normaliser → signatures → expressions → score
4 phases Normaliser → signatures → expressions → score
Protocole gRPC du plan de contrôle
7 RPC Protocole gRPC du plan de contrôle
Intégrations ACME DNS-01
5 fournisseurs Intégrations ACME DNS-01
SQLi · XSS · RCE · traversal
localhost:9080/dashboard
Tableau de bord PingWAF avec analyses de requêtes, tendances d'attaque et état des agents
Règles propagées en secondes
Apache-2.0
Open source de bout en bout
Aucune facturation à la requête, aucune dépendance hébergée.
Rust
Plan de données à mémoire sûre
Pingora + tokio dans un binaire autonome.
PostgreSQL
État du plan de contrôle
Sites, règles, instantanés de configuration et audit.
gRPC
Synchronisation à chaud
Flux bidirectionnels, sans redémarrage.

Architecture

Un plan de contrôle, plusieurs agents

Le plan de contrôle est la seule source de vérité. Les agents ne font que transporter le trafic et appliquer les politiques : le plan de données peut donc monter en charge sans toucher à l'état.

Le plan de contrôle détient l'état

Sites, règles, certificats et versions de configuration vivent dans PostgreSQL, derrière une API REST Axum, un service gRPC tonic et la console intégrée.

Les agents appliquent en périphérie

Chaque agent conserve un cache de règles sur disque et continue de servir avec la dernière politique connue même si le plan de contrôle est injoignable.

Les changements arrivent sans rechargement

SyncRules pousse un nouveau paquet sur le flux bidirectionnel existant ; l'agent l'échange en mémoire pendant que le trafic continue.

Comprendre le plan de contrôle

Capacités

Défense en profondeur, désactivée par défaut

Toutes les protections sont livrées désactivées et s'activent par site : rien ne modifie votre trafic tant que vous ne le demandez pas.

Moteur WAF sémantique

Détection par signatures et heuristiques des injections SQL, XSS, RCE, traversée de répertoire et injection de commandes.

  • Heuristiques libinjection + Aho-Corasick
  • Règles d'expression façon Cloudflare
  • Verdicts Pass / Monitor / Block / Challenge
Moteur WAF

Défense CC et anti-bots

Absorbez les pics et distinguez les navigateurs réels des scripts grâce à des défis successifs.

  • Bouclier JavaScript de 5 secondes et preuve de travail
  • Cookies de passage signés en HMAC
  • Liste de bots vérifiés par site
CC et bots

Contrôle d'accès

Décidez qui atteint l'origine selon l'adresse, la région et la dimension de la requête.

  • Règles IP avec CIDR et import CSV
  • Blocage géographique par pays et ASN
  • Limites par IP, hôte, chemin ou en-tête
Contrôle d'accès

Trafic et cache

Routez, répartissez et cachez sans quitter la console.

  • Pools d'origine avec cinq stratégies
  • Routes par préfixe, exactes et regex
  • Cache en périphérie avec quotas et SWR
Trafic et cache

TLS et certificats

Des certificats émis en périphérie et visibles depuis un seul endroit.

  • ACME HTTP-01 et DNS-01 avec renouvellement
  • État du certificat par site dans le heartbeat
  • Émission et révocation immédiate mTLS
TLS et certificats

Observabilité et console

Chaque requête est auditable et chaque changement de configuration réversible.

  • Journaux dans Elasticsearch avec tampon WAL
  • Capture des requêtes et réponses pour rejouer
  • Versions de configuration avec diff et rollback
Observabilité

Toutes les capacités

Dans la console

Exploiter sans pile supplémentaire

La console est compilée dans le binaire : ce que vous voyez correspond exactement à ce que sait le plan de contrôle.

localhost:9080/sites/example.com/security/protection
Page de protection du site avec onglets de règles WAF et réglages de défi
Les règles WAF et les défis CC se configurent par site.
localhost:9080/logs
Liste des journaux de requêtes avec verdicts et règles déclenchées
Les journaux de requêtes portent verdict, score et règle appliquée.
localhost:9080/sites/example.com/ssl
Page TLS du site avec état du certificat et événements ACME
État du certificat et événements ACME pour chaque site.

Démarrage

De zéro à un site protégé

Le fichier compose fourni démarre le plan de contrôle, un agent et PostgreSQL. Connectez-vous, ajoutez un site, et la périphérie applique les politiques.

  1. Démarrez la pile

    docker compose up -d récupère l'image publiée et démarre PostgreSQL.

  2. Connectez-vous

    Ouvrez https://localhost:9080 avec le compte administrateur initial.

  3. Ajoutez un site

    Pointez un domaine vers l'agent et activez les protections du site.

bash — pingwaf
$ git clone https://github.com/shuaiZend/PingWAF.git
$ cd PingWAF && docker compose up -d
plan de contrôle https://localhost:9080
agent :80 / :443
postgres :5432

Un WAF que vous pouvez lire, auditer et posséder

Chaque règle, verdict et ligne de journal reste dans votre infrastructure, sous une licence qui vous permet de tout modifier.