Option reverse proxy en frontal : IP réelle des clients (poc_trusted_proxies), exemple Traefik
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
0e5426b7c3
commit
17d9ff4b29
3 files changed
+33
No files matched your search
@@ -248,6 +248,29 @@ poc_allowed_sources: ["203.0.113.10"] # IP autorisées sur les sites de poc_re
|
|||||||
|
|
||||||
La restriction par IP est une règle ModSecurity par site (id 10002) qui laisse passer le challenge ACME. Le client de test est toujours autorisé. Ajoutez `shop` à `poc_restricted_sites` pour ne pas exposer Juice Shop à tout Internet.
|
La restriction par IP est une règle ModSecurity par site (id 10002) qui laisse passer le challenge ACME. Le client de test est toujours autorisé. Ajoutez `shop` à `poc_restricted_sites` pour ne pas exposer Juice Shop à tout Internet.
|
||||||
|
|
||||||
|
### Derrière un reverse proxy existant (Traefik)
|
||||||
|
|
||||||
|
Si 80/443 sont déjà pris par un Traefik, il termine le TLS public (ses propres certificats Let's Encrypt) et relaie vers le WAF en HTTPS (certificat auto-signé du PoC) : garder `poc_tls: selfsigned` et déclarer son IP dans `poc_trusted_proxies` pour que BunkerWeb voie l'IP réelle des clients (sinon un bannissement viserait Traefik, donc tout le monde). Exemple de configuration dynamique Traefik (fichier) :
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
http:
|
||||||
|
routers:
|
||||||
|
bwpoc:
|
||||||
|
rule: "Host(`www.lab.naoned.net`) || Host(`shop.lab.naoned.net`) || Host(`api.lab.naoned.net`) || Host(`bwui.lab.naoned.net`)"
|
||||||
|
entryPoints: [websecure]
|
||||||
|
service: bwpoc
|
||||||
|
tls: { certResolver: letsencrypt }
|
||||||
|
services:
|
||||||
|
bwpoc:
|
||||||
|
loadBalancer:
|
||||||
|
passHostHeader: true
|
||||||
|
serversTransport: bwpoc-insecure
|
||||||
|
servers: [{ url: "https://192.168.200.155:443" }]
|
||||||
|
serversTransports:
|
||||||
|
bwpoc-insecure:
|
||||||
|
insecureSkipVerify: true
|
||||||
|
```
|
||||||
|
|
||||||
## Exploitation
|
## Exploitation
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -16,6 +16,11 @@ poc_tls: selfsigned
|
|||||||
poc_letsencrypt_email: ""
|
poc_letsencrypt_email: ""
|
||||||
poc_letsencrypt_staging: false # true pour tester sans consommer les quotas Let's Encrypt
|
poc_letsencrypt_staging: false # true pour tester sans consommer les quotas Let's Encrypt
|
||||||
|
|
||||||
|
# Reverse proxy en frontal (Traefik, HAProxy...) qui termine le TLS public et relaie vers
|
||||||
|
# le WAF (https://<waf>:443, certificat auto-signé à accepter côté proxy) : ses IP, pour
|
||||||
|
# que BunkerWeb prenne l'IP réelle du client dans X-Forwarded-For (bans, limites, listes).
|
||||||
|
poc_trusted_proxies: [] # ex. ["192.168.200.10"]
|
||||||
|
|
||||||
# --- Exposition publique ------------------------------------------------
|
# --- Exposition publique ------------------------------------------------
|
||||||
# Sites réservés à certaines IP sources (403 pour les autres, sauf challenge ACME).
|
# Sites réservés à certaines IP sources (403 pour les autres, sauf challenge ACME).
|
||||||
# Le client de test du PoC est toujours autorisé. Liste vide = pas de restriction.
|
# Le client de test du PoC est toujours autorisé. Liste vide = pas de restriction.
|
||||||
|
|||||||
@@ -28,6 +28,11 @@ bw_global_settings:
|
|||||||
LETS_ENCRYPT_CHALLENGE: "http"
|
LETS_ENCRYPT_CHALLENGE: "http"
|
||||||
USE_LETS_ENCRYPT_STAGING: "{{ 'yes' if poc_letsencrypt_staging | bool else 'no' }}"
|
USE_LETS_ENCRYPT_STAGING: "{{ 'yes' if poc_letsencrypt_staging | bool else 'no' }}"
|
||||||
AUTO_REDIRECT_HTTP_TO_HTTPS: "yes"
|
AUTO_REDIRECT_HTTP_TO_HTTPS: "yes"
|
||||||
|
# IP réelle du client derrière un reverse proxy (poc_trusted_proxies)
|
||||||
|
USE_REAL_IP: "{{ 'yes' if poc_trusted_proxies | length > 0 else 'no' }}"
|
||||||
|
REAL_IP_FROM: "{{ poc_trusted_proxies | join(' ') if poc_trusted_proxies | length > 0 else '192.168.0.0/16 172.16.0.0/12 10.0.0.0/8' }}"
|
||||||
|
REAL_IP_HEADER: "X-Forwarded-For"
|
||||||
|
REAL_IP_RECURSIVE: "yes"
|
||||||
# WAF : ModSecurity + OWASP CRS v4 actifs partout (défaut BunkerWeb)
|
# WAF : ModSecurity + OWASP CRS v4 actifs partout (défaut BunkerWeb)
|
||||||
USE_MODSECURITY: "yes"
|
USE_MODSECURITY: "yes"
|
||||||
USE_MODSECURITY_CRS: "yes"
|
USE_MODSECURITY_CRS: "yes"
|
||||||
|
|||||||
Reference in new issue
Block a user