title: “学習用環境構築ガイド” part: “Part 0” chapter: “0-4”
学習用環境構築ガイド
本章では、本書の演習を安全かつ効率的に実施するために必要となる環境構成の方針を示す。詳細な手順や設定ファイルは exercises/ および scripts/ 配下にまとめ、ここでは「何を用意し、どのような前提で使うか」を整理する。
本章のゴール
- 前提:Docker(または Podman)によるコンテナ実行の概念を理解している。
- 到達目標:本書の演習が要求する環境要件、
exercises/とscripts/の役割、ネットワーク分離方針を説明し、安全に演習を開始できる。 - 対応演習:付録「演習環境クイックスタート」 を参照し、まず 1 つの演習環境を起動して疎通確認を行い、演習用ネットワーク分離の前提を満たしていることを確認する(詳細は
exercises/配下のREADME.mdを参照)。
想定プラットフォーム
本書の演習は、主に次のプラットフォームを前提とする。
- デスクトップ OS
- Linux(推奨)
- macOS
- Windows(WSL2 利用を推奨)
- 必要なリソースの目安
- メモリ:16GB 以上を推奨(複数コンテナ・エミュレータ併用を想定)
- ディスク:50GB 以上の空き容量(Docker イメージ、モバイル向けツール等を含む)
上記以外の環境でも動作しうるが、Docker や仮想化周りの制約により追加調整が必要となる場合がある。
共通で利用するツール
全 Part に共通して、次のツールを利用する。
- Git
- 本リポジトリの取得・更新、演習用コードのバージョン管理に利用する。
- Docker / Docker Compose(
docker compose)または Podman / podman-compose- 脆弱な Web アプリケーションや API、DB などの演習環境をコンテナとして起動する。
- Burp Suite
- Web / API Pentest の中心となるプロキシツール。Community Edition でも学習可能な範囲に絞る。
これらは本書執筆時点(2024 年〜2025 年前後)の安定版を前提とするが、マイナーバージョン差異による影響は最小となるよう配慮する。
Part ごとの追加要件(概要)
各 Part の演習に必要な追加要件の概要は次のとおりである。
- Part 2〜4(Web / Burp / API)
- Web ブラウザ(Firefox または Chromium 系)
- Burp Suite のブラウザプロキシ設定と CA 証明書インポート
- Part 5(モバイル)
- Android エミュレータまたは実機(開発者モード有効)
- MobSF、Frida、objection(演習では Docker 化や専用スクリプトを利用予定)
- モバイル端末の HTTP(S) プロキシ設定と証明書インポート
- Part 6(クラウド・インフラ)
- ローカルの疑似クラウド/インフラ環境(Docker Compose による複数コンテナ構成)
- Prowler / ScoutSuite 等の評価ツール(必要に応じてコンテナ化)
- Part 7(総合演習)
- 上記すべての環境を統合し、1 週間カリキュラムとして利用する。
本書では、可能な限り Docker コンテナとしてツール群を提供し、ホスト環境へのインストール依存を減らす方針を取る。
exercises ディレクトリの役割
exercises/ 配下には、演習環境向けの構成ファイルと補足ドキュメントを配置する。
exercises/juice-shop/- OWASP Juice Shop 等を用いた Web 脆弱性演習用環境。
exercises/dvwa/- 基礎的な Web 脆弱性(XSS、SQL インジェクション等)を確認するための DVWA 環境。
exercises/crapi/- API セキュリティ演習用の crAPI を用いた環境。
執筆時点で exercises/ に用意している演習環境は上記 3 つ(Juice Shop / DVWA / crAPI)である。
Part 5〜7 向けの演習は、今後 exercises/ 配下に追加する前提とし、提供状況は exercises/README.md を参照する。
各ディレクトリには、少なくとも次のファイルを用意する。
docker-compose.ymlまたは同等のコンテナ起動定義README.md(起動方法、想定シナリオ、注意事項)
本書ではコマンドとしては docker compose(Compose v2)を主に想定するが、ファイル名としては慣例どおり docker-compose.yml を用いる。
本書の本文では具体的な Docker コマンドの詳細までは踏み込まず、exercises/ の README を参照する形で記述する。
scripts ディレクトリの役割
scripts/ 配下には、演習環境の起動・停止や初期セットアップを補助するスクリプトを配置する。
- 例:
scripts/setup_exercises.sh- 必要な Docker イメージの取得、環境変数のサンプル生成、簡易チェックなど。
- 例:
scripts/cleanup_exercises.sh- 演習終了後のコンテナ停止や不要なボリューム削除など。
実運用にあたっては、組織のポリシー(プロキシ設定、社内レジストリ利用など)に合わせてスクリプトを調整することを前提とする。
図0-4 は、本リポジトリ内の exercises/(環境定義)と scripts/(起動・停止補助)、および実行時の主要コンポーネント(ブラウザ、Burp、Docker)の関係を俯瞰した構成図である。本文では細部のコマンド差異よりも、この構造(どこで何が動いているか)を前提として演習を進める。
図0-4: 演習環境とツール構成(概要)
flowchart LR
Repo[本リポジトリ] --> Ex[exercises/\n(演習環境定義)]
Repo --> Sc[scripts/\n(起動・停止補助)]
subgraph Host[受講者マシン]
Browser[ブラウザ]
Burp[Burp Suite\n(プロキシ)]
Docker[Docker / Compose]
end
Browser -->|プロキシ設定| Burp
Burp -->|HTTP(S)| Target[演習アプリ\n(Juice Shop / DVWA / crAPI 等)]
Ex --> Docker
Sc --> Docker
Docker --> Target
安全な演習のためのネットワーク方針
演習環境は、誤ってインターネット上の第三者システムに影響を与えないよう、次の方針に従う。
- 脆弱なアプリケーションは、原則としてローカルネットワークまたは VPN 内の検証用セグメントでのみ公開する。
- クラウド関連の演習は、原則としてローカルの疑似環境のみ を対象とし、実際の商用クラウドアカウントに対する攻撃的操作は行わない。
- モバイル端末は、演習用 Wi-Fi セグメントに接続し、業務ネットワークと分離する。
これらの方針は Part 0「法的注意点と倫理」で示した原則と一貫しており、本書に付属する演習用スクリプト類もこの前提に基づいて設計する。
次に読む Part
本章のポイント
- 本章は詳細手順ではなく「演習に必要な要件と前提」を整理し、具体作業は
exercises/とscripts/のドキュメントへ委譲する。 - 演習環境は複数 Part で共用するため、まず共通ツール(Git / Docker / Burp Suite)とリソース目安を満たす。
- 安全性のため、演習はネットワーク分離を前提とし、クラウド関連は原則としてローカル疑似環境で扱う。