Ir al contenido

Arquitectura

Este componente proporciona un único Servidor de origen que aloja múltiples aplicaciones web vulnerables para demostraciones de pruebas de seguridad. Representa el “origen” en una arquitectura típica de balanceador de carga: el servidor de contenido backend que un balanceador de carga HTTP de F5 XC protege.

En arquitecturas de producción:

End User -> F5 XC HTTP LB (WAF/Bot/API Security) -> Origin Server -> Application

Este componente reemplaza un servidor de aplicaciones de producción real con una VM de propósito específico que ejecuta aplicaciones vulnerables conocidas que activan reglas de Firewall de aplicaciones web (WAF), políticas de Seguridad de API y detección de bots.

graph LR
    Client[Client Browser] --> XCHLB[F5 XC HTTP LB]
    XCHLB --> NGINX[nginx Reverse Proxy<br/>Ubuntu 24.04 · D16s_v3<br/>reuseport · 16 workers]
    NGINX --> |/| DEFAULT[Landing Page]
    NGINX --> |/juice-shop/| JS[Juice Shop ×4<br/>Ports 3001-3004<br/>hash cookie_token · cache]
    NGINX --> |/dvwa/| DVWA[DVWA-FPM ×4<br/>Ports 8101-8104<br/>hash cookie_PHPSESSID]
    NGINX --> |/vampi/| VAMPI[VAmPI ×4<br/>Ports 5101-5104<br/>ip_hash · gunicorn]
    NGINX --> |/httpbin/| HTTPBIN[httpbin ×4<br/>Ports 8201-8204<br/>gunicorn -w 4]
    NGINX --> |/whoami/| WHOAMI[whoami ×4<br/>Ports 8082-8085]
    NGINX --> |/csd-demo/| CSD[CSD Demo ×4<br/>Ports 5001-5004<br/>ip_hash · gunicorn -w 1]
    NGINX --> |/dvga/| DVGA[DVGA ×4<br/>Ports 5201-5204<br/>ip_hash · SQLite]
    NGINX --> |/restaurant/| REST[RESTaurant ×4<br/>Ports 8301-8304<br/>round-robin]
    XCHLB --> |:8888| CRAPI[crAPI ×7 microservices<br/>Port 8888<br/>web · identity · community<br/>workshop · postgres · mongo · mailhog]
    DVWA --> DB[(MariaDB 10.11<br/>dvwa-db)]
    REST --> RESTDB[(PostgreSQL 15.4<br/>restaurant-db)]

41 contenedores en una VM Standard_D16s_v3 (16 vCPU, 64 GiB RAM, 60 GiB de disco).

El proxy inverso nginx:

  • Escucha en el puerto 80 con reuseport y backlog=4096 para tráfico CDN de alta concurrencia
  • Enruta por prefijo de ruta hacia grupos de servidores upstream con balanceo de carga (4 instancias por aplicación)
  • Las sesiones sticky evitan la pérdida de estado: hash $cookie_token para Juice Shop, hash $cookie_PHPSESSID para DVWA, ip_hash para VAmPI y CSD Demo (estado SQLite/en memoria por instancia)
  • Caché de proxy para activos estáticos de Juice Shop (zona de 10 MB, máximo 100 MB, TTL de 60 s)
  • Registro de acceso deshabilitado para evitar el agotamiento del disco bajo pruebas de carga CDN (logrotate como defensa en profundidad)
  • Reenvío de cabeceras del cliente (X-Real-IP, X-Forwarded-For, X-Forwarded-Proto) para visibilidad en el origen
  • Ajuste del kernel mediante sysctl: somaxconn=65535, tcp_tw_reuse=1, ip_local_port_range=1024-65535
RutaUpstreamInstanciasPuertosSesión stickyPropósito
/nginxPágina de inicio con enlaces a todas las aplicaciones
/healthnginxEndpoint de salud JSON (9 aplicaciones listadas)
/juice-shop/juice_shop43001-3004hash $cookie_tokenSeguridad de aplicaciones web modernas (XSS, inyección, CSRF)
/dvwa/dvwa4 + MariaDB8101-8104hash $cookie_PHPSESSIDPruebas clásicas de Firewall de aplicaciones web (WAF) con dificultad ajustable
/vampi/vampi45101-5104ip_hashPruebas de seguridad de API REST (OWASP API Top 10)
/httpbin/httpbin_up48201-8204Servicio de solicitud/respuesta HTTP para demostraciones de API
/whoami/whoami_up48082-8085Diagnósticos de solicitudes — muestra todas las cabeceras y la IP del cliente
/csd-demo/csd_demo45001-5004ip_hashPruebas de Defensa del lado del cliente (ataques Magecart)
/dvga/dvga45201-5204ip_hashPruebas de seguridad de API GraphQL (inyección, DoS, omisión de autenticación)
/restaurant/restaurant4 + PostgreSQL8301-8304Seguridad de API REST (OWASP API Top 10 2023)
:8888crapi7 microservicios8888OWASP crAPI (BOLA, BFLA, asignación masiva, SSRF, JWT)

Este es uno de los elementos de un entorno de laboratorio más amplio. Cada componente es autocontenido y se implementa de forma independiente:

  • Este componente proporciona el Servidor de origen (nginx + contenedores Docker en una VM de Azure)
  • El Simulador CDN proporciona la capa de borde CDN (caché nginx en una VM de Azure)
  • Otros componentes proporcionan la configuración de F5 XC, DNS, políticas de Firewall de aplicaciones web (WAF), Seguridad de API, etc.

El operador humano añade componentes de uno en uno. La documentación de cada componente está redactada de modo que un asistente de IA pueda leerla e implementar la infraestructura de forma autónoma.

AplicaciónMotivo de selección
Juice ShopProyecto insignia de OWASP; SPA Node.js moderno con más de 100 desafíos que cubren el OWASP Top 10; mantenimiento activo; 4 instancias con caché de proxy
DVWAEstándar de la industria para pruebas de Firewall de aplicaciones web (WAF); niveles de seguridad ajustables (bajo/medio/alto/imposible); compilación personalizada de php-fpm + nginx para rendimiento; backend MariaDB 10.11 compartido
VAmPIDiseñado específicamente para el OWASP API Security Top 10; API REST con vulnerabilidades conocidas; gunicorn con 4 workers por instancia; sticky ip_hash para consistencia con SQLite
httpbinServicio canónico de pruebas HTTP de Kenneth Reitz; gunicorn con 4 workers gevent; útil para demostraciones de API e inspección de solicitudes
whoamiServidor de eco de solicitudes de Traefik; muestra los detalles completos de la solicitud tal como los ve el origen — esencial para verificar la inyección de cabeceras de F5 XC
CSD DemoPágina de pago personalizada con 5 ataques de estilo Magecart activables (skimmer de tarjetas, formjacker, keylogger, criptominero, secuestro DOM); endpoint de exfiltración + panel del atacante; gunicorn de un solo worker para persistencia del estado en memoria
DVGADamn Vulnerable GraphQL Application; vulnerabilidades específicas de GraphQL que incluyen inyección, DoS, ataques de batching y omisión de autorización; UI GraphiQL para exploración interactiva; sticky ip_hash para SQLite por instancia
RESTaurantDamn Vulnerable RESTaurant API Game; diseñado específicamente para el OWASP API Security Top 10 2023; FastAPI con Swagger UI; backend PostgreSQL 15.4 compartido; cubre BOLA, BFLA, asignación masiva, SSRF e inyección
crAPIOWASP Completely Ridiculous API; arquitectura de 7 microservicios que cubre BOLA, BFLA, asignación masiva, SSRF, manipulación de JWT e inyección NoSQL; puerto dedicado 8888 (SPA con rutas de API codificadas); MailHog para captura de correo electrónico