- Home
- Simulatore CDN
- Integrazione con il Server di Origine
Integrazione con il Server di Origine
Questa pagina tratta due fasi di integrazione:
- Integrazione diretta — Il CDN edge inoltra direttamente al server di origine (test di baseline)
- 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.
Riferimento al Server di Origine
Sezione intitolata “Riferimento al Server di Origine”Il componente lab origin-server fornisce applicazioni web vulnerabili per i test di sicurezza.
| Proprietà | Valore |
|---|---|
| Documentazione | f5-sales-demo.github.io/origin-server |
| Repository | github.com/f5-sales-demo/origin-server |
| Porta predefinita | 80 |
| Controllo di integrità | GET /health |
Applicazioni Disponibili
Sezione intitolata “Applicazioni Disponibili”Recupera il catalogo delle applicazioni correnti dal manifest pubblicato del server di origine:
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.toolSe non esiste ancora alcuna release, utilizza direttamente la sorgente del repository:
curl -sf https://raw.githubusercontent.com/f5-sales-demo/origin-server/main/manifest.json | python3 -m json.toolIl manifest elenca tutti i percorsi delle applicazioni, i controlli di integrità, le immagini container e le mappature delle funzionalità demo.
Percorsi delle Applicazioni
Sezione intitolata “Percorsi delle Applicazioni”| Percorso | Applicazione | Funzionalità Demo |
|---|---|---|
/ | Pagina di atterraggio | — |
/health | Controllo di integrità | — |
/juice-shop/ | OWASP Juice Shop | WAF, Difesa Bot, Sicurezza API |
/dvwa/ | DVWA | WAF, Difesa Bot |
/vampi/ | VAmPI | Sicurezza API |
/httpbin/ | httpbin | Diagnostica |
/whoami/ | whoami | Verifica degli header |
/csd-demo/ | CSD Demo | Difesa lato client |
Fase 1: Integrazione Diretta (Baseline)
Sezione intitolata “Fase 1: Integrazione Diretta (Baseline)”┌──────────┐ ┌──────────────────────┐ ┌─────────────────────┐│ 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 │ └─────────────────────┘Configurare l’Origine
Sezione intitolata “Configurare l’Origine”Imposta l’IP del server di origine nella configurazione NGINX del CDN edge:
ssh azureuser@<CDN_EDGE_IP>sudo sed -i 's|proxy_pass .*;|proxy_pass http://<ORIGIN_IP>;|' /etc/nginx/conf.d/cdn-edge.confsudo rm -rf /var/cache/nginx/cdn/*sudo nginx -t && sudo systemctl reload nginxOppure impostalo al momento del deploy Terraform tramite terraform.tfvars:
origin_server = "http://<ORIGIN_IP>"Verificare Tutte le Applicazioni
Sezione intitolata “Verificare Tutte le Applicazioni”Testa ogni applicazione di origine attraverso il CDN:
CDN=<CDN_EDGE_IP>
# Controllo di integrità (CDN locale)curl -sf "http://$CDN/health" | python3 -m json.tool
# Pagina di atterraggiocurl -sf -o /dev/null -w "/ : HTTP %{http_code}\n" "http://$CDN/"
# Juice Shopcurl -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 APIcurl -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 Democurl -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).
Verificare gli Header CDN all’Origine
Sezione intitolata “Verificare gli Header CDN all’Origine”L’endpoint /whoami/ mostra ogni header ricevuto dall’origine. Quando vi si accede tramite CDN, visualizza tutti i 67+ header del vendor:
curl -sf "http://$CDN/whoami/"Verifica che questi header chiave siano presenti:
| Vendor | Header | Valore Atteso |
|---|---|---|
| Standard | X-Forwarded-For | <your_ip>, <cdn_edge_ip> |
| Akamai | True-Client-Ip | <your_ip> |
| Cloudflare | Cf-Connecting-Ip | <your_ip> |
| CloudFront | Cloudfront-Viewer-Country | US |
| Fastly | Fastly-Client-Ip | <your_ip> |
| Azure FD | X-Azure-Clientip | <your_ip> |
Correlazione dei Log
Sezione intitolata “Correlazione dei Log”Confronta i log di accesso su entrambi i server per verificare il flusso di traffico:
# Log del CDN edge — mostra l'IP del tuo client come sorgentessh azureuser@<CDN_EDGE_IP> "sudo tail -5 /var/log/nginx/access.log"
# Log dell'origine — mostra l'IP del CDN edge come sorgentessh 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.
Comportamento della Cache
Sezione intitolata “Comportamento della Cache”# 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-StatusFase 2: Inserimento F5 XC (Demo di Sicurezza)
Sezione intitolata “Fase 2: Inserimento F5 XC (Demo di Sicurezza)”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 │ │ │└──────────┘ └────────────────┘ └──────────────────┘ └─────────────────┘- Crea il bilanciatore di carico HTTP F5 XC con il server di origine nel suo pool di origine
- Aggiorna il CDN edge per puntare al VIP F5 XC invece che direttamente all’origine:
ssh azureuser@<CDN_EDGE_IP>sudo sed -i 's|proxy_pass .*;|proxy_pass https://<F5XC_LB_VIP>;|' /etc/nginx/conf.d/cdn-edge.confsudo rm -rf /var/cache/nginx/cdn/*sudo nginx -t && sudo systemctl reload nginx- Verifica l’applicazione del WAF attraverso l’intera catena:
# SQL injection attraverso CDN → il WAF F5 XC dovrebbe bloccarecurl -I "http://$CDN/dvwa/vulnerabilities/sqli/?id=%27+OR+1%3D1--"
# La richiesta normale dovrebbe passarecurl -sf -o /dev/null -w "%{http_code}" "http://$CDN/juice-shop/"- Configura l’Header IP Client Attendibile in F5 XC per leggere il vero IP del client dagli header CDN (ad es.,
True-Client-IPper la simulazione Akamai,CF-Connecting-IPper la simulazione Cloudflare)
Architettura Multi-Componente
Sezione intitolata “Architettura Multi-Componente”| Componente | Repository | Scopo |
|---|---|---|
| CDN Edge (questo) | cdn-simulator | Caching, header vendor |
| Server di Origine | origin-server | Applicazioni web vulnerabili |
| Configurazione F5 XC | Vari (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à.