1. Presentation

rpGUARD (Reverse Proxy GUARD) est un reverse proxy oriente securite. Il se place devant vos serveurs web : les requetes entrantes arrivent sur rpGUARD, qui les inspecte, les filtre, puis les relaie vers les serveurs de backend et renvoie la reponse au client. C'est le meme role qu'un nginx, HAProxy ou un mini-Cloudflare.

Reverse proxy (rpGUARD) : protege et repartit le trafic entrant vers vos serveurs. A ne pas confondre avec un forward proxy, qui sort vers Internet a la place d'un client.

Le moteur tourne in-process (Kestrel) : aucun binaire externe. Tout se pilote depuis la fenetre. rpGUARD est une reecriture .NET autonome du moteur Aenebris et lit un fichier de configuration YAML compatible.

Fonctions

2. Installation

Option A - Via le programme d'installation

Lancez rpGUARD-Setup-x.y.z.exe et suivez l'assistant. L'application s'installe dans C:\Program Files\rpGUARD. Voir la section 8 pour generer ce Setup.

Option B - Compilation depuis les sources

  1. Ouvrir rpGUARD.csproj dans Visual Studio (cible net10.0-windows, WPF).
  2. Restaurer les paquets (YamlDotNet) puis compiler / lancer.

Astuce build : apres un dotnet run interrompu, purger bin et obj puis relancer dotnet build.

3. Premier demarrage

Au lancement, un ecran de demarrage s'affiche, puis la fenetre principale. rpGUARD lit config.yaml a cote de l'executable ; s'il est absent, une configuration par defaut est creee (ecouteur 8080, un backend 127.0.0.1:8000, une route /).

Pour lancer le proxy : bouton Demarrer en haut a droite. La pastille passe au vert (En service). Arreter stoppe le moteur. Le bouton FR / EN bascule la langue.

4. L'interface

Tableau de bord

Vue temps reel : etat du moteur, duree de service, requetes/s, totales, relayees, bloquees ; sante de chaque backend (pastille verte/rouge, connexions actives, servies, echecs) et un decompte des blocages par cause.

Ecouteurs / TLS

Ports d'ecoute. Pour chaque ligne : le Port, l'activation TLS avec le chemin du Certificat et de la Cle (PEM), et l'option Rediriger vers HTTPS. Boutons Ajouter / Supprimer, puis Enregistrer.

Backends (upstreams)

Maitre-detail. A gauche, les groupes de backends (nom). A droite, les serveurs du groupe selectionne (host:port et poids), plus le chemin de sante et l'intervalle des sondes. Le poids influe sur la repartition de charge (un poids 3 recoit environ trois fois plus de trafic qu'un poids 1).

Routes

Maitre-detail. A gauche, les hotes (par ex. localhost, ou * pour tout hote). A droite, les chemins : Chemin (prefixe, ex. /api), Backend cible et une Limite de debit optionnelle propre au chemin (ex. 20/second). Le chemin le plus specifique gagne ; / sert de repli.

Securite

BlocReglages
Limite globaleDebit applique a tout le trafic (ex. 100/minute). Vide = desactive.
WAFActif ; mode block ou log ; cases SQLi, XSS, traversee, RFI, scanners ; regex personnalisees possibles dans le YAML.
DDoSRejet des donnees anticipees ; connexions max par IP ; delestage memoire (octets) ; duree de bannissement. Apres plusieurs signaux hostiles, l'IP est bannie temporairement.
Pot de mielActif ; action block, tarpit (reponse lente) ou labyrinth (faux labyrinthe de liens).
Geo / CIDRListes de plages autorisees / bloquees (une par ligne, ex. 203.0.113.0/24). Une autorisation explicite l'emporte sur un blocage.

Detection ML

Active un scoreur d'anomalies (longueur d'URL, ratio de caracteres speciaux, entropie, nombre de parametres, absence de user-agent, methode inhabituelle...). Reglez le seuil (0 a 1) et le mode (log ou block). C'est une base de reference autonome, sans modele externe.

Journaux

Flux d'evenements en direct, colore par niveau (info, avertissement, blocage, erreur). Bouton Effacer. Les 500 dernieres lignes sont conservees.

A propos

Version, description, liste des fonctionnalites, developpeur et lien vers m365expertise.

5. Le pipeline de traitement

Chaque requete traverse les etages dans cet ordre ; le premier qui refuse arrete la requete :

DDoS (jail / memoire / IP) Geo / CIDR Limite de debit WAF ML Pot de miel Routage Load balancer Forward backend

6. TLS / certificats

Sur un ecouteur TLS, indiquez les chemins du certificat et de la cle au format PEM. rpGUARD charge la paire et la sert directement (pas de liaison netsh requise). Pour un test local, un certificat auto-signe suffit.

# Exemple de certificat de test auto-signe (PowerShell + OpenSSL)
openssl req -x509 -newkey rsa:2048 -nodes -keyout server.key -out server.crt -days 365 -subj "/CN=localhost"

7. Fichier de configuration

Format YAML compatible Aenebris (cle en snake_case), lu/ecrit dans config.yaml. Un modele commente est fourni : config.sample.yaml.

version: 1

listen:
  - port: 8080
  - port: 8443
    tls:
      cert: certs/server.crt
      key: certs/server.key

rate_limit: "100/minute"

ddos:
  per_ip_connections: 100
  memory_shed_bytes: 1073741824
  jail_cooldown_seconds: 300

waf:
  enabled: true
  mode: block
  sqli: true
  xss: true

upstreams:
  - name: default-backend
    servers:
      - host: "127.0.0.1:8000"
        weight: 3
      - host: "127.0.0.1:8001"
        weight: 1
    health_check:
      path: /health
      interval: 10s

routes:
  - host: localhost
    paths:
      - path: /api
        upstream: default-backend
        rate_limit: "20/second"
      - path: /
        upstream: default-backend

8. Generer le programme d'installation

Deux scripts a la racine du projet, plus le script Inno Setup :

FichierRole
publish.ps1Publie l'application dans .\publish (self-contained win-x64 par defaut).
rpGUARD.issScript Inno Setup qui empaquette .\publish en programme d'installation.
build-installer.ps1Enchaine la publication puis la compilation du Setup (recupere la version depuis le csproj).

Prerequis

Commande

# Depuis la racine du projet
.\build-installer.ps1

# Variante sans runtime embarque (necessite .NET 10 Desktop + ASP.NET Core sur la cible)
.\build-installer.ps1 -SelfContained:$false

Le Setup est genere dans installer-output\rpGUARD-Setup-<version>.exe. La version est la source unique <Version> du rpGUARD.csproj.

9. Depannage

SymptomePiste
Le proxy ne demarre pas (port occupe)Un autre service ecoute deja sur le port ; changez le port de l'ecouteur ou liberez-le.
503 "no-healthy-backends"Aucun serveur du backend ne repond a la sonde de sante ; verifiez host:port et le chemin de sante.
502 "bad-gateway"Le backend refuse la connexion ; verifiez qu'il ecoute bien en HTTP sur l'hote/port indique.
Erreur de certificat au demarrage TLSChemins PEM invalides ou paire cert/cle incoherente.
Trafic legitime bloque par le WAFPassez le WAF en mode log pour observer, puis affinez les regles.
ISCC.exe introuvableInstallez Inno Setup 6 ou ajoutez-le au PATH.