クラウド上にCTFdの構築手順(さくらインターネット)

※本サイトはアフィリエイト広告を利用しています。
広告

本記事の概要

今回はクラウド(さくらインターネット)上にCTF(Capture The Flag)環境を構築する手順を記載します。
以下の流れで作業しますので、各項目の手順を順番に記載しています。
  (1) さくらインターネットのアカウント作成
  (2) CTFdサーバを構築するためのOS(Ubuntu 20.04)導入
  (3) CTFdサーバのソフトウェアの構築及び設定
  (4) ファイアウォールの設定
  (5) CTFdサーバのセットアップ

※本記事の作成日(2021年12月2日)時点での動作確認をしていますが、Webページなどが更新されている可能性があります。適宜読み替えてください。

CTFおよびCTFdとは

CTFとは、Capture The Flagの略で旗取りゲームです。
CTFにはいくつかの競技形式がありますが、Jeopardy形式が開催される頻度が多いです
Jeopardy形式は、様々なITスキルを用いて隠された旗(フラグ:文字列)を見つけて、送信したら得点を獲得でき、その得点を競う競技です。

CTFdとは、CTFのJeopardy形式の競技環境を構築するためのリポジトリです
CTFd上に出題する問題を登録したり、各チーム/ユーザのアカウントを管理したり、各チームの回答状況を確認することができます。

さくらインターネットとは

さくらインターネットとは、日本国内で自社運営データセンターを用いて、レンタルサーバや専用サーバなどの提供している会社です。
管理画面の2段階認証やファイアウォールの設定などセキュリティ機能が提供されており、比較的安価でサーバを利用できます。

ご参考までに、ブログ作成時点(2021年12月2日)のさくらインターネットのVPS(Linux)の利用料金は以下の通りです。メモリが2GB、仮想CPUが3Core、ストレージ100GBで各リージョンごとの費用(月額支払い又は年額支払い)を記載します。

リージョン月額支払いの場合の料金年額支払いの場合の料金
石狩1,738円19,118円
大阪1,848円20,328円
東京1,958円21,538円

さくらインターネットのアカウント作成

さくらインターネットのVPS(仮想専用サーバー)環境を構築するためにアカウントを作成します。

(1) ブラウザを起動して、「さくらのインターネットのサイト」にアクセスします。その後、「お申込み」をクリックします。
さくらインターネット上にzabbixサーバ構築(1)

(2) サーバを構築するゾーンを選択します。今回は「大阪第3」を選択します。
さくらインターネット上にzabbixサーバ構築(2)

(3) プランを選択します。支払いを「月額」するか「年額」にするか選択します。
  また、今回のプランは「メモリ:2G、CPUのコア数:3CPU」を選択します。
さくらインターネット上にzabbixサーバ構築(3)

(4) ストレージの容量(100GBまたは200GB)を選択して、購入台数を1台を選択します。その後、「次へ」をクリックします。
さくらインターネット上にzabbixサーバ構築(4)

(5) 認証画面が表示されるため、「新規会員登録」をクリックします。
さくらインターネット上にzabbixサーバ構築(5)

(6) ワンタイムパスワードを送るメールアドレスを入力して、個人情報の取り扱いに同意するにチェックを付けます。その後、「会員登録のご案内メールを送信」をクリックします。
さくらインターネット上にzabbixサーバ構築(6)

(7) 設定したメールアドレス宛に、以下のメールが送信されます。認証コードの番号が記載されていることを確認します。
さくらインターネット上にzabbixサーバ構築(7)

(8) メールに送られた認証コードを入力して、「次へ」をクリックします。
さくらインターネット上にzabbixサーバ構築(8)

(9) 会員登録情報として、氏名、生年月日、パスワードなどを設定します。その後、「確認画面へ進む」をクリックします。
さくらインターネット上にzabbixサーバ構築(9)
さくらインターネット上にzabbixサーバ構築(10)

さくらインターネット上にzabbixサーバ構築(11)

(10) 設定した会員情報が間違っていないことを確認して、「会員登録する」をクリックします。
さくらインターネット上にzabbixサーバ構築(12)
さくらインターネット上にzabbixサーバ構築(13)

(11) 電話認証の画面が表示されるため、認証コードを送る電話番号を入力して、「SMSで認証コードを受け取る」をクリックします。
さくらインターネット上にzabbixサーバ構築(14)

(12) 設定した電話番号のショートメールに送られた「認証コード」を入力して、「認証」をクリックします。
さくらインターネット上にzabbixサーバ構築(15)

(13) 「VPSお申込みページへ進む」をクリックします。
さくらインターネット上にzabbixサーバ構築(16)

CTFdサーバを構築するためのOS(Ubuntu 20.04)導入

さくらインターネットのクラウド上にOS(Ubuntu 20.04)を導入する手順を記載します。
「クレジットカード」で料金を支払うことを想定して手順を作成していますが、「銀行振込」や「請求書払い」にすることもてきますので、適宜読みかえてください。

(1) サーバの設定画面が表示されます。サーバー名とサーバー説明は必要に応じて入力します。
さくらインターネット上にCTFd構築(4)

(2) 以下のインストールするOSの設定をします。
    ・インストールするOS : Ubuntu
    ・OSバージョン : 20.04 amd64(64bit)
    ・管理ユーザーのパスワード : [任意のパスワード]
さくらインターネット上にCTFd構築(5)

(3) 以下の内容を設定して、「次へ」をクリックします。
    ・スタートアップスクリプト : 利用しない
    ・サーバーへSSHキー登録 : 登録しない
さくらインターネット上にCTFd構築(6)

(4) 支払いパターンを「月払い」又は「年額一括払い」にするか選択します。今回は「月額払い」を選択します。
さくらインターネット上にzabbixサーバ構築(20)

(5) 支払い方法を選択します。今回は例としてクレジットカードで支払う場合を想定して、「クレジットカード」にチェックを付けて、「カードを追加」をクリックします。
さくらインターネット上にzabbixサーバ構築(21)

(6) クレジットカード情報を入力して、「次へ」をクリックします。
さくらインターネット上にzabbixサーバ構築(22)

(7) 入力したクレジットカード情報が表示されていることを確認して、「カードを登録」をクリックします。
さくらインターネット上にzabbixサーバ構築(23)

さくらインターネット上にzabbixサーバ構築(24)

(8) 「クレジットカード情報の登録が完了しました」というメッセージが表示されていることを確認します。
さくらインターネット上にzabbixサーバ構築(25)

(9) 「カード再読込」をクリックして、登録したカード情報が表示されることを確認します。
さくらインターネット上にzabbixサーバ構築(26)

(10) 2週間無料のお試しを利用するか選択して、個人情報の取扱いに「同意する」にチェックを付ける。その後、「お支払い」をクリックします。
さくらインターネット上にCTFd構築(7)

(11) しばらく待って、「サーバー一覧へ」をクリックします。
さくらインターネット上にCTFd構築(8)

(12) 作成したサーバの横にあるチェックボックスにチェックを付けて、「起動する」をクリックします。
さくらインターネット上にCTFd構築(9)

(13) ポップアップが表示されるため、「実行」をクリックします。
さくらインターネット上にCTFd構築(10)

(14) 状態が「稼働中」という表記になっていることを確認します。
さくらインターネット上にCTFd構築(11)

CTFdサーバのソフトウェアの構築及び設定

CTFdサーバを構築するための手順を記載します。
本手順は「https://github.com/CTFd/CTFd/wiki」を参考にして、作成しています。
また、事前に作業PCにTera Termをインストールしていることを想定していますので、インストール方法が分からない場合は「ターミナルソフトのTera Term (テラターム)インストール」をご確認ください。

(1) Tera Termを起動して、以下の内容を設定して「OK」をクリックします。
    ・ホスト : [サーバのIPアドレス]
    ・サービス : SSH
    ・TCPポート : 22

(2) ユーザー名とパスワードを入力して、「OK」をクリックします。
さくらインターネット上にCTFd構築(13)

(3) ログインが成功すると、以下のような画面が表示されます。

$ sudo -s
  ⇒パスワードを入力


(4) 以下のコマンドを実行して、パッケージを更新します。

# apt -y update
# apt -y upgrade


(5) 以下のコマンドを実行して、Gitコマンドのインストール及びCTFdのリポジトリをコピーします。

# apt install -y git
# git clone https://github.com/CTFd/CTFd


(6) 以下のコマンドを実行して、CTFdを使えるように準備します。

# cd CTFd/
# apt install python3-pip
# ./prepare.sh


(7) 以下のコマンドを実行して、CTFdを起動します。

# docker-compose up


ファイアウォールの設定

ファイアウォールの設定を変更して、CTFdサーバを動作させるために必要な通信を許可する手順を記載します。
今回は以下の通信ポートを許可する手順を記載しますが、必要に応じて送信元IPアドレスを制限したり、追加で許可する通信ポートを設定してください。
  ・許可ルール1 : any —–(80/tcpと443/tcp)—-> CTFdサーバ
  ・許可ルール2 : any —–(8000/tcp)—-> CTFdサーバ

(1) CTFdサーバ用に作成したサーバを選択します。
さくらインターネット上にCTFd構築(14)

(2) 「グローバルネットワーク」タブをクリックします。
さくらインターネット上にCTFd構築(15)

(3) 下部にある「パケットフィルターを設定」をクリックします。
さくらインターネット上にCTFd構築(16)

(4) 「接続可能ポートを追加」をクリックします。
さくらインターネット上にCTFd構築(17)

(5) 「Web」を選択して、「追加」をクリックします。
さくらインターネット上にCTFd構築(18)


(6) 設定した許可ルールが表示されていることを確認します。その後、「接続可能ポートを追加」をクリックします。
さくらインターネット上にCTFd構築(19)

(7) 以下の内容を設定して、「追加」をクリックします。
    ・接続可能ポートを追加 : カスタム
    ・プロトコル : TCP
    ・ポート番号 : 8000
    ・許可する送信元IPアドレス : 全て許可
さくらインターネット上にCTFd構築(20)

(8) 設定した許可ルールが表示されていることを確認します。その後、「設定」をクリックします。
さくらインターネット上にCTFd構築(21)

CTFdサーバのセットアップ

CTFdをセットアップする手順を記載します。

(1) ブラウザを起動して、「http://[CTFdサーバのIPアドレス]:8000/」にアクセスします。
CTFdサーバのセットアップ(1)

(2) 任意の「Event Name」と「Event Description」を設定して、「Next」をクリックします。
CTFdサーバのセットアップ(2)

(3) 「Team Mode」にチェックを付けて、「Next」をクリックします。
CTFdサーバのセットアップ(3)

(4) 以下の内容を設定して、「Next」をクリックします。

設定項目設定値
Admin Username管理者のユーザ名。
任意の名前を設定します。
Admin Email管理者のメールアドレス。
任意のメールアドレスを設定します。
Admin Password管理者のパスワード。
任意のパスワードを設定します。
Subscribe email address to
the CTF-d LLC Newsletter for
news and updates
ニュースレターをメールに通知するかどうか。

CTFdサーバのセットアップ(4)

(5) 「Style」は何も変更しないで「Next」をクリックします。
CTFdサーバのセットアップ(5)
CTFdサーバのセットアップ(6)

(6) 「Date & Time」は何も変更しないで「Next」をクリックします。
CTFdサーバのセットアップ(7)


(7) 「Finish」をクリックします。
CTFdサーバのセットアップ(8)

(8) 以下の管理画面が表示されたことを確認します。
CTFdサーバのセットアップ(9)