- Inicio
- Servidor de origen
- Integrar
Integrar
Integración del Pool de Origen de F5 XC
Sección titulada «Integración del Pool de Origen de F5 XC»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.
Arquitectura
Sección titulada «Arquitectura»End User -> F5 XC HTTP LB (WAF/Bot/API/CSD) -> Origin Server VM (nginx -> Docker apps)Configuración del Pool de Origen
Sección titulada «Configuración del Pool de Origen»Cree un pool de origen de F5 XC apuntando a la IP pública de esta VM:
| Configuración | Valor |
|---|---|
| Tipo de Servidor de Origen | IP pública del Servidor de Origen |
| Dirección IP | <terraform output public_ip> |
| Puerto | 80 |
| Health Check | HTTP, 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ón | Valor |
|---|---|
| Dominios | Su dominio de demostración (p. ej., demo.example.com) |
| Pool de Origen | El pool creado anteriormente |
| WAF | Adjunte su política de WAF |
| Defensa Bot | Habilite según sea necesario |
| Descubrimiento de API | Habilite para los endpoints de VAmPI |
Enrutamiento Basado en Rutas
Sección titulada «Enrutamiento Basado en Rutas»Cada aplicación es accesible mediante su prefijo de ruta a través del balanceador de carga:
| URL del F5 XC LB | Ruta de Origen | Aplicació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 | /health | Health 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:
LB_DOMAIN="demo.example.com"
curl -sk "https://${LB_DOMAIN}/whoami/"Busque estos encabezados inyectados por F5 XC en la respuesta:
| Encabezado | Significado |
|---|---|
X-Forwarded-For | Cadena de IP del cliente a través de F5 XC |
True-Client-IP | IP original del cliente |
X-Forwarded-Proto | https si TLS termina en F5 XC |
X-Volterra-Bot-Type | Clasificación del bot (cuando Defensa Bot está habilitada) |
X-Request-ID | ID de seguimiento de solicitud de F5 XC |
Pruebas de WAF a Través de F5 XC
Sección titulada «Pruebas de WAF a Través de F5 XC»Con una política de WAF adjunta al balanceador de carga HTTP, pruebe cargas de ataque:
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 .Pruebas de Seguridad de API
Sección titulada «Pruebas de Seguridad de API»Habilite el Descubrimiento de API en el balanceador de carga HTTP para mapear los endpoints de la API de VAmPI:
# These requests build the API inventory in F5 XCcurl -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"}'Integración de crAPI (Puerto 8888)
Sección titulada «Integración de crAPI (Puerto 8888)»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ón | Valor |
|---|---|
| Tipo de Servidor de Origen | IP pública del Servidor de Origen |
| Dirección IP | <terraform output public_ip> |
| Puerto | 8888 |
| Health Check | HTTP, 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:
# 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)Conciencia de Sesiones Sticky
Sección titulada «Conciencia de Sesiones Sticky»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ón | Método Sticky | Motivo |
|---|---|---|
| Juice Shop | hash $cookie_token | Estado de sesión de Node.js |
| DVWA | hash $cookie_PHPSESSID | Estado de sesión de PHP |
| VAmPI | ip_hash | Base de datos SQLite por instancia |
| CSD Demo | ip_hash | Registro de exfiltración en memoria por instancia |
| DVGA | ip_hash | Base de datos SQLite por instancia |
| RESTaurant | Round-robin | Backend PostgreSQL compartido |
| crAPI | — (puerto único 8888) | 7 microservicios, PostgreSQL + MongoDB |
| httpbin | Round-robin | Sin estado |
| whoami | Round-robin | Sin 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).
Arquitectura de Múltiples Componentes
Sección titulada «Arquitectura de Múltiples Componentes»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.