CTFd最新动态靶场环境部署笔记2021.08.01更新
前言
目前CTFd平台的搭建教程网上有很多,但也有部分写的水,不够详细,跟着那些教程部署完多多少少还是会出现不少问题,从而导致部署失败,既浪费了时间精力不说还多多少少影响了学习的进度,有这个功夫在这多折腾平台,还不如多做两道PWN题目呢~
由于学校社团内部学习交流的需要,本人在经过两天的折腾学习后,结合各位前辈所写的的教程,终于成功搭建了最新的版本的CTFd,同时使用CTFd-Whale支持动态靶场环境。
本教程基于 Debian 10 Docker Docker Compose部署(CentOS 系统也可以参考,安装完Docker的步骤都是一样的),采用最新的CTFd v3.3.1安装,文章最后更新日期为 2021.08.04
如遇到网络环境不佳,导致下载安装速度过慢,请尝试换源、科学上网(自行搜索,禁止在评论区讨论)等。
博主 @Vicosna 已经对CTFd v3.3.1官方源码进行了更换国内镜像源、添加CTFd-Whale子模块、配置frp网络、设置静态文件CDN加速等工作,可前往使用作者修改的版本进行安装部署。请前往获取:https://github.com/vicosna/CTFd.git
注意:本文已开启版权信息复制,复制相关代码,请在文本编辑器里手动删除,谢谢配合!
环境配置
系统换源
由于本人的环境为Debian10,故只针对此系统进行换源。
阿里源
直接编辑 /etc/apt/sources.list
文件(需要使用 root 权限)。
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb http://mirrors.aliyun.com/debian/ buster main contrib non-free
deb http://mirrors.aliyun.com/debian/ buster-updates main contrib non-free
deb http://mirrors.aliyun.com/debian/ buster-proposed-updates main non-free contrib
deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib
# deb-src http://mirrors.aliyun.com/debian/ buster-updates main contrib non-free
# deb-src http://mirrors.aliyun.com/debian/ buster main contrib non-free
# deb-src http://mirrors.aliyun.com/debian/ buster-proposed-updates main contrib non-free
# deb-src http://mirrors.aliyun.com/debian/ buster-backports main contrib non-free
deb http://mirrors.aliyun.com/debian-security/ buster/updates main non-free contrib
# deb-src http://mirrors.aliyun.com/debian-security/ buster/updates main non-free contrib
更改完 sources.list
文件后请运行 sudo apt-get update
更新索引以生效。
中科大源
一般情况下,将 /etc/apt/sources.list
文件中 Debian 默认的源地址 http://deb.debian.org/
替换为 http://mirrors.ustc.edu.cn
即可;对于Debian Security 源,将默认的源地址 http://security.debian.org/debian-security/
替换为 http://mirrors.ustc.edu.cn/debian-security/
即可。
可以使用如下命令:
sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's|security.debian.org/debian-security|mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list
当然也可以直接编辑 /etc/apt/sources.list
文件(需要使用 root 权限)。
以下是 Debian Stable (当前 Stable 为 Debian 10,代号为 Buster)参考配置内容:
deb http://mirrors.ustc.edu.cn/debian stable main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian stable main contrib non-free
deb http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian stable-updates main contrib non-free
# deb http://mirrors.ustc.edu.cn/debian stable-proposed-updates main contrib non-free
# deb-src http://mirrors.ustc.edu.cn/debian stable-proposed-updates main contrib non-free
deb http://mirrors.ustc.edu.cn/debian-security/ stable/updates main non-free contrib
# deb-src http://mirrors.ustc.edu.cn/debian-security/ stable/updates main non-free contrib
更改完 sources.list
文件后请运行 sudo apt-get update
更新索引以生效。
清华源
直接编辑 /etc/apt/sources.list
文件(需要使用 root 权限)。
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free
更改完 sources.list
文件后请运行 sudo apt-get update
更新索引以生效。
安装Git
sudo apt-get install git -y
Docker环境安装
本教程使用的是DaoCloud安装脚本,如果需要使用手动安装请移步官方教程、国内请参考各镜像站的教程。
在 Linux上 安装 Docker
Docker 的 安装资源文件 存放在Amazon S3,会间歇性连接失败。所以安装Docker的时候,会比较慢。
你可以通过执行下面的命令,高速安装Docker。
curl -sSL https://get.daocloud.io/docker | sh
适用于Ubuntu,Debian,Centos等大部分Linux,会3小时同步一次Docker官方资源
安装 Docker Compose
Docker Compose 存放在Git Hub,不太稳定。
你可以也通过执行下面的命令,高速安装Docker Compose。
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod x /usr/local/bin/docker-compose
你可以通过修改URL中的版本,可以自定义您的需要的版本
启动Docker服务并设置为开机启动
sudo systemctl start docker
sudo systemctl enable docker
Docker Hub加速(可选)
为避免docker pull
拉取镜像的速度过慢,我们可以选择配置镜像站进行加速。
请先前往DaoCloud官网获取类似下面的加速脚本,复制官网上的加速脚本。博主使用的加速地址已经使用“xxx”隐藏,请使用最新官方地址,请注意修改。
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://xxxxxxxx.m.daocloud.io
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
该脚本可以将 --registry-mirror 加入到你的 Docker 配置文件 /etc/docker/daemon.json 中。适用于 Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1,其他版本可能有细微不同。
手动修改:
修改/etc/docker/daemon.json
文件(若不存在则自行创建),加入如下内容:
{
"registry-mirrors": ["你的加速地址"]
}
里面更换为想要的镜像地址即可。
本文采用的是DaoCloud镜像站,整体体验效果及速度都还不错!你也可以选择其他加速服务。
- DaoCloud:https://www.daocloud.io/mirror
- 阿里云容器镜像服务(使用自己的阿里云账户申请):https://cr.console.aliyun.com/#/accelerator
- 网易:https://hub-mirror.c.163.com/
修改文件后,执行命令重启docker服务:
sudo systemctl daemon-reload
sudo systemctl restart docker
查看版本信息
通过docker --version
来验证Docker安装是否成功
通过docker-compose --version
来验证Docker Compose安装是否成功
如果能正常返回版本信息,那么恭喜你现在已经完成了环境准备环节,加油!
安装准备
本文针对的是最新版CTFd 3.3.1及CTFd-whale的教程,若不需要配置CTFd-Whale,请移步官方教程。
Docker集群设置
1、启用Docker Swarm,并为生成的Manager节点取一个别名
docker swarm init # 初始化
docker node ls # 查看节点ID
docker node update --label-add name=linux-1 <节点 ID> # 添加别名
下载CTFd修改版
博主 @Vicosna 已经对CTFd v3.3.1官方源码进行了更换国内镜像源、添加CTFd-Whale子模块、配置frp网络、设置静态文件CDN加速等工作,可前往使用作者修改的版本进行安装部署。
git clone -b frp https://github.com/vicosna/CTFd.git # 修改版(根目录不建议修改名字)
cd CTFd # 进入CTFd目录
git submodule update --init # 更新CTFd-Whale子模块
# ——————————————————————————————————————————————————————
# 如果你访问Github的速度不佳,也可以使用博主提供的CSDN和Gitee版(可选)
git clone -b https://codechina.csdn.net/vicosna/CTFd.git # CSDN
cd CTFd # 进入CTFd目录
sed -i 's/github.com/codechina.csdn.net/g' .gitmodules # 修改子模块Url
git submodule update --init # 更新CTFd-Whale子模块
# ——————————————————————————————————————————————————————
git clone -b frp https://gitee.com/vicosna/CTFd.git # Gitee
cd CTFd # 进入CTFd目录
sed -i 's/github.com/gitee.com/g' .gitmodules # 修改子模块Url
git submodule update --init # 更新CTFd-Whale子模块
手动配置修改(可选)
如果你不想使用本人上面修改并集成CTFd-Whale版本,也可以参考下面的步骤进行手动修改~
以下内容请移步个人博客继续阅读 https://www.vicosna.com/posts/ctfd/
下载官方CTFd与CTFd-Whale
git clone https://github.com/CTFd/CTFd.git # 官方Git源码
cd CTFd/ # 进入CTFd目录
git reset --hard 1447d14b6ba5eb35b871aeaea689a0cfed2a4195 # 回滚至3.3.1版
# 或者从Release页面下载指定版本的CTFd
# 下载CTFd-Whale(glzjin师傅的版本不兼容最新版本,这里使用Frank师傅的维护版)
配置frp
接下来,在 frp/frpc.ini
和 frp/frps.ini
在frp
目录下添加下面的配置文件,token值要修改成随机值,其他保持默认即可,保存退出。
修改Dockerfile
由于CTFd默认使用的环境服务器在国外,对于国内用户部署过程非常不友好,因此我们需要使用命令vim Dockerfile
修改,添加国内镜像源。此文件一共需要修改三个地方,如图所示。
2、为pip添加阿里云的源,在requirements.txt
后加上-i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
,即可。
3、同为修改pip源,参考第二处的方法即可
三处修改完毕,英文输入状态下先按ESC
再输入:wq
保存退出。
修改docker-compose
使用下面的命令修改docker-compose.yml
配置文件,具体操作请往下看。
vim docker-compose.yml
修改后如图:
2、在cache下方及networks上方添加frpc和frps服务,网上有部分教程这个文件中没有加上frps,这会导致最后还要手动配置docker网络,属实麻烦,本文frps这里采用的是host模式的网络连接方式。
3、配置网络
在networks的internal: true
下面添加frp的网络配置信息(直接复制即可,不需要修改)
修改后如图:
修改完毕记得保存退出。
构建镜像
运行 docker-compose build
命令,等待
如果修改的各配置文件没有错误的话,那么应该就会返回 Successfully tagged ctfd_ctfd:latest
~
部署容器
运行 docker-compose up -d
部署容器,耐心等待~
不出意外的话,等全部显示done就成功啦~
我们再来使用docker ps -a
查看一下当前正在运行的容器是否都正常。
访问你的服务器的公网IP就能打开平台界面啦,由于CTFd最新版启用了nginx端口转发,我们直接访问80
端口即可,当然CTFd的默认端口8000
也可以访问。
Hint: 对于Docker的两条命令docker-compose build
和 docker-compose up -d
,我们可以将它们合起来写成一句命令 docker-compose up -d --build
后续配置
进入平台后的账号主题相关配置请自行设置,这里我们主要提一下根据本教程安装的CTFd-Whale的配置(别的教程可能不能保证完全适用)如果你使用的是本人修改集成CTFd-Whale插件的CTFd版本,那么插件设置处只需要修公网IP和HTTP域名即可。
进入后台CTFd-Whale插件的Frp标签下
第一处:Http Domain Suffix(HTTP模式域名)
此处填写的域名为Frp容器的节点域名,并非为CTFd平台的域名,(请先将该节点域名泛解析到本服务器的IP上)
例如 *.node.vixxxx.com | A | 39.111.11.111
,不同DNS服务商操作或许不一样。
然后在CTFd-Whale插件设置里设置node.vixxxx.com
,这里填写的域名不需要填写 *.
第二处:Direct IP Address(服务器公网IP)
如果你修改了其他配置,例如CTFd根目录的文件夹名称可能会导致容器名称变化,或是Swarm节点别名,导致无法正常启动靶场,请参照CTFd-Whale完整配置信息表自行修改。
附:CTFd-Whale完整配置信息表
属性 | 参考配置 | 备注 |
---|---|---|
Docker API URL | unix:///var/run/docker.sock | Docker API 链接(保持默认即可) |
Credentials | Docker Hub用户名和密码,以“:”分隔。用于拉取私人镜像 | |
Swarm Nodes | linux-1 | 前面Swarm 集群设置标记的节点别名 |
…
详细内容请移步个人博客继续阅读 https://www.vicosna.com/posts/ctfd/
题目测试
这里我们使用 ctftraining/qwb_2019_supersqli 进行测试,添加题目后进行访问。
HTTP模式:
Direct模式:
如果两种模式下都能正常访问容器,那么恭喜你现在CTFd最新版本你已经成功部署啦~
避坑指南
1、安装完Docker,如遇使用 apt update
命令时在 Docker源处更新缓慢
请删除/etc/apt/sources.list.d/docker.list
文件,如果不更新或安装Docker无需此文件
rm -rf /etc/apt/sources.list.d/docker.list
由于使用的是我改良集成版本的CTFd,目前来看可以一气呵成的的部署成功~
后面有机会再更新赵师傅的CTFd v2.3.2版的安装教程,这个版本的安装时坑较多,后续更新再写~
后续更新将在 个人博客发布 https://www.vicosna.com/posts/ctfd/
参考文章
https://www.zhaoj.in/read-6333.html
https://hujiekang.top/2020/04/26/CTFd-conf/index.html
https://err0r.top/article/CTFD/
转载请务必注明来源:https://www.vicosna.com/posts/ctfd/
详细过程及代码复制请在博客获取!如果有问题,请在个人Hexo博客 文章下面的评论区留言或私信联系我,不足之处敬请谅解!
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfifheb
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13