CTFdの構築を可能な限り自動化する
CTFdはcloneしてスクリプトを走らせるだけで簡単にサーバーを立てることができますが、そのままだとhttpになってしまいます。
つまり、https化するためには色々手を加えなければなりません。
かつて手動でhttps化する手順をまとめましたが、CTFdがPython3に移行したりして動かなくなってしまいました。
aokakes.hatenablog.com
どうせなので、今回は再び使えるようにしながら可能な限り自動化したいと思います。
CTFサーバー構築手順
AWSでインスタンスを立てる
ここはどうしようもありません。手動です。
スペックは以下の通り。
AMI | Ubuntu Server 18.04 LTS |
---|---|
インスタンスタイプ | t3a.small |
ストレージ | 汎用SSD(gp2) 8GB |
※インスタンスタイプやストレージは状況に応じて変えてください
セキュリティグループ
タイプ | プロトコル | ポート範囲 | ソース |
---|---|---|---|
SSH | TCP | 22 | マイIP ***.***.***.*** |
HTTP | TCP | 80 | カスタム 0.0.0.0/0 |
HTTPS | TCP | 443 | カスタム 0.0.0.0/0 |
CTF用ユーザーの作成
作成したインスタンスにSSHで接続後、CTF用にユーザーを作成します。
$ sudo adduser ctf $ sudo gpasswd -a ctf sudo $ su - ctf $ mkdir /home/ctf/.ssh $ sudo mv /home/ubuntu/.ssh/authorized_keys /home/ctf/.ssh/ $ sudo chown -R ctf:ctf /home/ctf/.ssh
自動化スクリプト実行
aokakes製の自動化スクリプト群をcloneします。
$ git clone https://github.com/fulutori/CTFd_for_AWS.git
そのままだと正しく設定できないのでスクリプトを一部書き換えます。
$ vim CTFd_for_AWS/setup.sh ---------------------------------------------------------------- server_name=[自分のドメインに書き換える] email=[自分のメールアドレスに書き換える]
スクリプトを実行。
$ bash CTFd_for_AWS/setup.sh
正しく設定出来れば十数分ほどで完了し、そのまま設定したドメインにアクセスするとhttpsでCTFdのセットアップ画面が表示されます。
再起動に備えた準備
起動時にCTFdを実行するようにctfユーザーで以下のように設定します。
$ crontab -e ---------------------------------------------------------------- @reboot /bin/bash /home/ctf/CTFd_for_AWS/start.sh
起動時にnginxでのドメイン設定を書き換えるようにrootユーザーで以下のように設定します。
$ crontab -e ---------------------------------------------------------------- @reboot /bin/bash /home/ctf/CTFd_for_AWS/prepare.sh
再起動時はインスタンスのIPアドレスは変わりませんが、一度停止させてから起動させるとIPアドレスが変わります。
その度にRoute53でAレコードに設定したIPアドレスも書き換える必要がありますのでご注意ください。
※ElasticIPなどでIPアドレスを固定してしまえば必要ありません