• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

CTFd最新动态靶场环境部署笔记2021.08.01更新

武飞扬头像
vicosna
帮助1

前言

目前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.inifrp/frps.inifrp目录下添加下面的配置文件,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 builddocker-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
系列文章
更多 icon
同类精品
更多 icon
继续加载