Zum Inhalt springen

Integrieren

Dieser Ursprungsserver ist dafür konzipiert, als Ursprungsserver-Pool-Mitglied hinter einem F5 Distributed Cloud HTTP-Load-Balancer eingesetzt zu werden. Die F5 XC Plattform stellt WAF, Bot-Abwehr, API-Sicherheit und clientseitige Abwehr vor diesem Ursprungsserver bereit.

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

Erstellen Sie einen F5 XC-Ursprungsserver-Pool, der auf die öffentliche IP dieser VM verweist:

EinstellungWert
Ursprungsserver-TypÖffentliche IP des Ursprungsservers
IP-Adresse<terraform output public_ip>
Port80
Health CheckHTTP, Pfad /health

Erstellen Sie einen HTTP-Load-Balancer mit dem Ursprungsserver-Pool:

EinstellungWert
DomainsIhre Demo-Domain (z. B. demo.example.com)
Ursprungsserver-PoolDer oben erstellte Pool
WAFFügen Sie Ihre WAF-Richtlinie hinzu
Bot-AbwehrNach Bedarf aktivieren
API DiscoveryFür VAmPI-Endpunkte aktivieren

Jede Anwendung ist über ihr Pfad-Präfix durch den Load-Balancer erreichbar:

F5 XC LB URLUrsprungspfadAnwendung
https://demo.example.com/juice-shop//juice-shop/Juice Shop (4 Instanzen, Cookie-Sticky)
https://demo.example.com/dvwa//dvwa/DVWA (4 Instanzen + MariaDB, Cookie-Sticky)
https://demo.example.com/vampi//vampi/VAmPI (4 Instanzen, ip_hash-Sticky)
https://demo.example.com/httpbin//httpbin/httpbin (4 Instanzen, Round-Robin)
https://demo.example.com/whoami//whoami/Anfrage-Diagnose (4 Instanzen)
https://demo.example.com/csd-demo//csd-demo/CSD Demo (4 Instanzen, ip_hash-Sticky)
https://demo.example.com/dvga//dvga/DVGA (4 Instanzen, ip_hash-Sticky)
https://demo.example.com/restaurant//restaurant/RESTaurant (4 Instanzen, Round-Robin)
https://demo.example.com/health/healthHealth Check (nginx direkt)

Verwenden Sie den whoami-Endpunkt, um zu überprüfen, welche Header F5 XC in Anfragen injiziert, die den Ursprungsserver erreichen:

Terminal-Fenster
LB_DOMAIN="demo.example.com"
curl -sk "https://${LB_DOMAIN}/whoami/"

Suchen Sie in der Antwort nach diesen von F5 XC injizierten Headern:

HeaderBedeutung
X-Forwarded-ForClient-IP-Kette durch F5 XC
True-Client-IPUrsprüngliche Client-IP
X-Forwarded-Protohttps, wenn TLS bei F5 XC terminiert
X-Volterra-Bot-TypeBot-Klassifizierung (wenn Bot-Abwehr aktiviert ist)
X-Request-IDF5 XC-Anfrage-Tracking-ID

Mit einer an den HTTP-Load-Balancer angehängten WAF-Richtlinie können Angriffs-Payloads getestet werden:

Terminal-Fenster
LB_DOMAIN="demo.example.com"
# SQL Injection (sollte von WAF blockiert werden)
curl -sk "https://${LB_DOMAIN}/dvwa/vulnerabilities/sqli/?id=%27+OR+1%3D1--&Submit=Submit"
# XSS (sollte von WAF blockiert werden)
curl -sk "https://${LB_DOMAIN}/juice-shop/rest/products/search?q=<script>alert(1)</script>"
# Command Injection (sollte von WAF blockiert werden)
curl -sk "https://${LB_DOMAIN}/dvwa/vulnerabilities/exec/" \
-d "ip=127.0.0.1;cat+/etc/passwd&Submit=Submit"
# Normale Anfrage (sollte durchgehen)
curl -sk "https://${LB_DOMAIN}/httpbin/get" | jq .

Aktivieren Sie API Discovery auf dem HTTP-Load-Balancer, um die API-Endpunkte von VAmPI zu erfassen:

Terminal-Fenster
# Diese Anfragen erstellen das API-Inventar 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 läuft auf einem dedizierten Port (8888), da es sich um eine Single-Page-Anwendung handelt, die ihre API-Pfade fest kodiert und nicht hinter einem Pfad-Präfix betrieben werden kann. Um crAPI mit F5 XC zu integrieren:

EinstellungWert
Ursprungsserver-TypÖffentliche IP des Ursprungsservers
IP-Adresse<terraform output public_ip>
Port8888
Health CheckHTTP, Pfad /

Erstellen Sie einen separaten Ursprungsserver-Pool für crAPI auf Port 8888, oder fügen Sie Ihrem vorhandenen Pool ein zweites Ursprungsserver-Pool-Mitglied mit Port 8888 hinzu und verwenden Sie Routing-Regeln, um den Datenverkehr zu leiten:

Terminal-Fenster
# crAPI über F5 XC testen (falls konfiguriert)
curl -sk "https://${LB_DOMAIN}:8888/"
# Oder bei Verwendung von Routing-Regeln auf derselben LB-Domain:
# Konfigurieren Sie eine F5 XC-Routing-Regel, die den Host-Header oder das Pfad-Präfix
# abgleicht, um den Datenverkehr an den crAPI-Ursprungsserver-Pool (Port 8888) weiterzuleiten

Der Ursprungsserver verwendet intern nginx-Sticky-Sessions, um zustandsbehaftete Anwendungen konsistent an Backend-Container weiterzuleiten. Bei der Konfiguration des F5 XC HTTP-Load-Balancers ist Folgendes zu beachten:

AnwendungSticky-MethodeGrund
Juice Shophash $cookie_tokenNode.js-Sitzungsstatus
DVWAhash $cookie_PHPSESSIDPHP-Sitzungsstatus
VAmPIip_hashSQLite-Datenbank pro Instanz
CSD Demoip_hashIn-Memory-Exfil-Log pro Instanz
DVGAip_hashSQLite-Datenbank pro Instanz
RESTaurantRound-RobinGemeinsames PostgreSQL-Backend
crAPI— (einzelner Port 8888)7 Microservices, PostgreSQL + MongoDB
httpbinRound-RobinZustandslos
whoamiRound-RobinZustandslos

F5 XC muss diese Sticky Sessions nicht replizieren – nginx auf der Ursprungsserver-VM übernimmt das Backend-Routing. F5 XC sollte den Ursprungsserver als einzelnen Endpunkt behandeln (die öffentliche IP der VM auf Port 80).

In Kombination mit dem CDN-Simulator ergibt sich die folgende vollständige Lab-Architektur:

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

Der CDN-Simulator verwendet die F5 XC HTTP-Load-Balancer-VIP als seinen Ursprungsserver, und der F5 XC-Load-Balancer verwendet diesen Ursprungsserver als Backend. Dies schafft eine realistische mehrschichtige Architektur für umfassende Tests.