CTFdでCTFスコアサーバを作ってみた

学習

CTFdを使ってCTFスコアサーバを作ってみましたので、まとめてみました。
この記事を見てる人には言うまでもないですが、CTFとはCapture The Flagの略で、旗取りゲームと言われる情報セキュリティの競技会です。

環境

・仮想化 : VirtualBox(VMwareWorkstationでもなんでもいいです)
・OS : CentOS 7.8
・Dockerを使用して構築

CentOSのインストール

①CentOSのダウンロード
 最新は8なので、過去のIOSダウンロードサイトからダウンロードします。
 適当なミラーからダウンロードします。約4.5GBあります。  
 http://isoredirect.centos.org/centos/7/isos/x86_64/

②CentOSの起動
 VirtualBoxを起動し、仮想マシン→新規を選択。
 仮想マシンの作成画面で以下を入力。
 名前:任意(CTFdとしています)
 マシンフォルダー:任意(VMイメージの保存先です)
 タイプ:Linux
 バージョン:Red Hat(64-bit)

そのあとの設定は以下にしました。(容量などは用途に合わせて自由に設定してください)
メモリーサイズ:2048MB
ハードディスク:仮想ハードディスクを作成する
ハードディスクのファイルタイプ:VDI(VirtualBox Disk Image)
物理ハードディスクにあるストレージ:可変サイズ(D)
ファイルの場所とサイズ:20.00GB

最後に作成ボタン押下。
仮想マシンができるので右クリックして、起動→通常起動を選択。
起動ハードディスクを選択で、ダウンロードしたisoを選択して起動。

③CentOSのインストール
 CentOSをインストールしていきます。下記記事がすごく丁寧で参考になります。
  ※ソフトウェアの選択は、インフラストラクチャサーバーを選択しています。
   GUI環境が欲しい方は、サーバー(GUI使用)にして下さい。
  ※Virtul BoxのネットワークはNATを選択しています。

Docker、Docker Composeのインストール

※rootを使用しない場合はsudoでコマンド実行してください

①TeraTerm設定
 作業はTeraTermでやった方がやりやすいので、TeraTermのインストールとVirtualBoxの設定をします。(TeraTermのインストールは説明割愛)
 
 VirtualBoxの仮想マシンを右クリックし、設定-ネットワークを選択。
 アダプター1から高度ーポートフォワーディングをクリック。

 SSHのポートを設定
 ホストポート:任意(空いているポート2222とかなんでも)
 ゲストポート:22
 
 これで、tertermからIPアドレス127.0.0.1、ポート2222(上記で設定したポート番号)でSSH接続できるようになります。

②OSの最新化
 下記コマンドを実行して最新化します。

$ yum update
$ yum upgrade

③公式リポジトリのインストール

$ yum install -y yum-utils device-mapper-persistent-data lvm2
$ yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo

④DOCKER CE のインストール

$ yum install -y docker-ce docker-ce-cli containerd.io

⑤Dockerのバージョン確認
 インストールが成功していればバージョンが表示されます。

$ docker –version

⑥Docker Composeのインストール
 1.26.0の部分はバージョンなので変わります。
 https://docs.docker.com/compose/install/のlinuxを参照

$ curl -L “https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose

⑦Docker Composeのバージョン確認
 インストールが成功していればバージョンが表示されます。

$ docker-compose –version

CTFdのデプロイ

①gitのインストール

$ yum install -y git

②CTFdのクローン

$ git clone https://github.com/CTFd/CTFd.git

③SECRET_KEYの設定

$ cd CTFd/
$ python -c “import os; f=open(‘.ctfd_secret_key’, ‘a+’); f.write(os.urandom(64)); f.close()”
$ vi docker-compose.yml
environmentに以下を追加して保存する。
– SECRET_KEY=.ctfd_secret_key

④DOCKERの起動

$ systemctl start docker

⑤コンテナ起動
 数分かかります。「ctfd_1 | Starting CTFd」が出ていればOKです。

$ docker-compose up &

⑥接続確認
 tertermから接続した時と同様、ポートフォワーディングで待ち受けポートである8000を設定します。今回は、ホスト側8000、ゲスト側8000にしてみました。
 これで、http://127.0.0.1:8000でホストマシンのブラウザからつながるようになります。
 問題を登録してみるとこんな感じに表示されます。

CTFを運営するならもっと色々考えないといけませんが、動作確認と勉強のために作ってみました。

コメント

タイトルとURLをコピーしました