站点图标 glzjin

CTFd-Whale 推荐部署实践

CTFd-Whale 是本人开发的一个 CTFd 插件, 具有如下优点:

为了便于各位安装 CTFd-Whale,部署自己的动态靶机靶场,特作此文阐述几种模式下由一台新机器到靶机能打开为止的全过程。

一、单机 Direct 模式(Frp 转发在一个机器上,只需要一台机器,靶机通过端口号访问,无需配置域名解析)

1、在机器上安装好 Docker 和 Docker-Compose,并且启用 Docker Swarm。

Docker Swarm 参考:https://www.jianshu.com/p/77c4c62d9afe

注意需要用以下命令来标记节点:

docker node ls #检查节点 ID
docker node update --label-add name=linux-1 <节点 ID>

参考链接:

2、在机器上下载代码。

git clone -b single https://github.com/glzjin/CTFd.git

3、进入目录,编辑 frp 两端配置文件,使 token 随机,再使用 docker-compose 启动相关组件。

cd CTFd
vi frp/frps.ini # token 一定要随机
vi frp/frpc.ini # token 一定要随机
git submodule update --init
docker-compose up -d

4、启动完毕,打开 http://ip:8000 安装 CTFd。

5、进入系统后台设置,打开插件设置页面,按照如下指导进行设置。点击可看大图。

Frp Config Template,记得修改 token:

[common]
token = randomme
server_addr = 172.1.0.1
server_port = 6490
pool_count = 200
tls_enable = true

admin_addr = 172.1.0.3
admin_port = 7400

其他内容无特殊情况无需修改。

6、添加一个题目,进行测试。点击可看大图。

7、点击 Preview,可以尝试启动靶机。

8、测试成功,配置完成。

二、单机 Direct + Http 模式(Frp 转发在一个机器上,只需要一台机器,靶机通过端口号或者域名访问,需要配置域名解析)

0、准备一个域名,设置如下解析。

1、在机器上安装好 Docker 和 Docker-Compose,并且启用 Docker Swarm。

Docker Swarm 参考:https://www.jianshu.com/p/77c4c62d9afe

注意需要用以下命令来标记节点:

docker node ls #检查节点 ID
docker node update --label-add name=linux-1 <节点 ID>

参考链接:

2、在机器上下载代码。

git clone -b single-http https://github.com/glzjin/CTFd.git

3、进入目录,编辑 frp 两端配置文件,使 token 随机,使用 docker-compose 启动相关组件。

cd CTFd
vi frp/frps.ini # token 一定要随机
vi frp/frpc.ini # token 一定要随机
git submodule update --init
docker-compose up -d

4、启动完毕,打开 http://ip:8000 安装 CTFd。

5、进入系统后台设置,打开插件设置页面,按照如下指导进行设置。点击可看大图。

Frp Config Template,记得修改 token:

[common]
token = randomme
server_addr = 172.1.0.1
server_port = 6490
pool_count = 200
tls_enable = true

admin_addr = 172.1.0.3
admin_port = 7400

其他内容无特殊情况无需修改。

6、添加一个题目,进行测试。点击可看大图。


7、点击 Preview,可以尝试启动靶机。

8、测试成功,配置完成。

附:如想让 CTFd 也走 80 端口可在 frpc 配置里加一个配置节,也就是 frp/frpc.ini 和 上面的 Frp Config Template 里。

[ctfd]
type = http
local_ip = 172.1.0.2
local_port = 8000
use_encryption = true
use_compression = true
custom_domains = domain.for.your.ctfd.com

三、跨机 Direct 模式(Frp 转发在两个机器上,Frpc 和 CTFd 在一起–下面用机器 A 表示,Frps 单独放一个机器–下面用机器 B 表示,靶机通过端口号访问,无需配置域名解析)

1、在机器上安装好 Docker 和 Docker-Compose,并且启用 Docker Swarm。

Docker Swarm 参考:https://www.jianshu.com/p/77c4c62d9afe

注意需要用以下命令来标记节点:

docker node ls #检查节点 ID
docker node update --label-add name=linux-1 <节点 ID>

参考链接:

2、在机器B上下载代码,编辑 frps 配置文件,随机化 token,并使用 docker-compose 启动相关组件。

git clone https://github.com/glzjin/Frp-Docker-For-CTFd-Whale.git
cd Frp-Docker-For-CTFd-Whale
vi frp/frps.ini
docker-compose up -d

3、在机器A上下载代码。

git clone -b double https://github.com/glzjin/CTFd.git

4、进入目录,编辑 frp 两端配置文件,使 token 随机,并且设置 server_addr 为 机器 B 的 IP,使用 docker-compose 启动相关组件。

cd CTFd
vi frp/frpc.ini # token 一定要随机,并且设置 server_addr 为 机器 B 的 IP
git submodule update --init
docker-compose up -d

5、启动完毕,打开 http://ip:8000 安装 CTFd。

6、进入系统后台设置,打开插件设置页面,按照如下指导进行设置。点击可看大图。

Frp Config Template,记得修改 ip 和 token:

[common]
token = randomme
server_addr = remote_ip
server_port = 6490
pool_count = 200
tls_enable = true

admin_addr = 172.1.0.3
admin_port = 7400

其他内容无特殊情况无需修改。

7、添加一个题目,进行测试。点击可看大图。

8、点击 Preview,可以尝试启动靶机。

9、测试成功,配置完成。

四、跨机 Direct + Http 模式(Frp 转发在两个机器上,Frpc 和 CTFd 在一起–下面用机器 A 表示,Frps 单独放一个机器–下面用机器 B 表示,靶机通过端口号或者域名访问,需要配置域名解析)

0、准备一个域名,设置如下解析。

1、在机器上安装好 Docker 和 Docker-Compose,并且启用 Docker Swarm。

Docker Swarm 参考:https://www.jianshu.com/p/77c4c62d9afe

注意需要用以下命令来标记节点:

docker node ls #检查节点 ID
docker node update --label-add name=linux-1 <节点 ID>

参考链接:

2、在机器B上下载代码,编辑 frps 配置文件,随机化 token,并使用 docker-compose 启动相关组件。

git clone -b double-http https://github.com/glzjin/Frp-Docker-For-CTFd-Whale.git
cd Frp-Docker-For-CTFd-Whale
vi frp/frps.ini # token 一定要随机
docker-compose up -d

3、在机器A上下载代码。

git clone -b double https://github.com/glzjin/CTFd.git

4、进入目录,编辑 frp 两端配置文件,使 token 随机,并且设置 server_addr 为 机器 B 的 IP,使用 docker-compose 启动相关组件。

cd CTFd
vi frp/frpc.ini # token 一定要随机,并且设置 server_addr 为 机器 B 的 IP
git submodule update --init
docker-compose up -d

5、启动完毕,打开 http://ip:8000 安装 CTFd。

6、进入系统后台设置,打开插件设置页面,按照如下指导进行设置。点击可看大图。

Frp Config Template,记得修改 token:

[common]
token = randomme
server_addr = remote_ip
server_port = 6490
pool_count = 200
tls_enable = true

admin_addr = 172.1.0.3
admin_port = 7400

其他内容无特殊情况无需修改。

7、添加一个题目,进行测试。点击可看大图。

8、点击 Preview,可以尝试启动靶机。

9、测试成功,配置完成。

附:如想让 CTFd 也走 80 端口可在 frpc 配置里加一个配置节,也就是 frp/frpc.ini 和 上面的 Frp Config Template 里。

[ctfd]
type = http
local_ip = 172.1.0.2
local_port = 8000
use_encryption = true
use_compression = true
custom_domains = domain.for.your.ctfd.com
退出移动版