Ir al contenido

Integrar

Este servidor de origen está diseñado para usarse como miembro de un pool de origen detrás de un balanceador de carga HTTP de F5 Distributed Cloud. La Plataforma F5 XC proporciona Firewall de aplicaciones web (WAF), Defensa Bot, Seguridad de API y Defensa del lado del cliente frente a este origen.

End User -> F5 XC HTTP LB (WAF/Bot/API/CSD) -> Origin Server VM (nginx -> Docker apps)

Cree un pool de origen de F5 XC apuntando a la IP pública de esta VM:

ConfiguraciónValor
Tipo de Servidor de OrigenIP pública del Servidor de Origen
Dirección IP<terraform output public_ip>
Puerto80
Health CheckHTTP, ruta /health

Configuración del Balanceador de Carga HTTP

Sección titulada «Configuración del Balanceador de Carga HTTP»

Cree un balanceador de carga HTTP con el pool de origen:

ConfiguraciónValor
DominiosSu dominio de demostración (p. ej., demo.example.com)
Pool de OrigenEl pool creado anteriormente
WAFAdjunte su política de WAF
Defensa BotHabilite según sea necesario
Descubrimiento de APIHabilite para los endpoints de VAmPI

Cada aplicación es accesible mediante su prefijo de ruta a través del balanceador de carga:

URL del F5 XC LBRuta de OrigenAplicación
https://demo.example.com/juice-shop//juice-shop/Juice Shop (4 instancias, sticky por cookie)
https://demo.example.com/dvwa//dvwa/DVWA (4 instancias + MariaDB, sticky por cookie)
https://demo.example.com/vampi//vampi/VAmPI (4 instancias, sticky por ip_hash)
https://demo.example.com/httpbin//httpbin/httpbin (4 instancias, round-robin)
https://demo.example.com/whoami//whoami/Diagnósticos de solicitud (4 instancias)
https://demo.example.com/csd-demo//csd-demo/CSD Demo (4 instancias, sticky por ip_hash)
https://demo.example.com/dvga//dvga/DVGA (4 instancias, sticky por ip_hash)
https://demo.example.com/restaurant//restaurant/RESTaurant (4 instancias, round-robin)
https://demo.example.com/health/healthHealth check (nginx directo)

Verificar la Inyección de Encabezados de F5 XC

Sección titulada «Verificar la Inyección de Encabezados de F5 XC»

Use el endpoint whoami para verificar qué encabezados inyecta F5 XC en las solicitudes que llegan al origen:

Ventana de terminal
LB_DOMAIN="demo.example.com"
curl -sk "https://${LB_DOMAIN}/whoami/"

Busque estos encabezados inyectados por F5 XC en la respuesta:

EncabezadoSignificado
X-Forwarded-ForCadena de IP del cliente a través de F5 XC
True-Client-IPIP original del cliente
X-Forwarded-Protohttps si TLS termina en F5 XC
X-Volterra-Bot-TypeClasificación del bot (cuando Defensa Bot está habilitada)
X-Request-IDID de seguimiento de solicitud de F5 XC

Con una política de WAF adjunta al balanceador de carga HTTP, pruebe cargas de ataque:

Ventana de terminal
LB_DOMAIN="demo.example.com"
# SQL Injection (should be blocked by WAF)
curl -sk "https://${LB_DOMAIN}/dvwa/vulnerabilities/sqli/?id=%27+OR+1%3D1--&Submit=Submit"
# XSS (should be blocked by WAF)
curl -sk "https://${LB_DOMAIN}/juice-shop/rest/products/search?q=<script>alert(1)</script>"
# Command Injection (should be blocked by WAF)
curl -sk "https://${LB_DOMAIN}/dvwa/vulnerabilities/exec/" \
-d "ip=127.0.0.1;cat+/etc/passwd&Submit=Submit"
# Normal request (should pass through)
curl -sk "https://${LB_DOMAIN}/httpbin/get" | jq .

Habilite el Descubrimiento de API en el balanceador de carga HTTP para mapear los endpoints de la API de VAmPI:

Ventana de terminal
# These requests build the API inventory in F5 XC
curl -sk "https://${LB_DOMAIN}/vampi/users/v1"
curl -sk -X POST "https://${LB_DOMAIN}/vampi/users/v1/register" \
-H "Content-Type: application/json" \
-d '{"username":"apitest","password":"test123","email":"api@test.com"}'
curl -sk -X POST "https://${LB_DOMAIN}/vampi/users/v1/login" \
-H "Content-Type: application/json" \
-d '{"username":"apitest","password":"test123"}'

crAPI se ejecuta en un puerto dedicado (8888) porque es una aplicación de página única que codifica de manera fija sus rutas de API y no puede servirse detrás de un prefijo de ruta. Para integrar crAPI con F5 XC:

ConfiguraciónValor
Tipo de Servidor de OrigenIP pública del Servidor de Origen
Dirección IP<terraform output public_ip>
Puerto8888
Health CheckHTTP, ruta /

Cree un pool de origen separado para crAPI en el puerto 8888, o agregue un segundo miembro al pool de origen existente con el puerto 8888 y use reglas de enrutamiento para dirigir el tráfico:

Ventana de terminal
# Test crAPI through F5 XC (if configured)
curl -sk "https://${LB_DOMAIN}:8888/"
# Or if using route rules on the same LB domain:
# Configure an F5 XC route rule matching Host header or path prefix
# to forward to the crAPI origin pool (port 8888)

El servidor de origen usa sesiones sticky de nginx internamente para enrutar aplicaciones con estado hacia contenedores de backend consistentes. Al configurar el balanceador de carga HTTP de F5 XC, tenga en cuenta lo siguiente:

AplicaciónMétodo StickyMotivo
Juice Shophash $cookie_tokenEstado de sesión de Node.js
DVWAhash $cookie_PHPSESSIDEstado de sesión de PHP
VAmPIip_hashBase de datos SQLite por instancia
CSD Demoip_hashRegistro de exfiltración en memoria por instancia
DVGAip_hashBase de datos SQLite por instancia
RESTaurantRound-robinBackend PostgreSQL compartido
crAPI— (puerto único 8888)7 microservicios, PostgreSQL + MongoDB
httpbinRound-robinSin estado
whoamiRound-robinSin estado

F5 XC no necesita replicar estas sesiones sticky: nginx en la VM de origen se encarga del enrutamiento al backend. F5 XC debe tratar el origen como un único endpoint (la IP pública de la VM en el puerto 80).

Cuando se combina con el Simulador CDN, la arquitectura completa del laboratorio es:

End User -> CDN Simulator (nginx cache) -> F5 XC HTTP LB -> Origin Server (this component)

El Simulador CDN usa el VIP del balanceador de carga HTTP de F5 XC como su origen, y el balanceador de carga de F5 XC usa este servidor de origen como su backend. Esto crea una arquitectura multicapa realista para pruebas integrales.