Zum Inhalt springen

Integration mit dem Ursprungsserver

Diese Seite behandelt zwei Integrationsphasen:

  1. Direkte Integration — CDN-Edge leitet direkt an den Ursprungsserver weiter (Basistests)
  2. F5 XC-Einfügung — F5 XC HTTP-Load-Balancer zwischen CDN und Ursprungsserver eingefügt (Sicherheits-Demo)

Beginnen Sie mit der direkten Integration, um die Basislinie zu etablieren, und fügen Sie dann F5 XC bei Bedarf ein.

Die origin-server-Laborkomponente stellt anfällige Webanwendungen für Sicherheitstests bereit.

EigenschaftWert
Dokumentationf5-sales-demo.github.io/origin-server
Repositorygithub.com/f5-sales-demo/origin-server
Standardport80
IntegritätsprüfungGET /health

Rufen Sie den aktuellen Anwendungskatalog aus dem veröffentlichten Manifest des Ursprungsservers ab:

Terminal-Fenster
MANIFEST_URL=$(curl -sf https://api.github.com/repos/f5-sales-demo/origin-server/releases/latest \
| python3 -c "import sys,json; assets=json.load(sys.stdin).get('assets',[]); print(next((a['browser_download_url'] for a in assets if a['name']=='manifest.json'),''))")
curl -sf "$MANIFEST_URL" | python3 -m json.tool

Falls noch kein Release vorhanden ist, verwenden Sie direkt die Repository-Quelle:

Terminal-Fenster
curl -sf https://raw.githubusercontent.com/f5-sales-demo/origin-server/main/manifest.json | python3 -m json.tool

Das Manifest listet alle Anwendungspfade, Integritätsprüfungen, Container-Images und Demo-Feature-Zuordnungen auf.

PfadAnwendungDemo-Features
/Startseite
/healthIntegritätsprüfung
/juice-shop/OWASP Juice ShopWeb-App-Firewall (WAF), Bot-Abwehr, API-Sicherheit
/dvwa/DVWAWeb-App-Firewall (WAF), Bot-Abwehr
/vampi/VAmPIAPI-Sicherheit
/httpbin/httpbinDiagnose
/whoami/whoamiHeader-Überprüfung
/csd-demo/CSD DemoClientseitige Abwehr
┌──────────┐ ┌──────────────────────┐ ┌─────────────────────┐
│ Client │────▶│ CDN Edge (NGINX) │────▶│ Origin Server │
│ │ │ 20.65.90.112 │ │ 20.12.78.159 │
└──────────┘ │ 67+ CDN headers │ │ Juice Shop, DVWA, │
│ Disk cache │ │ VAmPI, httpbin, │
└──────────────────────┘ │ whoami, CSD Demo │
└─────────────────────┘

Legen Sie die IP-Adresse des Ursprungsservers in der CDN-Edge-NGINX-Konfiguration fest:

Terminal-Fenster
ssh azureuser@<CDN_EDGE_IP>
sudo sed -i 's|proxy_pass .*;|proxy_pass http://<ORIGIN_IP>;|' /etc/nginx/conf.d/cdn-edge.conf
sudo rm -rf /var/cache/nginx/cdn/*
sudo nginx -t && sudo systemctl reload nginx

Oder legen Sie sie zur Terraform-Bereitstellungszeit über terraform.tfvars fest:

origin_server = "http://<ORIGIN_IP>"

Testen Sie jede Ursprungsanwendung über das CDN:

Terminal-Fenster
CDN=<CDN_EDGE_IP>
# Integritätsprüfung (CDN lokal)
curl -sf "http://$CDN/health" | python3 -m json.tool
# Startseite
curl -sf -o /dev/null -w "/ : HTTP %{http_code}\n" "http://$CDN/"
# Juice Shop
curl -sf -o /dev/null -w "/juice-shop/ : HTTP %{http_code}\n" "http://$CDN/juice-shop/"
# DVWA (folgt Weiterleitung zur Anmeldung)
curl -sf -o /dev/null -w "/dvwa/ : HTTP %{http_code}\n" -L "http://$CDN/dvwa/"
# VAmPI API
curl -sf "http://$CDN/vampi/users/v1" | python3 -m json.tool | head -5
# httpbin-Header (zeigt CDN-Header als JSON)
curl -sf "http://$CDN/httpbin/headers" | python3 -m json.tool | head -10
# whoami (zeigt ALLE Header, die der Ursprungsserver empfängt)
curl -sf "http://$CDN/whoami/"
# CSD Demo
curl -sf -o /dev/null -w "/csd-demo/ : HTTP %{http_code}\n" "http://$CDN/csd-demo/"

Alle Pfade sollten HTTP 200 zurückgeben (DVWA gibt 302 zurück, dann 200 nach Weiterleitung).

Der /whoami/-Endpunkt zeigt jeden Header, den der Ursprungsserver empfängt. Bei Zugriff über das CDN werden alle 67+ Anbieter-Header angezeigt:

Terminal-Fenster
curl -sf "http://$CDN/whoami/"

Stellen Sie sicher, dass diese wichtigen Header vorhanden sind:

AnbieterHeaderErwarteter Wert
StandardX-Forwarded-For<ihre_ip>, <cdn_edge_ip>
AkamaiTrue-Client-Ip<ihre_ip>
CloudflareCf-Connecting-Ip<ihre_ip>
CloudFrontCloudfront-Viewer-CountryUS
FastlyFastly-Client-Ip<ihre_ip>
Azure FDX-Azure-Clientip<ihre_ip>

Vergleichen Sie die Zugriffslogs auf beiden Servern, um den Datenverkehrsfluss zu überprüfen:

Terminal-Fenster
# CDN-Edge-Log — zeigt Ihre Client-IP als Quelle
ssh azureuser@<CDN_EDGE_IP> "sudo tail -5 /var/log/nginx/access.log"
# Ursprungsserver-Log — zeigt CDN-Edge-IP als Quelle
ssh azureuser@<ORIGIN_IP> "sudo tail -5 /var/log/nginx/access.log"

Das Ursprungsserver-Log sollte die CDN-Edge-IP als verbindenden Client anzeigen, während die echte Client-IP in X-Forwarded-For und anbieterspezifischen Headern übertragen wird.

Terminal-Fenster
# Erste Anfrage — MISS (vom Ursprungsserver abgerufen)
curl -s -I "http://$CDN/whoami/" | grep X-Cache-Status
# Zweite Anfrage — HIT (aus CDN-Cache bereitgestellt)
curl -s -I "http://$CDN/whoami/" | grep X-Cache-Status

Fügen Sie nach den Basistests einen F5 XC HTTP-Load-Balancer zwischen CDN und Ursprungsserver ein:

┌──────────┐ ┌────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Client │────▶│ CDN Edge │────▶│ F5 XC HTTP LB │────▶│ Origin Server │
│ │ │ (NGINX) │ │ WAF + Bot + API │ │ │
└──────────┘ └────────────────┘ └──────────────────┘ └─────────────────┘
  1. Erstellen Sie den F5 XC HTTP-Load-Balancer mit dem Ursprungsserver in seinem Ursprungspool
  2. Aktualisieren Sie den CDN-Edge, damit er auf die F5 XC VIP anstatt direkt auf den Ursprungsserver verweist:
Terminal-Fenster
ssh azureuser@<CDN_EDGE_IP>
sudo sed -i 's|proxy_pass .*;|proxy_pass https://<F5XC_LB_VIP>;|' /etc/nginx/conf.d/cdn-edge.conf
sudo rm -rf /var/cache/nginx/cdn/*
sudo nginx -t && sudo systemctl reload nginx
  1. Überprüfen Sie die WAF-Durchsetzung über die gesamte Kette:
Terminal-Fenster
# SQL-Injection über CDN → F5 XC WAF sollte blockieren
curl -I "http://$CDN/dvwa/vulnerabilities/sqli/?id=%27+OR+1%3D1--"
# Normale Anfrage sollte durchgelassen werden
curl -sf -o /dev/null -w "%{http_code}" "http://$CDN/juice-shop/"
  1. Konfigurieren Sie den vertrauenswürdigen Client-IP-Header in F5 XC, um die echte Client-IP aus CDN-Headern zu lesen (z. B. True-Client-IP für Akamai-Simulation, CF-Connecting-IP für Cloudflare-Simulation)
KomponenteRepositoryZweck
CDN-Edge (diese)cdn-simulatorCaching, Anbieter-Header
Ursprungsserverorigin-serverAnfällige Webanwendungen
F5 XC-KonfigurationVerschiedene (waf, api-protection, bot-*, usw.)Sicherheitsrichtlinien

Jede Komponente veröffentlicht Dokumentation, die KI-Assistenten lesen, um die Infrastruktur bereitzustellen. Der Ursprungsserver veröffentlicht ein Endpunkt-Manifest als GitHub-Release-Artefakt, das alle Anwendungspfade und Integritätsprüfungen auflistet.