2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

セキュリティトレーニング「ZANSIN」サーバの構築

Last updated at Posted at 2024-11-21

ZANSINとは

ZANSINとは、実際のサイバー攻撃を想定したインシデント・レスポンスを体験するためのトレーニングツールとして公開されたツールです。

ZANSINはコントロールサーバとトレーニングサーバの2台のサーバから構成されます。

00.png

  • コントロールサーバ
    攻撃の実施やクローリング、スコアの算出といった訓練の制御を行う。

  • トレーニングサーバ
    訓練を受ける側が操作して防御を実践する訓練用マシン。

構築

ZANSINサーバはUbuntu Serverで構築します。
Ubuntu Serverは20.04以上が必要とされており、22.04まではインストールが正常な確認されています。
それ以降ではインストール時にエラーが出ることもあるようです。
可能であれば20.04~22.04で構築しましょう。

また、繰り返しトレーニングを可能にするため、仮想環境で構築することがお勧めです。

Ubuntuのインストール

まずはUbuntuのインストールを行います。
インストールする際に必要となる条件は以下のとおり。

  • コントロールサーバとトレーニングサーバが互いに通信できること
  • 2台ともインターネットにアクセス可能であること
  • 2台ともsudo可能な”zansin”ユーザが作成されていること
  • zansinユーザのパスワードは2台で共通であること
  • 2台ともパスワード認証可能なSSHサーバが導入されていること

1つ目と2つ目の要件を満たすネットワーク環境を整備します。
コントロールサーバとトレーニングサーバで通信できるように環境を構築しますが、
このネットワーク環境からインターネットに出られる場合はこのネットワークのみで大丈夫です。
インターネット接続ネットワークを別にしたい場合は、これとは別のネットワーク環境を構築します。

ネットワーク環境の準備ができたら早速Ubuntuのインストールを行います。


インストールでの選択は基本的にデフォルトで大丈夫ですが以下のprofile setupでは要件にあった情報を入力します。

1.png

【コントロールサーバ】
Your name:zansin
Your Server Name:ControlServer
Pick a username:zansin
Choose a password:(任意の文字列)

【トレーニングサーバ】
Your name:zansin
Your Server Name:TrainingServer
Pick a username:zansin
Choose a password:(任意の文字列)

コントロールサーバとトレーニングサーバで作成するユーザ:zansinのパスワードは同じパスワードを登録する。

以下のSSH Setupの画面ではInstall OpenSSH Serverにチェックを入れる。

2.png

以降画面に従ってUbuntu Serverをインストールします。

ZANSINサーバのネットワーク設定

ZANSINコントロールサーバと、トレーニングサーバはネットワークで相互に通信できることが要件としてあがっています。
なので、筆者の環境としては以下のような構成としています。

コントロールサーバ トレーニングサーバ
IPアドレス 10.10.1.102 10.10.1.103

必用に応じてUbuntsのネットワーク設定を変更します。

ZANSINのセットアップ

ZANSINのセットアップはコントロールサーバ側で、GitHubからセットアップ用スクリプトをダウンロードしてきて実行します。

# セットアップスクリプトのダウンロード

~$wget https://raw.githubusercontent.com/ZANSIN-sec/ZANSIN/main/zansin.sh

3.png

ダウンローが完了したら実行します。

# パーミッション変更して実行
~$chmod +x zansin.sh
~$./zansin.sh

4.png

スクリプトを実行するとインストールが始まります。

5.png
インストールに必要な情報として以下を入力するよう求められます。

  • コントロールサーバとなるマシンのIPアドレス
  • トレーニングサーバとなるマシンのIPアドレス
  • 共通のユーザ:zansinのパスワード(インストール時に設定したパスワード)

後は自動でコントロールサーバとトレーニングサーバの構築が行われます。
完了したらトレーニングサーバで”mini QUEST”が動いているか、ブラウザで確認します。


ブラウザからトレーニングサーバのアドレスを開くと以下の画面になります。
6.png

”Create Account”で任意のユーザを作成した後、そのユーザでログインすると”mini Quest”を開くことができます。
7.png

これで、zansinでトレーニングする準備ができました。

実際に以下コマンドでトレーニングを開始できます。
(test01ユーザによるトレーニング開始)

# 通常モードでトレーニング開始
~$ source red-controller/red_controller_venv/bin/activate
~$ cd red-controller/
~$ python3 red_controller.py -n test01 -t 10.10.1.103 -c 10.10.1.102 -a 1

コマンド実行後、少しするとコントロールサーバから攻撃が始まります。
時間は4時間がリミットとなります。

システムを以下の行為から守ってください。

  • サイバー攻撃
  • チート行為

これらの被害をどれだけ少なく抑えるかで得点が変化します。

トレーニングマシンにユーザ:vender、パスワード:Passw0d!23でログインし、防御していきましょう。
アカウント:zansinではないでの注意してください。

トレーニング終了時に自身のスコアが表示されます。

+----------------------------------+----------------------------------+
| Technical Point (Max 100 point)  | Operation Ratio (Max 100 %)      |
|----------------------------------+----------------------------------+
| Your Score : 70 point            | Your Operation Ratio : 60 %      |
+----------------------------------+----------------------------------+

ZANSIN環境

サーバの環境は以下のとおりとなっています。
さまざまな API がDocker を使用してLinuxサーバー内に実装されています。

IMG_0442.png

Game API

ゲームに実装されている API は次のとおりです。

  • User Registration API
  • Login API
  • Withdrawal API
  • Player Data API
  • Upload an Image API
  • Battle Course List API
  • Determination of the Battle Course API
  • Battle API
  • Stamina Recovery API
  • Gatcha API
  • In-game purshase API
  • Ranking API

ブラウザゲーム - "MINI QUEST"

オンラインゲーム(MINI QUEST)にアクセスする場合は、HTTP (ポート 80/tcp) を使用してゲームサーバーのIPアドレス(トレーニングサーバのIP)にアクセスします。

http://{IP ADDRESS}

6.png

Admin Panel

ゲームサーバーの管理者として、以下URLでプレイヤーを管理することができます。

http://{IP ADDR}/user_list/

不正行為を行っているプレイヤーがいた場合は、「BAN!!」ボタンを使用することで、そのプレイヤーを排除することができます。

IMG_0445.png

ユーザーランキング

このページでは、各プレーヤーランキングを確認できます。
このページは公開されているため、誰でもアクセスできます。

http://{IP ADDRESS}/ranking/

IMG_0446.png

MINI QUEST Serverについて

  • ZANSINトレーニングサーバの認証情報

    アカウント名 Password 補足
    vendor Passw0rd!23 このアカウントを利用してください。’sudo'の利用も可能です。
    mario Passw0rd!23
    link Passw0rd!23
    sonic Passw0rd!23
  • サービス

    Service Note
    SSH アカウント: vendor パスワード:Passw0rd!23
    MySQL アカウント: root  パスワード password
    HTTP MINI QUEST: http://{IP ADDRESS}
    管理者ページ: http://{IP ADDRESS}/user_liset/
    ユーザーランキング: http://{IP ADDRESS}/ranking/
    phpMyAdmin: http://{IP ADDRESS}:5555
  • Game API

    • 以下フォルダに各APIが保存されています。
      • /home/vendor/game-api
    • ゲームAPIのコンテナーをアップ/ダウンしたい場合は、以下を参照にしてください。
      • containers開始
        • docker-compose up -d
      • containers停止
        • docker-composer down

トレーニングにおける禁止行為

  • アクセス制御
    • 送信元IPアドレスに基づいて ZANSINコントロールサーバーからの接続をブロックしないでください。
      • 正当なユーザーの接続と攻撃の接続はどちらも、ZANSINコントロールサーバーのIPアドレスから発信されます。これをブロックすると、ZANSINクロールモジュールとスコアリングモジュールがアクセスできなくなり、スコア評価ができなくなります。
      • 同様に、ZANSINクロール モジュールとZANSINスコアリングモジュールの両方からの通信をブロックしないように注意してください。ブロックすると、評価が正常に行えない可能性があります。
  • API
    • APIの応答はJSONの構造を維持しています。
      • API応答の値を変更または削除することはできますが、キーの変更は行わないでください。キーの変更を行うと、ZANSINクロールモジュールが応答を取得できなくなってしまいます。
2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?