Aller au contenu

Intégrer

Ce serveur d’origine est conçu pour être utilisé comme membre d’un pool d’origine derrière un équilibreur de charge HTTP F5 Distributed Cloud. La Plateforme F5 XC fournit le Pare-feu applicatif (WAF), la Défense Bot, la Sécurité des API et la Défense côté client en amont de cette origine.

End User -> F5 XC HTTP LB (WAF/Bot/API/CSD) -> Origin Server VM (nginx -> Docker apps)

Créez un pool d’origine F5 XC pointant vers l’adresse IP publique de cette VM :

ParamètreValeur
Type de serveur d’origineAdresse IP publique du Serveur d’origine
Adresse IP<terraform output public_ip>
Port80
Contrôle de santéHTTP, chemin /health

Créez un équilibreur de charge HTTP avec le pool d’origine :

ParamètreValeur
DomainesVotre domaine de démonstration (ex. : demo.example.com)
Pool d’origineLe pool créé ci-dessus
WAFAssociez votre politique WAF
Bot DefenseActiver selon les besoins
API DiscoveryActiver pour les points de terminaison VAmPI

Chaque application est accessible via son préfixe de chemin à travers l’équilibreur de charge :

URL F5 XC LBChemin d’origineApplication
https://demo.example.com/juice-shop//juice-shop/Juice Shop (4 instances, sticky par cookie)
https://demo.example.com/dvwa//dvwa/DVWA (4 instances + MariaDB, sticky par cookie)
https://demo.example.com/vampi//vampi/VAmPI (4 instances, sticky ip_hash)
https://demo.example.com/httpbin//httpbin/httpbin (4 instances, round-robin)
https://demo.example.com/whoami//whoami/Diagnostics de requête (4 instances)
https://demo.example.com/csd-demo//csd-demo/Démo CSD (4 instances, sticky ip_hash)
https://demo.example.com/dvga//dvga/DVGA (4 instances, sticky ip_hash)
https://demo.example.com/restaurant//restaurant/RESTaurant (4 instances, round-robin)
https://demo.example.com/health/healthContrôle de santé (nginx direct)

Utilisez le point de terminaison whoami pour vérifier quels en-têtes F5 XC injecte dans les requêtes atteignant l’origine :

Fenêtre de terminal
LB_DOMAIN="demo.example.com"
curl -sk "https://${LB_DOMAIN}/whoami/"

Recherchez ces en-têtes injectés par F5 XC dans la réponse :

En-têteSignification
X-Forwarded-ForChaîne d’IP client à travers F5 XC
True-Client-IPIP client d’origine
X-Forwarded-Protohttps si TLS se termine au niveau de F5 XC
X-Volterra-Bot-TypeClassification bot (lorsque la Défense Bot est activée)
X-Request-IDID de suivi de requête F5 XC

Avec une politique WAF associée à l’équilibreur de charge HTTP, testez des charges utiles d’attaque :

Fenêtre de terminal
LB_DOMAIN="demo.example.com"
# SQL Injection (should be blocked by WAF)
curl -sk "https://${LB_DOMAIN}/dvwa/vulnerabilities/sqli/?id=%27+OR+1%3D1--&Submit=Submit"
# XSS (should be blocked by WAF)
curl -sk "https://${LB_DOMAIN}/juice-shop/rest/products/search?q=<script>alert(1)</script>"
# Command Injection (should be blocked by WAF)
curl -sk "https://${LB_DOMAIN}/dvwa/vulnerabilities/exec/" \
-d "ip=127.0.0.1;cat+/etc/passwd&Submit=Submit"
# Normal request (should pass through)
curl -sk "https://${LB_DOMAIN}/httpbin/get" | jq .

Activez API Discovery sur l’équilibreur de charge HTTP pour cartographier les points de terminaison API de VAmPI :

Fenêtre de terminal
# These requests build the API inventory in F5 XC
curl -sk "https://${LB_DOMAIN}/vampi/users/v1"
curl -sk -X POST "https://${LB_DOMAIN}/vampi/users/v1/register" \
-H "Content-Type: application/json" \
-d '{"username":"apitest","password":"test123","email":"api@test.com"}'
curl -sk -X POST "https://${LB_DOMAIN}/vampi/users/v1/login" \
-H "Content-Type: application/json" \
-d '{"username":"apitest","password":"test123"}'

crAPI fonctionne sur un port dédié (8888) car il s’agit d’une application monopage qui code en dur ses chemins d’API et ne peut pas être servie derrière un préfixe de chemin. Pour intégrer crAPI avec F5 XC :

ParamètreValeur
Type de serveur d’origineAdresse IP publique du Serveur d’origine
Adresse IP<terraform output public_ip>
Port8888
Contrôle de santéHTTP, chemin /

Créez un pool d’origine distinct pour crAPI sur le port 8888, ou ajoutez un second membre au pool d’origine existant avec le port 8888 et utilisez des règles de routage pour diriger le trafic :

Fenêtre de terminal
# Test crAPI through F5 XC (if configured)
curl -sk "https://${LB_DOMAIN}:8888/"
# Or if using route rules on the same LB domain:
# Configure an F5 XC route rule matching Host header or path prefix
# to forward to the crAPI origin pool (port 8888)

Le serveur d’origine utilise les sessions persistantes nginx en interne pour acheminer les applications avec état vers des conteneurs backend cohérents. Lors de la configuration de l’équilibreur de charge HTTP F5 XC, tenez compte des points suivants :

ApplicationMéthode de persistancePourquoi
Juice Shophash $cookie_tokenÉtat de session Node.js
DVWAhash $cookie_PHPSESSIDÉtat de session PHP
VAmPIip_hashBase de données SQLite par instance
CSD Demoip_hashJournal d’exfiltration en mémoire par instance
DVGAip_hashBase de données SQLite par instance
RESTaurantRound-robinBackend PostgreSQL partagé
crAPI— (port unique 8888)7 microservices, PostgreSQL + MongoDB
httpbinRound-robinSans état
whoamiRound-robinSans état

F5 XC n’a pas besoin de répliquer ces sessions persistantes — nginx sur la VM d’origine gère le routage vers les backends. F5 XC doit traiter l’origine comme un point de terminaison unique (l’IP publique de la VM sur le port 80).

Combiné avec le Simulateur CDN, l’architecture complète du laboratoire est :

End User -> CDN Simulator (nginx cache) -> F5 XC HTTP LB -> Origin Server (this component)

Le Simulateur CDN utilise le VIP de l’équilibreur de charge HTTP F5 XC comme origine, et l’équilibreur de charge F5 XC utilise ce serveur d’origine comme backend. Cela crée une architecture multicouche réaliste pour des tests complets.