Salta ai contenuti

Integrazione con il Server di Origine

Questa pagina tratta due fasi di integrazione:

  1. Integrazione diretta — Il CDN edge inoltra direttamente al server di origine (test di baseline)
  2. Inserimento F5 XC — Il bilanciatore di carico HTTP F5 XC viene inserito tra CDN e origine (demo di sicurezza)

Inizia con l’integrazione diretta per stabilire la baseline, quindi inserisci F5 XC quando sei pronto.

Il componente lab origin-server fornisce applicazioni web vulnerabili per i test di sicurezza.

ProprietàValore
Documentazionef5-sales-demo.github.io/origin-server
Repositorygithub.com/f5-sales-demo/origin-server
Porta predefinita80
Controllo di integritàGET /health

Recupera il catalogo delle applicazioni correnti dal manifest pubblicato del server di origine:

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

Se non esiste ancora alcuna release, utilizza direttamente la sorgente del repository:

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

Il manifest elenca tutti i percorsi delle applicazioni, i controlli di integrità, le immagini container e le mappature delle funzionalità demo.

PercorsoApplicazioneFunzionalità Demo
/Pagina di atterraggio
/healthControllo di integrità
/juice-shop/OWASP Juice ShopWAF, Difesa Bot, Sicurezza API
/dvwa/DVWAWAF, Difesa Bot
/vampi/VAmPISicurezza API
/httpbin/httpbinDiagnostica
/whoami/whoamiVerifica degli header
/csd-demo/CSD DemoDifesa lato client
┌──────────┐ ┌──────────────────────┐ ┌─────────────────────┐
│ 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 │
└─────────────────────┘

Imposta l’IP del server di origine nella configurazione NGINX del CDN edge:

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

Oppure impostalo al momento del deploy Terraform tramite terraform.tfvars:

origin_server = "http://<ORIGIN_IP>"

Testa ogni applicazione di origine attraverso il CDN:

Terminal window
CDN=<CDN_EDGE_IP>
# Controllo di integrità (CDN locale)
curl -sf "http://$CDN/health" | python3 -m json.tool
# Pagina di atterraggio
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 (segue il reindirizzamento al login)
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 headers (mostra gli header CDN in JSON)
curl -sf "http://$CDN/httpbin/headers" | python3 -m json.tool | head -10
# whoami (mostra TUTTI gli header che riceve l'origine)
curl -sf "http://$CDN/whoami/"
# CSD Demo
curl -sf -o /dev/null -w "/csd-demo/ : HTTP %{http_code}\n" "http://$CDN/csd-demo/"

Tutti i percorsi dovrebbero restituire HTTP 200 (DVWA restituisce 302, poi 200 dopo il reindirizzamento).

L’endpoint /whoami/ mostra ogni header ricevuto dall’origine. Quando vi si accede tramite CDN, visualizza tutti i 67+ header del vendor:

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

Verifica che questi header chiave siano presenti:

VendorHeaderValore Atteso
StandardX-Forwarded-For<your_ip>, <cdn_edge_ip>
AkamaiTrue-Client-Ip<your_ip>
CloudflareCf-Connecting-Ip<your_ip>
CloudFrontCloudfront-Viewer-CountryUS
FastlyFastly-Client-Ip<your_ip>
Azure FDX-Azure-Clientip<your_ip>

Confronta i log di accesso su entrambi i server per verificare il flusso di traffico:

Terminal window
# Log del CDN edge — mostra l'IP del tuo client come sorgente
ssh azureuser@<CDN_EDGE_IP> "sudo tail -5 /var/log/nginx/access.log"
# Log dell'origine — mostra l'IP del CDN edge come sorgente
ssh azureuser@<ORIGIN_IP> "sudo tail -5 /var/log/nginx/access.log"

Il log dell’origine dovrebbe mostrare l’IP del CDN edge come client connesso, mentre il vero IP del client è trasportato in X-Forwarded-For e negli header specifici del vendor.

Terminal window
# Prima richiesta — MISS (recuperata dall'origine)
curl -s -I "http://$CDN/whoami/" | grep X-Cache-Status
# Seconda richiesta — HIT (servita dalla cache CDN)
curl -s -I "http://$CDN/whoami/" | grep X-Cache-Status

Dopo il test di baseline, inserisci un bilanciatore di carico HTTP F5 XC tra il CDN e l’origine:

┌──────────┐ ┌────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Client │────▶│ CDN Edge │────▶│ F5 XC HTTP LB │────▶│ Origin Server │
│ │ │ (NGINX) │ │ WAF + Bot + API │ │ │
└──────────┘ └────────────────┘ └──────────────────┘ └─────────────────┘
  1. Crea il bilanciatore di carico HTTP F5 XC con il server di origine nel suo pool di origine
  2. Aggiorna il CDN edge per puntare al VIP F5 XC invece che direttamente all’origine:
Terminal window
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. Verifica l’applicazione del WAF attraverso l’intera catena:
Terminal window
# SQL injection attraverso CDN → il WAF F5 XC dovrebbe bloccare
curl -I "http://$CDN/dvwa/vulnerabilities/sqli/?id=%27+OR+1%3D1--"
# La richiesta normale dovrebbe passare
curl -sf -o /dev/null -w "%{http_code}" "http://$CDN/juice-shop/"
  1. Configura l’Header IP Client Attendibile in F5 XC per leggere il vero IP del client dagli header CDN (ad es., True-Client-IP per la simulazione Akamai, CF-Connecting-IP per la simulazione Cloudflare)
ComponenteRepositoryScopo
CDN Edge (questo)cdn-simulatorCaching, header vendor
Server di Origineorigin-serverApplicazioni web vulnerabili
Configurazione F5 XCVari (waf, api-protection, bot-*, ecc.)Policy di sicurezza

Ogni componente pubblica documentazione che gli assistenti IA leggono per distribuire l’infrastruttura. Il server di origine pubblica un manifest degli endpoint come artefatto di GitHub Release che elenca tutti i percorsi delle applicazioni e i controlli di integrità.