- ホーム
- トラフィックジェネレーター
- ランナー
ランナー
runner.sh は、スイートディレクトリ内の番号付きスクリプトをすべて順番に実行し、出力をキャプチャして結果メタデータを記録するスイートオーケストレーターです。VM 上の /opt/traffic-generator/suites/runner.sh にインストールされています。
runner.sh <suite-name> [--dry-run]引数:
| 引数 | 必須 | 説明 |
|---|---|---|
suite-name | はい | スイートディレクトリ名(例: web-app-attacks、api-attacks) |
--dry-run | いいえ | スクリプトを実行せずに実行対象を表示します |
例:
# web-app-attacks スイートを実行する/opt/traffic-generator/suites/runner.sh web-app-attacks
# api-attacks スクリプトをドライランでプレビューする/opt/traffic-generator/suites/runner.sh api-attacks --dry-run
# ボットシミュレーションを実行する/opt/traffic-generator/suites/runner.sh bot-simulationconfig.env
Section titled “config.env”ランナーは /opt/traffic-generator/config.env から設定を読み込みます:
# 必須: ターゲット FQDN(F5 XC ロードバランサーのドメイン)TARGET_FQDN=demo.example.com
# オプション: ベースラインテスト用の直接オリジン IP(F5 XC をバイパス)TARGET_ORIGIN_IP=このファイルは、target_fqdn および target_origin_ip 変数から Terraform プロビジョニング中に自動的に書き込まれます。デプロイ後にターゲットを変更するには、VM 上でこのファイルを直接編集してください。
環境変数のオーバーライド
Section titled “環境変数のオーバーライド”config.env 内の任意の変数は、スイートを実行する前にエクスポートすることでオーバーライドできます:
# 単一の実行でターゲット FQDN をオーバーライドするTARGET_FQDN=staging.example.com /opt/traffic-generator/suites/runner.sh web-app-attacks
# export を使ってオーバーライドするexport TARGET_FQDN=staging.example.com/opt/traffic-generator/suites/runner.sh web-app-attacks設定ファイルのパス自体もオーバーライドできます:
CONFIG_FILE=/tmp/my-config.env /opt/traffic-generator/suites/runner.sh web-app-attacksドライランモード
Section titled “ドライランモード”--dry-run フラグは、実行せずに実行されるスクリプトをそれぞれ表示します:
/opt/traffic-generator/suites/runner.sh web-app-attacks --dry-run出力:
=== 01-sqli.sh ===[DRY-RUN] Would execute: /opt/traffic-generator/suites/web-app-attacks/01-sqli.sh demo.example.com=== 02-xss.sh ===[DRY-RUN] Would execute: /opt/traffic-generator/suites/web-app-attacks/02-xss.sh demo.example.com=== 03-command-injection.sh ===[DRY-RUN] Would execute: /opt/traffic-generator/suites/web-app-attacks/03-command-injection.sh demo.example.com=== 04-path-traversal.sh ===[DRY-RUN] Would execute: /opt/traffic-generator/suites/web-app-attacks/04-path-traversal.sh demo.example.com=== 05-nikto-scan.sh ===[DRY-RUN] Would execute: /opt/traffic-generator/suites/web-app-attacks/05-nikto-scan.sh demo.example.com=== 06-nuclei-scan.sh ===[DRY-RUN] Would execute: /opt/traffic-generator/suites/web-app-attacks/06-nuclei-scan.sh demo.example.com=== Suite Complete ===Passed: 0 | Failed: 0 | Skipped: 6Results: /opt/traffic-generator/results/20260425-143000-web-app-attacksドライランを使用して、デプロイ後または新しいターゲットに対してスイートを実行する前にスイート構造を確認してください。
結果ディレクトリ
Section titled “結果ディレクトリ”各スイートの実行により、タイムスタンプ付きの結果ディレクトリが作成されます:
/opt/traffic-generator/results/<YYYYMMDD-HHMMSS>-<suite-name>/構造:
/opt/traffic-generator/results/20260425-143000-web-app-attacks/ meta.json 01-sqli.sh.log 02-xss.sh.log 03-command-injection.sh.log 04-path-traversal.sh.log 05-nikto-scan.sh.log 06-nuclei-scan.sh.log各スクリプトの stdout と stderr は、スクリプトにちなんで名付けられた .log ファイルにキャプチャされます。
meta.json フォーマット
Section titled “meta.json フォーマット”meta.json ファイルはスイート実行のメタデータを記録します:
{ "suite": "web-app-attacks", "target": "demo.example.com", "started": "2026-04-25T14:30:00Z", "completed": "2026-04-25T14:45:23Z", "status": "completed", "passed": 5, "failed": 1, "skipped": 0}| フィールド | 説明 |
|---|---|
suite | スイート名 |
target | 実行に使用されたターゲット FQDN |
started | スイートが開始された UTC タイムスタンプ |
completed | スイートが完了した UTC タイムスタンプ |
status | 実行中は running、完了時は completed |
passed | コード 0 で終了したスクリプトの数 |
failed | ゼロ以外のコードで終了したスクリプトの数 |
skipped | スキップされたスクリプトの数(実行不可またはドライラン) |
個別スクリプトの実行
Section titled “個別スクリプトの実行”各スクリプトはランナーなしでスタンドアロンとして実行できます:
# 単一スクリプトを直接実行する/opt/traffic-generator/suites/web-app-attacks/01-sqli.sh demo.example.com
# 特定の API 攻撃を実行する/opt/traffic-generator/suites/api-attacks/01-vampi-owasp-top10.sh demo.example.comスクリプトは最初の位置引数としてターゲット FQDN を受け取ります。スクリプトは config.env を直接読み込みません — それはランナーのみが行います。スタンドアロンで実行する場合は、FQDN を明示的に渡す必要があります。
すべてのスイートを順番に実行する
Section titled “すべてのスイートを順番に実行する”すべてのスイートを連続して実行するには:
for suite in web-app-attacks api-attacks bot-simulation reconnaissance ssl-scanning javascript-exploits traffic-generation; do echo "=========================================" echo "Starting suite: ${suite}" echo "=========================================" /opt/traffic-generator/suites/runner.sh "$suite" echo ""doneこれにより、すべての F5 XC セキュリティ機能にわたる包括的なトラフィックが生成されます。ターゲットの応答時間によって、完全な実行には 45〜80 分かかることが予想されます。
SSH によるリモート実行
Section titled “SSH によるリモート実行”SSH セッションを維持せずにローカルマシンからスイートを実行します:
TGEN_IP=$(terraform output -raw public_ip)
# 単一スイートを実行するssh azureuser@${TGEN_IP} '/opt/traffic-generator/suites/runner.sh web-app-attacks'
# ターゲットをオーバーライドしてスイートを実行するssh azureuser@${TGEN_IP} 'TARGET_FQDN=staging.example.com /opt/traffic-generator/suites/runner.sh api-attacks'
# バックグラウンドで実行する(切断に対して安全)ssh azureuser@${TGEN_IP} 'nohup /opt/traffic-generator/suites/runner.sh web-app-attacks > /tmp/web-app-attacks.log 2>&1 &'
# 後で結果を確認するssh azureuser@${TGEN_IP} 'ls -la /opt/traffic-generator/results/ | tail -5'ssh azureuser@${TGEN_IP} 'cat /opt/traffic-generator/results/$(ls -t /opt/traffic-generator/results/ | head -1)/meta.json'長時間実行されるスイートの場合、SSH の切断によってプロセスが終了しないように nohup または tmux を使用してください:
ssh azureuser@${TGEN_IP} 'tmux new-session -d -s traffic "/opt/traffic-generator/suites/runner.sh reconnaissance"'
# 後で再接続して進捗を確認するssh -t azureuser@${TGEN_IP} 'tmux attach-session -t traffic'-
設定の読み込み — ランナーは
config.env(またはCONFIG_FILEのオーバーライド)を読み込み、環境内のTARGET_FQDNを確認します。 -
スイートの検証 — 指定されたスイートディレクトリがスイートディレクトリ以下に存在することを確認します。見つからない場合は利用可能なスイートを一覧表示します。
-
結果ディレクトリの作成 —
/opt/traffic-generator/results/<timestamp>-<suite>/を作成し、status: runningで初期meta.jsonを書き込みます。 -
スクリプトの実行 — スイートディレクトリ内の
[0-9]*にマッチするファイルを名前順にソートして反復処理します。実行不可のファイルはスキップします。最初の引数としてTARGET_FQDNを渡します。出力を<script-name>.logにキャプチャします。 -
結果の記録 —
meta.jsonに完了タイムスタンプと合格/不合格/スキップ数を更新します。