콘텐츠로 이동

아키텍처

이 구성 요소는 보안 테스트 데모를 위한 다수의 취약한 웹 애플리케이션을 호스팅하는 단일 오리진 서버를 제공합니다. 이는 일반적인 로드 밸런서 아키텍처에서 “오리진”, 즉 F5 XC HTTP 로드 밸런서가 보호하는 백엔드 콘텐츠 서버를 나타냅니다.

프로덕션 아키텍처:

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

이 구성 요소는 실제 프로덕션 애플리케이션 서버를 WAF 규칙, API 보안 정책, 봇 탐지를 트리거하는 잘 알려진 취약 애플리케이션을 실행하는 전용 VM으로 대체합니다.

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)]

Standard_D16s_v3 VM (16 vCPU, 64 GiB RAM, 60 GiB 디스크)에 41개 컨테이너가 배포됩니다.

nginx 리버스 프록시:

  • 고동시성 CDN 트래픽을 위해 reuseportbacklog=4096을 사용하여 포트 80에서 수신 대기
  • 애플리케이션당 4개 인스턴스로 구성된 부하 분산 업스트림 풀로 경로 접두사 기반 라우팅
  • 고정 세션으로 상태 손실 방지: Juice Shop에는 hash $cookie_token, DVWA에는 hash $cookie_PHPSESSID, VAmPI 및 CSD Demo에는 ip_hash 사용 (인스턴스별 SQLite/인메모리 상태)
  • Juice Shop 정적 자산에 대한 프록시 캐시 (10 MB 영역, 최대 100 MB, TTL 60초)
  • CDN 부하 테스트 중 디스크 소진 방지를 위해 접근 로깅 비활성화 (심층 방어로 logrotate 사용)
  • 오리진 가시성을 위한 클라이언트 헤더 전달 (X-Real-IP, X-Forwarded-For, X-Forwarded-Proto)
  • sysctl을 통한 커널 튜닝: somaxconn=65535, tcp_tw_reuse=1, ip_local_port_range=1024-65535
경로업스트림인스턴스포트고정 세션목적
/nginx모든 앱 링크가 포함된 랜딩 페이지
/healthnginxJSON 상태 확인 엔드포인트 (9개 앱 나열)
/juice-shop/juice_shop43001-3004hash $cookie_token모던 웹 앱 보안 (XSS, 인젝션, CSRF)
/dvwa/dvwa4 + MariaDB8101-8104hash $cookie_PHPSESSID난이도 조절 가능한 클래식 WAF 테스트
/vampi/vampi45101-5104ip_hashREST API 보안 테스트 (OWASP API Top 10)
/httpbin/httpbin_up48201-8204API 데모 및 HTTP 요청/응답 서비스
/whoami/whoami_up48082-8085요청 진단 — 모든 헤더 및 클라이언트 IP 표시
/csd-demo/csd_demo45001-5004ip_hash클라이언트 측 방어 테스트 (Magecart 공격)
/dvga/dvga45201-5204ip_hashGraphQL API 보안 테스트 (인젝션, DoS, 인증 우회)
/restaurant/restaurant4 + PostgreSQL8301-8304REST API 보안 (OWASP API Top 10 2023)
:8888crapi7 마이크로서비스8888OWASP crAPI (BOLA, BFLA, 대량 할당, SSRF, JWT)

이것은 더 큰 랩 환경의 일부입니다. 각 구성 요소는 독립적으로 구성되어 배포됩니다:

  • 이 구성 요소는 오리진 서버를 제공합니다 (Azure VM의 nginx + Docker 컨테이너)
  • CDN 시뮬레이터는 CDN 에지 레이어를 제공합니다 (Azure VM의 nginx 캐싱)
  • 기타 구성 요소는 F5 XC 구성, DNS, WAF 정책, API 보안 등을 제공합니다

운영자는 구성 요소를 하나씩 추가합니다. 각 구성 요소의 문서는 AI 어시스턴트가 읽고 인프라를 자율적으로 배포할 수 있도록 작성되었습니다.

이 애플리케이션을 선택한 이유

섹션 제목: “이 애플리케이션을 선택한 이유”
애플리케이션선택 이유
Juice ShopOWASP 주력 프로젝트; OWASP Top 10을 다루는 100개 이상의 챌린지가 포함된 모던 Node.js SPA; 활발히 유지 관리됨; 프록시 캐시를 갖춘 4개 인스턴스
DVWAWAF 테스트의 업계 표준; 조절 가능한 보안 수준 (낮음/중간/높음/불가능); 성능을 위한 맞춤형 php-fpm + nginx 빌드; 공유 MariaDB 10.11 백엔드
VAmPIOWASP API 보안 Top 10을 위해 특별 제작; 알려진 취약점이 있는 REST API; 인스턴스당 4개 워커의 gunicorn; SQLite 일관성을 위한 ip_hash 고정 세션
httpbinKenneth Reitz의 표준 HTTP 테스트 서비스; 4개 gevent 워커의 gunicorn; API 데모 및 요청 검사에 유용
whoamiTraefik의 요청 에코 서버; 오리진이 보는 전체 요청 세부 정보 표시 — F5 XC 헤더 인젝션 검증에 필수
CSD Demo5가지 토글 가능한 Magecart 방식 공격(카드 스키머, 폼재킹, 키로거, 크립토마이너, DOM 하이재킹)이 포함된 맞춤형 결제 페이지; 유출 엔드포인트 및 공격자 대시보드; 인메모리 상태 유지를 위한 gunicorn 단일 워커
DVGADamn Vulnerable GraphQL Application; 인젝션, DoS, 배치 공격, 인증 우회를 포함한 GraphQL 특화 취약점; 인터랙티브 탐색을 위한 GraphiQL UI; 인스턴스별 SQLite를 위한 ip_hash 고정 세션
RESTaurantDamn Vulnerable RESTaurant API Game; OWASP API 보안 Top 10 2023을 위해 특별 제작; Swagger UI가 포함된 FastAPI; 공유 PostgreSQL 15.4 백엔드; BOLA, BFLA, 대량 할당, SSRF, 인젝션 포함
crAPIOWASP Completely Ridiculous API; BOLA, BFLA, 대량 할당, SSRF, JWT 조작, NoSQL 인젝션을 다루는 7개 마이크로서비스 아키텍처; 전용 포트 8888 (하드코딩된 API 경로가 있는 SPA); 이메일 캡처를 위한 MailHog