Ir al contenido

Integrar con el Servidor de Origen

Esta página cubre dos etapas de integración:

  1. Integración directa — el borde CDN reenvía directamente al servidor de origen (pruebas de línea base)
  2. Inserción de F5 XC — balanceador de carga HTTP de F5 XC insertado entre el CDN y el origen (demo de seguridad)

Comience con la integración directa para establecer la línea base y luego inserte F5 XC cuando esté listo.

El componente de laboratorio origin-server proporciona aplicaciones web vulnerables para pruebas de seguridad.

PropiedadValor
Documentaciónf5-sales-demo.github.io/origin-server
Repositoriogithub.com/f5-sales-demo/origin-server
Puerto predeterminado80
Verificación de estadoGET /health

Obtenga el catálogo de aplicaciones actual desde el manifiesto publicado del servidor de origen:

Ventana de terminal
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

Si aún no existe ninguna versión, utilice directamente el código fuente del repositorio:

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

El manifiesto lista todas las rutas de aplicación, verificaciones de estado, imágenes de contenedor y asignaciones de características de demostración.

RutaAplicaciónCaracterísticas de demostración
/Página de inicio
/healthVerificación de estado
/juice-shop/OWASP Juice ShopWAF, Defensa Bot, Seguridad de API
/dvwa/DVWAWAF, Defensa Bot
/vampi/VAmPISeguridad de API
/httpbin/httpbinDiagnósticos
/whoami/whoamiVerificación de encabezados
/csd-demo/CSD DemoDefensa del lado del cliente
┌──────────┐ ┌──────────────────────┐ ┌─────────────────────┐
│ 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 │
└─────────────────────┘

Establezca la IP del servidor de origen en la configuración NGINX del borde CDN:

Ventana de terminal
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

O configúrelo en el momento del despliegue de Terraform mediante terraform.tfvars:

origin_server = "http://<ORIGIN_IP>"

Pruebe cada aplicación del origen a través del CDN:

Ventana de terminal
CDN=<CDN_EDGE_IP>
# Health check (CDN local)
curl -sf "http://$CDN/health" | python3 -m json.tool
# Landing page
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 (follows redirect to 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 (shows CDN headers in JSON)
curl -sf "http://$CDN/httpbin/headers" | python3 -m json.tool | head -10
# whoami (shows ALL headers the origin receives)
curl -sf "http://$CDN/whoami/"
# CSD Demo
curl -sf -o /dev/null -w "/csd-demo/ : HTTP %{http_code}\n" "http://$CDN/csd-demo/"

Todas las rutas deben devolver HTTP 200 (DVWA devuelve 302 y luego 200 al seguir la redirección).

El endpoint /whoami/ muestra cada encabezado que recibe el origen. Cuando se accede a través del CDN, muestra los 67+ encabezados de proveedor:

Ventana de terminal
curl -sf "http://$CDN/whoami/"

Verifique que estos encabezados clave estén presentes:

ProveedorEncabezadoValor esperado
EstándarX-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>

Compare los registros de acceso en ambos servidores para verificar el flujo de tráfico:

Ventana de terminal
# CDN edge log — shows your client IP as source
ssh azureuser@<CDN_EDGE_IP> "sudo tail -5 /var/log/nginx/access.log"
# Origin log — shows CDN edge IP as source
ssh azureuser@<ORIGIN_IP> "sudo tail -5 /var/log/nginx/access.log"

El registro del origen debe mostrar la IP del borde CDN como cliente conectado, mientras que la IP real del cliente se transporta en X-Forwarded-For y en los encabezados específicos de cada proveedor.

Ventana de terminal
# First request — MISS (fetched from origin)
curl -s -I "http://$CDN/whoami/" | grep X-Cache-Status
# Second request — HIT (served from CDN cache)
curl -s -I "http://$CDN/whoami/" | grep X-Cache-Status

Etapa 2: Inserción de F5 XC (Demo de Seguridad)

Sección titulada «Etapa 2: Inserción de F5 XC (Demo de Seguridad)»

Después de las pruebas de línea base, inserte un balanceador de carga HTTP de F5 XC entre el CDN y el origen:

┌──────────┐ ┌────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ Client │────▶│ CDN Edge │────▶│ F5 XC HTTP LB │────▶│ Origin Server │
│ │ │ (NGINX) │ │ WAF + Bot + API │ │ │
└──────────┘ └────────────────┘ └──────────────────┘ └─────────────────┘
  1. Cree el balanceador de carga HTTP de F5 XC con el servidor de origen en su pool de origen
  2. Actualice el borde CDN para que apunte al VIP de F5 XC en lugar de al origen directamente:
Ventana de terminal
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. Verifique la aplicación del WAF a través de la cadena completa:
Ventana de terminal
# SQL injection through CDN → F5 XC WAF should block
curl -I "http://$CDN/dvwa/vulnerabilities/sqli/?id=%27+OR+1%3D1--"
# Normal request should pass
curl -sf -o /dev/null -w "%{http_code}" "http://$CDN/juice-shop/"
  1. Configure el Encabezado de IP de Cliente de Confianza en F5 XC para leer la IP real del cliente desde los encabezados CDN (por ejemplo, True-Client-IP para la simulación de Akamai, CF-Connecting-IP para la simulación de Cloudflare)
ComponenteRepositorioPropósito
CDN Edge (este)cdn-simulatorCaché, encabezados de proveedor
Servidor de Origenorigin-serverAplicaciones web vulnerables
Configuración F5 XCVarios (waf, api-protection, bot-*, etc.)Políticas de seguridad

Cada componente publica documentación que los asistentes de IA leen para desplegar la infraestructura. El servidor de origen publica un manifiesto de endpoints como artefacto de GitHub Release que lista todas las rutas de aplicación y verificaciones de estado.