セキュリティ演習環境構築ツール
開発駆動コース 仲⼭ゼミ 寺嶋友哉

Motivation

セキュリティ演習の構築・運⽤をシンプルに!

Background

セキュリティ演習環境構築の課題

セキュリティ演習環境とは？
演習環境

複雑で考えることが多い脆弱なプログラムを安全に動かせる

柔軟にネットワークを構成できる

演習管理者

安全に接続できる専⾨家(詳しい⼈)がいないと気軽かつ安全に演習ができない!

参加者

KAKOI

Concept

System

演習環境構築の複雑さと考えることを減らして簡単に!

演習環境

Local

構成のテンプレート化・⾃動⽣成②①

構築時の⼿順

1.
2.
3.
4.

UP

Public Cloud

Features

環境の再現性

安全性

DOWN├── finaldemo-key.tf├── finaldemo.kakoi.terassyi.net.tf├── image_builder-finaldemo-target.tf├── image_builder-finaldemo-web.tf├── image_builder-finaldemo-worker.tf├── image_builder_role.tf├── provider.tf├── s3.tf├── kakoi-finaldemo-target-0.tf├── kakoi-finaldemo-web-0.tf├── kakoi-finaldemo-worker-0.tf├── kakoi-vpn.tf├── subnet-private1.tf├── subnet-private2.tf├── subnet-public.tf├── terraform.tfstate├── terraform.tfstate.backup└── vpc-finaldemo.tf

サーバー鍵サーバー定義配置サブネット・ビルドスクリプト・サイズ・数- name: ”example-web"subnet: "public"
image:
custom: true
scripts:- ”example-web.sh"

隔離環境をVPC+VPNに限定
設計における考慮事項を削減
VPNに必要な設定を⾃動化することで負担削減

VMビルドファイル- name: ”example-worker"
subnet: "private1"
image:
custom: true
scripts:- ”example-worker.sh"- name: ”example-target"
subnet: "private2"
image:
custom: true
scripts:- ”example-target.sh"

演習環境

演習⽤サーバー構築の⾃動化

サブネット定義

鍵の⾃動⽣成VMイメージビルドの⾃動化

アドレス・VPNサーバー

PublicKAKOIを使⽤すると必要だったファイルが⼀つにまとまる

演習企画者

example.yml

Private2

Private1
演習ネットワーク定義
network:
name: ”example"
range: "10.10.0.0/16"

証明書

images├── finaldemo-target│ ├── buildspec.yml│ └── image_builder.json├── finaldemo-web│ ├── buildspec.yml│ └── image_builder.json└── finaldemo-worker├── buildspec.yml└── image_builder.json

演習参加者

Infrastructure as Codekeys├── finaldemo-key.pem└── finaldemo-key.pubpki├── ca.finaldemo.kakoi.terassyi.net.crt├── ca.finaldemo.kakoi.terassyi.net.key├── client.finaldemo.kakoi.terassyi.net.crt├── client.finaldemo.kakoi.terassyi.net.key├── server.finaldemo.kakoi.terassyi.net.crt└── server.finaldemo.kakoi.terassyi.net.key

④
VPN接続

③
VPN設定

定義ファイルを⽤意
ツールを実⾏
⽣成されたVPNファイルを配布演習スタート!

デモで使⽤した環境の場合

tfファイル

KAKOI

演習環境定義記述
演習企画者

設計の考慮事項

設計不備
⼤変さ

設計・安全性の確保・管理・コスト etc..

外部ネットワーク

演習環境を管理できる(監視・更新)

演習⽤VPN定義

演習VPN定義

UseSetup

Public Cloud と Infrastructure as Codeを⽤いて…
• 演習環境をテンプレート化• 設定ファイルの⾃動⽣成• 構築の⾃動化• 記述量の削減

2. AWS Credentialファイル作成

ユーザーが考慮すべき事項を削減し構築における複雑さを解消，設計不備の危険性を削減!!

演習環境の表現⼒とのバランスを保ちつつ環境構築をシンプルにすることができた

Command

1. ビルド(Required Go >= 1.13)$ git clone https://github.com/terassyi/kakoi$ cd kakoi$ sudo ./setup.sh

参加者

KAKOIが実現したこと

VPN接続時の使⽤可能アドレス
VPNにしようする証明書ドメイン
配置するサブネット
演習サーバー定義
配置するサブネット
サーバーサイズ台数
ビルド(2パターン指定可能)
イメージのパススクリプトのパス

VPN接続

vpn_gateway:
range: "10.10.40.0/22"
domain: ”example.kakoi.terassyi.net"
associated_subnet: "public"

演習ネットワーク定義
サブネットワークを⾃由に定義可能- name: "public"
range: "10.10.10.0/24"
private: true
vpn_gateway_associated: true
routes:- from: "0.0.0.0/0"
to: "10.10.10.0/24"- name: "private1"
range: "10.10.20.0/24"
private: true
routes:- from: "10.10.10.0/24"
to: "10.10.20.0/24"- name: "private2"
range: "10.10.30.0/24"
private: true
routes:- from: "10.10.20.0/24"
to: "10.10.30.0/24"

Procedure

Init: VMビルド$ kakoi init -p example.yml

Create: 演習インフラ作成$ kakoi create -p example.yml

Destroy: 演習インフラ破壊$ kakoi destroy -p .kakoi

1.
2.
3.
4.
5.

演習環境の定義記述をyamlで記述
Initコマンドで使⽤するイメージをビルド
Createコマンドで演習環境を構築⽣成されるVPN接続ファイルを配布して演習開始
終了したらDestroyコマンドで環境を破壊

演習に使⽤する脆弱性の管理機能
バージョン指定でのソフトウェアインストール機能

使⽤できるプラットフォームの追加

Future Work演習環境管理・検証機能サポート

演習環境へのssh機能
構築時の環境検証機能

シナリオ作成⽀援機能サポート

他のクラウドへの対応

演習環境構築・運⽤の複雑さを解消しより気軽かつ安全に演習を実施することができるように開発を継続

2021/2/21

Icon: https://www.flaticon.com/, https://aws.amazon.com/jp/architecture/icons/

1

https://github.com/terassyi/kakoi