- Accueil
- Serveur d'origine
- Intégrer
Intégrer
Intégration du pool d’origine F5 XC
Section intitulée « Intégration du pool d’origine F5 XC »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.
Architecture
Section intitulée « Architecture »End User -> F5 XC HTTP LB (WAF/Bot/API/CSD) -> Origin Server VM (nginx -> Docker apps)Configuration du pool d’origine
Section intitulée « Configuration du pool d’origine »Créez un pool d’origine F5 XC pointant vers l’adresse IP publique de cette VM :
| Paramètre | Valeur |
|---|---|
| Type de serveur d’origine | Adresse IP publique du Serveur d’origine |
| Adresse IP | <terraform output public_ip> |
| Port | 80 |
| Contrôle de santé | HTTP, chemin /health |
Configuration de l’équilibreur de charge HTTP
Section intitulée « Configuration de l’équilibreur de charge HTTP »Créez un équilibreur de charge HTTP avec le pool d’origine :
| Paramètre | Valeur |
|---|---|
| Domaines | Votre domaine de démonstration (ex. : demo.example.com) |
| Pool d’origine | Le pool créé ci-dessus |
| WAF | Associez votre politique WAF |
| Bot Defense | Activer selon les besoins |
| API Discovery | Activer pour les points de terminaison VAmPI |
Routage basé sur les chemins
Section intitulée « Routage basé sur les chemins »Chaque application est accessible via son préfixe de chemin à travers l’équilibreur de charge :
| URL F5 XC LB | Chemin d’origine | Application |
|---|---|---|
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 | /health | Contrôle de santé (nginx direct) |
Vérifier l’injection d’en-têtes F5 XC
Section intitulée « Vérifier l’injection d’en-têtes F5 XC »Utilisez le point de terminaison whoami pour vérifier quels en-têtes F5 XC injecte dans les requêtes atteignant l’origine :
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ête | Signification |
|---|---|
X-Forwarded-For | Chaîne d’IP client à travers F5 XC |
True-Client-IP | IP client d’origine |
X-Forwarded-Proto | https si TLS se termine au niveau de F5 XC |
X-Volterra-Bot-Type | Classification bot (lorsque la Défense Bot est activée) |
X-Request-ID | ID de suivi de requête F5 XC |
Tests WAF via F5 XC
Section intitulée « Tests WAF via F5 XC »Avec une politique WAF associée à l’équilibreur de charge HTTP, testez des charges utiles d’attaque :
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 .Tests de Sécurité des API
Section intitulée « Tests de Sécurité des API »Activez API Discovery sur l’équilibreur de charge HTTP pour cartographier les points de terminaison API de VAmPI :
# These requests build the API inventory in F5 XCcurl -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"}'Intégration crAPI (Port 8888)
Section intitulée « Intégration crAPI (Port 8888) »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ètre | Valeur |
|---|---|
| Type de serveur d’origine | Adresse IP publique du Serveur d’origine |
| Adresse IP | <terraform output public_ip> |
| Port | 8888 |
| 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 :
# 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)Prise en compte des sessions persistantes
Section intitulée « Prise en compte des sessions persistantes »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 :
| Application | Méthode de persistance | Pourquoi |
|---|---|---|
| Juice Shop | hash $cookie_token | État de session Node.js |
| DVWA | hash $cookie_PHPSESSID | État de session PHP |
| VAmPI | ip_hash | Base de données SQLite par instance |
| CSD Demo | ip_hash | Journal d’exfiltration en mémoire par instance |
| DVGA | ip_hash | Base de données SQLite par instance |
| RESTaurant | Round-robin | Backend PostgreSQL partagé |
| crAPI | — (port unique 8888) | 7 microservices, PostgreSQL + MongoDB |
| httpbin | Round-robin | Sans état |
| whoami | Round-robin | Sans é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).
Architecture multi-composants
Section intitulée « Architecture multi-composants »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.