コンテンツにスキップ

アーキテクチャ

このコンポーネントは、セキュリティテストデモ用に複数の脆弱な Web アプリケーションをホストする単一のオリジンサーバーを提供します。典型的なロードバランサーアーキテクチャにおける「オリジン」、すなわち F5 XC HTTP ロードバランサーが保護するバックエンドコンテンツサーバーを表します。

本番アーキテクチャでは:

エンドユーザー -> F5 XC HTTP LB (WAF/Bot/API セキュリティ) -> オリジンサーバー -> アプリケーション

このコンポーネントは、実際の本番アプリケーションサーバーの代わりに、WAF ルール、API セキュリティポリシー、Bot 検知をトリガーする著名な脆弱アプリケーションを実行する専用 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)]

41 コンテナが Standard_D16s_v3 VM(16 vCPU、64 GiB RAM、60 GiB ディスク)上で動作します。

nginx リバースプロキシの特徴:

  • ポート 80 でリッスンreuseport および backlog=4096 を使用し、高並列 CDN トラフィックに対応)
  • パスプレフィックスによるルーティング(アプリケーションごとに 4 インスタンスのロードバランシングアップストリームプールへ振り分け)
  • スティッキーセッションによるステート損失の防止:Juice Shop には hash $cookie_token、DVWA には hash $cookie_PHPSESSID、VAmPI および CSD Demo(インスタンスごとの SQLite/インメモリステート)には ip_hash を使用
  • プロキシキャッシュ(Juice Shop の静的アセット向け:10 MB ゾーン、最大 100 MB、TTL 60 秒)
  • アクセスログ無効化による CDN 負荷テスト時のディスク枯渇防止(logrotate を多層防御として使用)
  • クライアントヘッダー(X-Real-IPX-Forwarded-ForX-Forwarded-Proto)を転送してオリジン可視性を確保
  • sysctl によるカーネルチューニングsomaxconn=65535tcp_tw_reuse=1ip_local_port_range=1024-65535
パスアップストリームインスタンス数ポートスティッキーセッション目的
/nginx全アプリへのリンクを含むランディングページ
/healthnginxJSON ヘルスエンドポイント(9 アプリ一覧)
/juice-shop/juice_shop43001-3004hash $cookie_tokenモダン Web アプリセキュリティ(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)

モジュール型コンポーネント設計

Section titled “モジュール型コンポーネント設計”

これはより大規模なラボ環境の一部です。各コンポーネントは自己完結型であり、独立してデプロイされます:

  • このコンポーネントはオリジンサーバーを提供します(Azure VM 上の nginx + Docker コンテナ)
  • CDN シミュレーターは CDN エッジレイヤーを提供します(Azure VM 上の nginx キャッシュ)
  • その他のコンポーネントは F5 XC 設定、DNS、WAF ポリシー、API セキュリティなどを提供します

人間のオペレーターはコンポーネントを一つずつ追加します。各コンポーネントのドキュメントは、AI アシスタントが読み取ってインフラを自律的にデプロイできるように記述されています。

これらのアプリケーションを選択した理由

Section titled “これらのアプリケーションを選択した理由”
アプリケーション選択理由
Juice ShopOWASP フラッグシッププロジェクト;OWASP Top 10 を網羅する 100 以上のチャレンジを持つモダンな Node.js SPA;活発にメンテナンス;プロキシキャッシュ付き 4 インスタンス
DVWAWAF テストの業界標準;セキュリティレベル調整可能(low/medium/high/impossible);パフォーマンス向けカスタム 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