一.前言
搭建完静态CTFd发现不能开启动态靶机,于是花了3天时间,翻遍了能找到的所有博客,踩了无数坑,终于成功....😭😭😭
刚开始尝试用Ubuntu22和最新的CTFd进行搭建,尝试了数次,ctfd_ctfd_1总是无限重启,docker logs报的错网上也找不到解决方案,改用Ubuntu20,18也都失败了,最后放弃了,使用网上教程所使用的的CentOS7和旧版CTFd终于成功了....(如果你使用最新版本搭建成功了,请务必告诉我)
已成功使用CTFd3.5搭建支持动态靶机的平台,有时间再写...(下面是CTFd2.3)
如果你想10分钟内搭建一个静态CTFd靶场,请看我的这篇博客:
从零用Docker搭建CTFd静态靶场,汉化,去广告(2023/04/01)_J14N的博客-CSDN博客
更换操作系统:
二.服务器
云服务器:阿里云ECS 2核2G
操作系统:CentOS 7.5
三.搭建
1.安装Docker和Docker-compose并配置
(1)修改国内源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
yum -y update
(2)更新yum包
sudo yum update
(3)卸载旧版本
sudo yum remove docker docker-common docker-selinux docker-engine
(4)安装必要工具
yum install -y yum-utils device-mapper-persistent-data lvm2
(5)添加docker的存储库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
(6)安装docker-ce
yum install -y docker-ce
(7)设置开机启动并启动docker
systemctl enable docker
systemctl start docker
(8)安装docker-compose,不行就去GitHub上手动下载并改名放在/usr/local/bin/
pip install --upgrade pip
pip install docker-compose
(9)设置权限
chmod +x /usr/local/bin/docker-compose
(10)检查
docker-compose --version
(11)修改docker镜像源
不改的话后面会慢的一*
Docker镜像加速
阿里云镜像加速获取
把这段话复制运行就行
(12)docker集群设置
docker swarm init
docker node ls
docker node update --label-add name=linux-1 <节点 ID>
docker swarm init的结果必须这样才算成功,不行就重启试试sudo systemctl restart docker
2.安装CTFd
(1)获取CTFd
git clone -b single https://github.com/glzjin/CTFd.git
大概率会卡,耐心等等或者多Ctrl+C几次
(2)修改frp配置
但是貌似已经随机了,所以没修改
cd CTFd
vi frp/frps.ini # token 一定要随机
vi frp/frpc.ini # token 一定要随机
git submodule update --init
(3)修改Dockerfile
直接将下面的粘贴进去
FROM python:3.7-alpine
WORKDIR /opt/CTFd
RUN mkdir -p /opt/CTFd /var/log/CTFd /var/uploads
RUN sed -i 's/dl-cdn.alpinelinux.org/mirror.tuna.tsinghua.edu.cn/g' /etc/apk/repositories && \
apk update && \
apk add \
linux-headers \
libffi-dev \
gcc \
make \
musl-dev \
py-pip \
mysql-client \
git \
openssl-dev
COPY . /opt/CTFd
RUN pip install -r requirements.txt -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/
RUN for d in CTFd/plugins/*; do \
if [ -f "$d/requirements.txt" ]; then \
pip install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com -r $d/requirements.txt; \
fi; \
done;
RUN chmod +x /opt/CTFd/docker-entrypoint.sh
RUN adduser -D -u 1001 -s /bin/sh ctfd
RUN chown -R 1001:1001 /opt/CTFd /var/log/CTFd /var/uploads
USER 1001
EXPOSE 8000
ENTRYPOINT ["/opt/CTFd/docker-entrypoint.sh"]
(4)修改requirements.txt
直接复制下面这个
Flask==1.1.2
Werkzeug==0.16.0
Flask-SQLAlchemy==2.4.1
Flask-Caching==1.4.0
Flask-Migrate==2.5.2
Flask-Script==2.0.6
SQLAlchemy==1.3.11
SQLAlchemy-Utils==0.36.0
passlib==1.7.2
bcrypt==3.1.7
six==1.13.0
itsdangerous==1.1.0
jinja2==2.11.3
requests>=2.20.0
PyMySQL==0.9.3
gunicorn==19.9.0
normality==2.0.0
dataset==1.1.2
mistune==0.8.4
netaddr==0.7.19
redis==3.3.11
datafreeze==0.1.0
gevent==21.12.0
python-dotenv==0.10.3
flask-restplus==0.13.0
pathlib2==2.3.5
flask-marshmallow==0.10.1
marshmallow-sqlalchemy==0.17.0
boto3==1.10.39
markupsafe==1.1.1
marshmallow==2.20.2
(5)修改
fonts.dev.css
和
fonts.min.css
修改/root/CTFd/CTFd/themes/core/static/css下fonts.dev.css和fonts.min.css
将找到文件中的
https://use.fontawesome.com/releases/v5.9.0/css/all.css
替换为
https://cdn.bootcss.com/font-awesome/5.13.0/css/all.css
(6)构建并启动镜像
cd ~/CTFd
docker-compose build
docker-compose up -d
ip:8000直接进入**(记得去安全组放行端口8000 创建动态靶机的话还要放行28000/29000)**
3.配置CTFd-whale
照着大佬的配置就行
填上图这个就行
** Frp Config Template**
[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
4.发布题目
还是照着操作就行
四.创建自己的web题并实现动态flag
上面的web题很显然都是docker pull过来的,如果你想自己出动态flag的web题并部署在CTFd上,请看我的这篇博客
(正在写)
五.去广告,修改页脚
看我的这篇博客
从零用Docker搭建CTFd静态靶场,汉化,去广告(2023/04/01)_J14N的博客-CSDN博客
版权归原作者 J14NNN 所有, 如有侵权,请联系我们删除。