통합
전체 아키텍처
섹션 제목: “전체 아키텍처”트래픽 생성기는 다계층 데모 환경의 구성 요소 중 하나입니다. 모든 구성 요소가 배포되었을 때의 전체 아키텍처는 다음과 같습니다:
Traffic Generator -> F5 XC HTTP LB (WAF/Bot/API/CSD) -> Origin Server | CDN Simulator (optional)graph LR
TG[Traffic Generator VM] -->|Attack Traffic<br/>HTTPS| XCHLB[F5 XC HTTP LB]
XCHLB -->|WAF / Bot / API / CSD| ORIGIN[Origin Server VM<br/>Juice Shop, DVWA,<br/>VAmPI, httpbin, whoami]
CDN[CDN Simulator<br/>optional] -->|Cached Requests| XCHLB
TG -.->|Direct Baseline<br/>HTTP optional| ORIGIN각 구성 요소는 Terraform을 통해 독립적으로 배포 및 구성됩니다. 트래픽 생성기는 오리진 서버가 아닌 F5 XC 부하 분산 장치의 FQDN을 대상으로 합니다.
오리진 서버 통합
섹션 제목: “오리진 서버 통합”오리진 서버는 트래픽 생성기의 공격 스위트가 대상으로 하는 백엔드 애플리케이션을 제공합니다:
| 트래픽 스위트 | 오리진 애플리케이션 | 경로 |
|---|---|---|
| api-attacks | VAmPI | /vampi/ |
| bot-simulation | 모든 애플리케이션 | 모든 경로 |
| cdn-load-testing | CDN 시뮬레이터 | CDN 엔드포인트 |
| crapi-exploits | crAPI | /crapi/ |
| csd-demo-attacks | CSD 데모 | /csd-demo/ |
| dvga-exploits | DVGA | /dvga/ |
| dvwa-exploits | DVWA | /dvwa/ |
| javascript-exploits | CSD 데모 | /csd-demo/ |
| juice-shop-exploits | Juice Shop | /juice-shop/ |
| mitre-attack | 모든 애플리케이션 | 모든 경로 |
| owasp-scanning | 모든 애플리케이션 | 모든 경로 |
| performance-testing | 모든 애플리케이션 | 모든 경로 |
| reconnaissance | 모든 애플리케이션 | 모든 경로 |
| restaurant-exploits | Restaurant API | /restaurant/ |
| ssl-scanning | F5 XC LB (오리진 직접 연결 아님) | N/A |
| traffic-generation | 모든 애플리케이션 | 모든 경로 |
| web-app-attacks | Juice Shop, DVWA | /juice-shop/, /dvwa/ |
배포 순서
섹션 제목: “배포 순서”- 오리진 서버를 먼저 배포합니다 — 백엔드 애플리케이션을 제공합니다
- 오리진 서버를 오리진 풀로 사용하여 F5 XC HTTP 부하 분산 장치를 구성합니다
- 웹 앱 방화벽 (WAF), Bot 고급 방어, API 보안, CSD 정책을 부하 분산 장치에 연결합니다
target_fqdn을 F5 XC LB 도메인으로 설정하여 트래픽 생성기를 배포합니다
타겟팅 구성
섹션 제목: “타겟팅 구성”트래픽 생성기의 config.env는 나머지 아키텍처와의 연결을 설정합니다:
# Target the F5 XC load balancer (traffic passes through security policies)TARGET_FQDN=demo.example.com
# Optional: target the origin server directly (bypasses F5 XC)TARGET_ORIGIN_IP=20.10.5.100TARGET_FQDN이 설정되면 모든 스위트 스크립트는 https://<TARGET_FQDN>/...으로 트래픽을 전송합니다. F5 XC 부하 분산 장치가 요청을 수신하고, 보안 정책을 적용한 후 허용된 트래픽을 오리진 서버로 전달합니다.
CSD 데모 통합
섹션 제목: “CSD 데모 통합”javascript-exploits 스위트는 오리진 서버의 클라이언트 측 방어 데모를 위해 특별히 설계되었습니다. 이 스위트는 CSD 2단계 기능을 검증합니다:
2단계 흐름:
- 오리진 서버가
/csd-demo/경로에서 CSD 데모 페이지를 호스팅합니다 - F5 XC CSD가 페이지에 모니터링 JavaScript를 삽입합니다
- 트래픽 생성기의 javascript-exploits 스위트가 다음을 시도합니다:
- Magecart 스키머를 모방한 인라인 스크립트 삽입
- 양식 제출을 리디렉션하는 DOM 요소 수정
- 허가되지 않은 서드파티 JavaScript 로드
- F5 XC CSD가 이러한 수정을 감지하고 CSD 대시보드에 보고합니다
javascript-exploits 스위트를 사용하려면:
# Ensure CSD is enabled on the F5 XC HTTP LB for the /csd-demo/ path# Then run the suite/opt/traffic-generator/suites/runner.sh javascript-exploitsCDN 시뮬레이터 통합
섹션 제목: “CDN 시뮬레이터 통합”CDN 시뮬레이터가 배포되면 아키텍처에 캐싱 계층이 추가됩니다:
Traffic Generator -> CDN Simulator -> F5 XC HTTP LB -> Origin ServerCDN 시뮬레이터는 F5 XC 부하 분산 장치 앞에 위치하여 응답을 캐싱하고 CDN과 유사한 헤더를 추가합니다. CDN을 통해 트래픽을 전달하려면:
# Set TARGET_FQDN to the CDN Simulator's endpoint instead of F5 XC directlyTARGET_FQDN=cdn.demo.example.com이는 다음을 포함하여 F5 XC가 CDN을 통해 들어오는 트래픽을 처리하는 방식을 시연하는 데 유용합니다:
- CDN 프록시 헤더 뒤에 있는 실제 클라이언트 IP 식별
- CDN에 의해 수정되었을 수 있는 요청에 웹 앱 방화벽 (WAF) 규칙 적용
- CDN이 브라우저 핑거프린트를 수정할 때의 Bot 고급 방어 분류
직접 트래픽 대 LB 트래픽 비교
섹션 제목: “직접 트래픽 대 LB 트래픽 비교”트래픽 생성기는 F5 XC를 통한 트래픽 전송과 오리진으로의 직접 트래픽 전송을 모두 지원합니다. 이 비교는 F5 XC 보안 기능의 가치를 시연합니다:
F5 XC를 통한 경우 (기본값)
섹션 제목: “F5 XC를 통한 경우 (기본값)”# Traffic goes: Generator -> F5 XC LB -> OriginTARGET_FQDN=demo.example.com /opt/traffic-generator/suites/runner.sh web-app-attacks예상 결과: 웹 앱 방화벽 (WAF)이 SQL 인젝션, XSS, 명령 인젝션 페이로드를 차단합니다. 보안 이벤트 대시보드에 위반 세부 정보와 함께 차단된 요청이 표시됩니다.
오리진으로 직접 전송하는 경우 (기준값)
섹션 제목: “오리진으로 직접 전송하는 경우 (기준값)”# Traffic goes: Generator -> Origin (no security layer)TARGET_FQDN=20.10.5.100 /opt/traffic-generator/suites/runner.sh web-app-attacks예상 결과: 모든 페이로드가 필터링 없이 오리진 애플리케이션에 도달합니다. Juice Shop과 DVWA가 공격 페이로드를 처리합니다. 이는 F5 XC 보호 없이 어떤 일이 발생하는지 보여줍니다.
병렬 데모 흐름
섹션 제목: “병렬 데모 흐름”설득력 있는 데모를 위해 동일한 스위트를 두 가지 방식으로 실행합니다:
- 오리진에 직접
web-app-attacks실행 — 공격이 성공함을 보여줍니다 - F5 XC를 통해
web-app-attacks실행 — 공격이 차단됨을 보여줍니다 - F5 XC 보안 이벤트 대시보드를 열어 차단된 요청을 표시합니다
- 스위트
meta.json결과를 비교합니다: 직접 실행 시 “passed”(공격 성공)가 더 많고, LB 실행 시 “failed”(공격 차단)가 더 많습니다
TGEN_IP=$(terraform output -raw public_ip)ORIGIN_IP="20.10.5.100"LB_FQDN="demo.example.com"
# Run 1: Direct (baseline)ssh azureuser@${TGEN_IP} "TARGET_FQDN=${ORIGIN_IP} /opt/traffic-generator/suites/runner.sh web-app-attacks"
# Run 2: Through F5 XCssh azureuser@${TGEN_IP} "TARGET_FQDN=${LB_FQDN} /opt/traffic-generator/suites/runner.sh web-app-attacks"
# Compare resultsssh azureuser@${TGEN_IP} 'for d in $(ls -t /opt/traffic-generator/results/ | head -2); do echo "=== $d ==="; cat /opt/traffic-generator/results/$d/meta.json; echo; done'다중 구성 요소 Terraform 배포
섹션 제목: “다중 구성 요소 Terraform 배포”전체 랩 환경을 배포할 때는 각 구성 요소에 대해 별도의 Terraform 워크스페이스 또는 디렉토리를 사용합니다:
# 1. Deploy origin servercd origin-serverterraform apply -var="subscription_id=YOUR_SUB_ID"ORIGIN_IP=$(terraform output -raw public_ip)
# 2. Configure F5 XC (manual or via separate Terraform)# Create origin pool -> HTTP LB -> attach WAF/Bot/API/CSD policies# LB_FQDN=demo.example.com
# 3. Deploy traffic generator targeting the F5 XC LBcd ../traffic-generatorterraform apply \ -var="subscription_id=YOUR_SUB_ID" \ -var="target_fqdn=demo.example.com" \ -var="target_origin_ip=${ORIGIN_IP}"
# 4. Generate trafficTGEN_IP=$(terraform output -raw public_ip)ssh azureuser@${TGEN_IP} '/opt/traffic-generator/suites/runner.sh web-app-attacks'