跳到內容

整合

流量產生器是多層示範環境中的一個元件。部署所有元件後的完整架構如下:

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

每個元件均透過 Terraform 獨立部署與設定。流量產生器以 F5 XC 負載平衡器的 FQDN 為目標,而非直接指向來源伺服器。

來源伺服器提供流量產生器攻擊套件所目標的後端應用程式:

流量套件來源應用程式路徑
api-attacksVAmPI/vampi/
bot-simulation所有應用程式所有路徑
cdn-load-testingCDN 模擬器CDN 端點
crapi-exploitscrAPI/crapi/
csd-demo-attacksCSD 示範/csd-demo/
dvga-exploitsDVGA/dvga/
dvwa-exploitsDVWA/dvwa/
javascript-exploitsCSD 示範/csd-demo/
juice-shop-exploitsJuice Shop/juice-shop/
mitre-attack所有應用程式所有路徑
owasp-scanning所有應用程式所有路徑
performance-testing所有應用程式所有路徑
reconnaissance所有應用程式所有路徑
restaurant-exploitsRestaurant API/restaurant/
ssl-scanningF5 XC LB(非直接指向來源)N/A
traffic-generation所有應用程式所有路徑
web-app-attacksJuice Shop、DVWA/juice-shop//dvwa/
  1. 首先部署來源伺服器 — 它提供後端應用程式
  2. 以來源伺服器作為來源池,設定 F5 XC HTTP 負載平衡器
  3. WAF、Bot Defense、API Security 及 CSD 政策附加至負載平衡器
  4. 部署流量產生器,並將 target_fqdn 設定為 F5 XC LB 網域

流量產生器的 config.env 將其連接至其餘架構:

Terminal window
# 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

設定 TARGET_FQDN 後,所有套件腳本均會將流量傳送至 https://<TARGET_FQDN>/...。F5 XC 負載平衡器接收請求後,套用安全政策,並將允許的流量轉送至來源伺服器。

javascript-exploits 套件專為來源伺服器上的用戶端防禦(Client-Side Defense)示範而設計,用於驗證 CSD 第二階段功能:

第二階段流程:

  1. 來源伺服器在 /csd-demo/ 路徑托管 CSD 示範頁面
  2. F5 XC CSD 將其監控 JavaScript 注入頁面
  3. 流量產生器的 javascript-exploits 套件嘗試:
    • 注入模擬 Magecart 側錄程式的內嵌腳本
    • 修改 DOM 元素以重新導向表單提交
    • 載入未經授權的第三方 JavaScript
  4. F5 XC CSD 偵測到這些修改後,在 CSD 儀表板中回報

使用 javascript-exploits 套件的方式:

Terminal window
# 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

部署 CDN 模擬器後,架構將新增快取層:

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

CDN 模擬器位於 F5 XC 負載平衡器前端,負責快取回應並新增類 CDN 標頭。若要透過 CDN 傳送流量:

Terminal window
# Set TARGET_FQDN to the CDN Simulator's endpoint instead of F5 XC directly
TARGET_FQDN=cdn.demo.example.com

此設定有助於示範 F5 XC 如何處理透過 CDN 傳入的流量,包括:

  • 識別 CDN 代理標頭背後的真實用戶端 IP
  • 對可能已被 CDN 修改的請求套用 WAF 規則
  • 當 CDN 修改瀏覽器指紋時的 Bot Defense 分類

直接流量與負載平衡器流量比較

Section titled “直接流量與負載平衡器流量比較”

流量產生器支援同時透過 F5 XC 及直接向來源傳送流量。此比較可示範 F5 XC 安全功能的價值:

Terminal window
# Traffic goes: Generator -> F5 XC LB -> Origin
TARGET_FQDN=demo.example.com /opt/traffic-generator/suites/runner.sh web-app-attacks

預期結果:WAF 封鎖 SQL 注入、XSS 及命令注入酬載。安全事件儀表板顯示已封鎖的請求及違規詳情。

Terminal window
# Traffic goes: Generator -> Origin (no security layer)
TARGET_FQDN=20.10.5.100 /opt/traffic-generator/suites/runner.sh web-app-attacks

預期結果:所有酬載不經過濾直接到達來源應用程式。Juice Shop 及 DVWA 處理攻擊酬載。此情形示範缺乏 F5 XC 保護時的結果。

若要呈現具說服力的示範,請以兩種方式執行相同套件:

  1. 直接對來源執行 web-app-attacks — 顯示攻擊成功
  2. 透過 F5 XC 執行 web-app-attacks — 顯示攻擊被封鎖
  3. 開啟 F5 XC 安全事件儀表板以顯示已封鎖的請求
  4. 比較套件的 meta.json 結果:直接執行顯示較多「passed」(攻擊成功),透過負載平衡器執行顯示較多「failed」(攻擊被封鎖)
Terminal window
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'

部署完整實驗室環境時,請為每個元件使用獨立的 Terraform 工作區或目錄:

Terminal window
# 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'