Aller au contenu

Intégration

Le Générateur de trafic est l’un des Composants d’un environnement de démonstration multicouche. L’architecture complète lorsque tous les Composants sont déployés :

Traffic Generator -> F5 XC HTTP LB (WAF/Bot/API/CSD) -> Origin Server
|
CDN Simulator (optional)
graph LR
    TG[Traffic Generator VM] -->|Attack Traffic<br/>HTTPS| XCHLB[F5 XC HTTP LB]
    XCHLB -->|WAF / Bot / API / CSD| ORIGIN[Origin Server VM<br/>Juice Shop, DVWA,<br/>VAmPI, httpbin, whoami]
    CDN[CDN Simulator<br/>optional] -->|Cached Requests| XCHLB
    TG -.->|Direct Baseline<br/>HTTP optional| ORIGIN

Chaque composant est déployé et configuré indépendamment via Terraform. Le Générateur de trafic cible le FQDN de l’équilibreur de charge F5 XC, et non directement le Serveur d’origine.

Le Serveur d’origine fournit les applications backend que les suites d’attaques du Générateur de trafic ciblent :

Suite de traficApplication d’origineChemin
api-attacksVAmPI/vampi/
bot-simulationToutes les applicationsTous les chemins
cdn-load-testingSimulateur CDNPoint de terminaison CDN
crapi-exploitscrAPI/crapi/
csd-demo-attacksDémo CSD/csd-demo/
dvga-exploitsDVGA/dvga/
dvwa-exploitsDVWA/dvwa/
javascript-exploitsDémo CSD/csd-demo/
juice-shop-exploitsJuice Shop/juice-shop/
mitre-attackToutes les applicationsTous les chemins
owasp-scanningToutes les applicationsTous les chemins
performance-testingToutes les applicationsTous les chemins
reconnaissanceToutes les applicationsTous les chemins
restaurant-exploitsAPI Restaurant/restaurant/
ssl-scanningF5 XC LB (pas directement l’origine)N/A
traffic-generationToutes les applicationsTous les chemins
web-app-attacksJuice Shop, DVWA/juice-shop/, /dvwa/
  1. Déployer le Serveur d’origine en premier — il fournit les applications backend
  2. Configurer l’équilibreur de charge HTTP F5 XC avec le Serveur d’origine comme pool d’origine
  3. Attacher les politiques WAF, Défense Bot, Sécurité des API et CSD à l’équilibreur de charge
  4. Déployer le Générateur de trafic avec target_fqdn défini sur le domaine de l’équilibreur de charge F5 XC

Le fichier config.env du Générateur de trafic le connecte au reste de l’architecture :

Fenêtre de terminal
# Target the F5 XC load balancer (traffic passes through security policies)
TARGET_FQDN=demo.example.com
# Optional: target the origin server directly (bypasses F5 XC)
TARGET_ORIGIN_IP=20.10.5.100

Lorsque TARGET_FQDN est défini, tous les scripts de suite envoient le trafic vers https://<TARGET_FQDN>/.... L’équilibreur de charge HTTP F5 XC reçoit les requêtes, applique les politiques de Sécurité et transfère le trafic autorisé au Serveur d’origine.

La suite javascript-exploits est spécifiquement conçue pour la démonstration de la Défense côté client sur le Serveur d’origine. Cette suite valide la fonctionnalité CSD Phase 2 :

Flux de la Phase 2 :

  1. Le Serveur d’origine héberge la page de démo CSD à /csd-demo/
  2. F5 XC CSD injecte son JavaScript de surveillance dans la page
  3. La suite javascript-exploits du Générateur de trafic tente de :
    • Injecter des scripts inline qui imitent des skimmers Magecart
    • Modifier des éléments DOM pour rediriger les soumissions de formulaires
    • Charger des JavaScript tiers non autorisés
  4. F5 XC CSD détecte ces modifications et les signale dans le tableau de bord CSD

Pour utiliser la suite javascript-exploits :

Fenêtre de terminal
# Ensure CSD is enabled on the F5 XC HTTP LB for the /csd-demo/ path
# Then run the suite
/opt/traffic-generator/suites/runner.sh javascript-exploits

Lorsque le Simulateur CDN est déployé, l’architecture ajoute une couche de mise en cache :

Traffic Generator -> CDN Simulator -> F5 XC HTTP LB -> Origin Server

Le Simulateur CDN se positionne devant l’équilibreur de charge F5 XC, met en cache les réponses et ajoute des en-têtes de type CDN. Pour acheminer le trafic via le CDN :

Fenêtre de terminal
# Set TARGET_FQDN to the CDN Simulator's endpoint instead of F5 XC directly
TARGET_FQDN=cdn.demo.example.com

Cela est utile pour démontrer comment F5 XC gère le trafic arrivant via un CDN, notamment :

  • L’identification de l’adresse IP client réelle derrière les en-têtes de proxy CDN
  • L’application des règles WAF aux requêtes susceptibles d’avoir été modifiées par le CDN
  • La classification par la Défense Bot lorsque le CDN modifie les empreintes du navigateur

Comparaison du trafic direct et via équilibreur de charge

Section intitulée « Comparaison du trafic direct et via équilibreur de charge »

Le Générateur de trafic permet d’envoyer du trafic à la fois via F5 XC et directement vers l’origine. Cette comparaison démontre la valeur des fonctionnalités de Sécurité de F5 XC :

Fenêtre de terminal
# Traffic goes: Generator -> F5 XC LB -> Origin
TARGET_FQDN=demo.example.com /opt/traffic-generator/suites/runner.sh web-app-attacks

Résultat attendu : le Pare-feu applicatif (WAF) bloque les charges utiles d’injection SQL, XSS et d’injection de commandes. Le tableau de bord des événements de Sécurité affiche les requêtes bloquées avec les détails des violations.

Fenêtre de terminal
# Traffic goes: Generator -> Origin (no security layer)
TARGET_FQDN=20.10.5.100 /opt/traffic-generator/suites/runner.sh web-app-attacks

Résultat attendu : toutes les charges utiles atteignent les applications d’origine sans filtrage. Juice Shop et DVWA traitent les charges utiles d’attaque. Cela démontre ce qui se passe sans la protection F5 XC.

Pour une démonstration convaincante, exécutez la même suite dans les deux modes :

  1. Exécutez web-app-attacks directement contre l’origine — montrez que les attaques réussissent
  2. Exécutez web-app-attacks via F5 XC — montrez que les attaques sont bloquées
  3. Ouvrez le tableau de bord des événements de Sécurité F5 XC pour afficher les requêtes bloquées
  4. Comparez les résultats meta.json de la suite : les exécutions directes affichent plus de « passed » (attaques réussies), les exécutions via équilibreur de charge affichent plus de « failed » (attaques bloquées)
Fenêtre de terminal
TGEN_IP=$(terraform output -raw public_ip)
ORIGIN_IP="20.10.5.100"
LB_FQDN="demo.example.com"
# Run 1: Direct (baseline)
ssh azureuser@${TGEN_IP} "TARGET_FQDN=${ORIGIN_IP} /opt/traffic-generator/suites/runner.sh web-app-attacks"
# Run 2: Through F5 XC
ssh azureuser@${TGEN_IP} "TARGET_FQDN=${LB_FQDN} /opt/traffic-generator/suites/runner.sh web-app-attacks"
# Compare results
ssh azureuser@${TGEN_IP} 'for d in $(ls -t /opt/traffic-generator/results/ | head -2); do echo "=== $d ==="; cat /opt/traffic-generator/results/$d/meta.json; echo; done'

Lors du déploiement de l’environnement de laboratoire complet, utilisez des espaces de travail ou des répertoires Terraform distincts pour chaque composant :

Fenêtre de terminal
# 1. Deploy origin server
cd origin-server
terraform apply -var="subscription_id=YOUR_SUB_ID"
ORIGIN_IP=$(terraform output -raw public_ip)
# 2. Configure F5 XC (manual or via separate Terraform)
# Create origin pool -> HTTP LB -> attach WAF/Bot/API/CSD policies
# LB_FQDN=demo.example.com
# 3. Deploy traffic generator targeting the F5 XC LB
cd ../traffic-generator
terraform apply \
-var="subscription_id=YOUR_SUB_ID" \
-var="target_fqdn=demo.example.com" \
-var="target_origin_ip=${ORIGIN_IP}"
# 4. Generate traffic
TGEN_IP=$(terraform output -raw public_ip)
ssh azureuser@${TGEN_IP} '/opt/traffic-generator/suites/runner.sh web-app-attacks'