Skip to content
Cette page a été générée et traduite avec l'aide de l'IA. Si vous remarquez des inexactitudes, n'hésitez pas à contribuer. Modifier sur GitHub

PRX-WAF

PRX-WAF est un proxy de pare-feu d'applications web prêt pour la production, construit sur Pingora (la bibliothèque proxy HTTP Rust de Cloudflare). Il combine un pipeline de détection d'attaques en 16 phases, un moteur de script Rhai, le support OWASP CRS, l'import de règles ModSecurity, l'intégration CrowdSec, des plugins WASM et une interface d'administration Vue 3 en un seul binaire déployable.

PRX-WAF est conçu pour les ingénieurs DevOps, les équipes de sécurité et les opérateurs de plateforme qui ont besoin d'un WAF rapide, transparent et extensible -- capable de traiter des millions de requêtes, de détecter les attaques OWASP Top 10, de renouveler automatiquement les certificats TLS, de s'adapter horizontalement avec le mode cluster, et de s'intégrer avec des flux externes de renseignements sur les menaces -- sans dépendre de services WAF cloud propriétaires.

Pourquoi PRX-WAF ?

Les produits WAF traditionnels sont propriétaires, coûteux et difficiles à personnaliser. PRX-WAF adopte une approche différente :

  • Ouvert et auditable. Chaque règle de détection, seuil et mécanisme de notation est visible dans le code source. Pas de collecte de données cachée, pas de verrouillage fournisseur.
  • Défense multi-phases. 16 phases de détection séquentielles garantissent que si un contrôle manque une attaque, les phases suivantes la détectent.
  • Performance Rust en premier. Construit sur Pingora, PRX-WAF atteint un débit proche du débit maximal avec un surcoût de latence minimal sur du matériel standard.
  • Extensible par conception. Les règles YAML, les scripts Rhai, les plugins WASM et l'import de règles ModSecurity rendent PRX-WAF facile à adapter à n'importe quelle pile d'applications.

Fonctionnalités clés

  • Proxy inverse Pingora -- HTTP/1.1, HTTP/2 et HTTP/3 via QUIC (Quinn). Équilibrage de charge round-robin pondéré entre les backends en amont.

  • Pipeline de détection en 16 phases -- Liste blanche/noire IP, limitation de débit CC/DDoS, détection de scanner, détection de bot, SQLi, XSS, RCE, traversée de répertoire, règles personnalisées, OWASP CRS, détection de données sensibles, anti-hotlinking et intégration CrowdSec.

  • Moteur de règles YAML -- Règles YAML déclaratives avec 11 opérateurs, 12 champs de requête, niveaux de paranoïa 1-4 et rechargement à chaud sans interruption de service.

  • Support OWASP CRS -- 310+ règles converties depuis l'OWASP ModSecurity Core Rule Set v4, couvrant SQLi, XSS, RCE, LFI, RFI, détection de scanner et plus.

  • Intégration CrowdSec -- Mode bouncer (cache de décisions depuis LAPI), mode AppSec (inspection HTTP à distance) et log pusher pour le renseignement communautaire sur les menaces.

  • Mode cluster -- Communication inter-nœuds basée sur QUIC, élection de leader inspirée de Raft, synchronisation automatique des règles/configurations/événements et gestion des certificats mTLS.

  • Interface d'administration Vue 3 -- Authentification JWT + TOTP, surveillance WebSocket en temps réel, gestion des hôtes, gestion des règles et tableaux de bord des événements de sécurité.

  • Automatisation SSL/TLS -- Let's Encrypt via ACME v2 (instant-acme), renouvellement automatique des certificats et support HTTP/3 QUIC.

Architecture

PRX-WAF est organisé comme un espace de travail Cargo de 7 crates :

CrateRôle
prx-wafBinaire : point d'entrée CLI, bootstrap du serveur
gatewayProxy Pingora, HTTP/3, automatisation SSL, mise en cache, tunnels
waf-enginePipeline de détection, moteur de règles, vérifications, plugins, CrowdSec
waf-storageCouche PostgreSQL (sqlx), migrations, modèles
waf-apiAPI REST Axum, auth JWT/TOTP, WebSocket, UI statique
waf-commonTypes partagés : RequestCtx, WafDecision, HostConfig, config
waf-clusterConsensus de cluster, transport QUIC, synchronisation des règles, gestion des certificats

Flux de requêtes

mermaid
graph TB
    CLIENT["Requête client"]

    subgraph Proxy["Écouteur Pingora"]
        LISTEN["TCP / TLS / QUIC"]
    end

    subgraph Pipeline["Pipeline de détection WAF (16 phases)"]
        P1["Phase 1-4 : Liste blanche/noire IP"]
        P5["Phase 5 : Limitation de débit CC/DDoS"]
        P6["Phase 6 : Détection de scanner"]
        P7["Phase 7 : Détection de bot"]
        P8["Phase 8 : Injection SQL"]
        P9["Phase 9 : XSS"]
        P10["Phase 10 : RCE / Injection de commandes"]
        P11["Phase 11 : Traversée de répertoire"]
        P12["Phase 12 : Règles personnalisées (Rhai + JSON DSL)"]
        P13["Phase 13 : OWASP CRS"]
        P14["Phase 14 : Détection de données sensibles"]
        P15["Phase 15 : Anti-hotlinking"]
        P16["Phase 16 : CrowdSec Bouncer + AppSec"]
    end

    UPSTREAM["Routeur d'hôte + En amont<br/>Round-Robin Pondéré"]

    CLIENT --> LISTEN
    LISTEN --> P1
    P1 --> P5
    P5 --> P6
    P6 --> P7
    P7 --> P8
    P8 --> P9
    P9 --> P10
    P10 --> P11
    P11 --> P12
    P12 --> P13
    P13 --> P14
    P14 --> P15
    P15 --> P16
    P16 --> UPSTREAM

Installation rapide

bash
git clone https://github.com/openprx/prx-waf
cd prx-waf
docker compose up -d

Interface d'administration : http://localhost:9527 (identifiants par défaut : admin / admin)

Consultez le Guide d'installation pour toutes les méthodes, y compris l'installation Cargo et la compilation depuis les sources.

Sections de documentation

SectionDescription
InstallationInstaller PRX-WAF via Docker, Cargo ou compilation depuis les sources
Démarrage rapideProtéger votre application en 5 minutes
Moteur de règlesComment fonctionne le moteur de règles YAML
Syntaxe YAMLRéférence complète du schéma de règles YAML
Règles intégréesOWASP CRS, ModSecurity, correctifs CVE
Règles personnaliséesÉcrire vos propres règles de détection
PasserellePrésentation du proxy inverse Pingora
Proxy inverseRoutage backend et équilibrage de charge
SSL/TLSHTTPS, Let's Encrypt, HTTP/3
Mode clusterPrésentation du déploiement multi-nœuds
Déploiement clusterConfiguration de cluster étape par étape
Interface d'administrationTableau de bord d'administration Vue 3
ConfigurationPrésentation de la configuration
Référence de configurationChaque clé TOML documentée
Référence CLIToutes les commandes et sous-commandes CLI
DépannageProblèmes courants et solutions

Informations sur le projet

  • Licence : MIT OR Apache-2.0
  • Langage : Rust (édition 2024)
  • Dépôt : github.com/openprx/prx-waf
  • Rust minimum : 1.82.0
  • Interface d'administration : Vue 3 + Tailwind CSS
  • Base de données : PostgreSQL 16+

Released under the Apache-2.0 License.