从零用Docker搭建CTFd动态靶场(CTFd+CTFd-whale)2023/04/01

目录

一.前言

二.服务器

三.搭建

1.安装Docker和Docker-compose并配置

(1)修改国内源

(2)更新yum包

(3)卸载旧版本

(4)安装必要工具

(5)添加docker的存储库

(6)安装docker-ce

(7)设置开机启动并启动docker

(8)安装docker-compose,不行就去GitHub上手动下载并改名放在/usr/local/bin/

(9)设置权限

(10)检查

(11)修改docker镜像源

(12)docker集群设置

2.安装CTFd

(1)获取CTFd

(2)修改frp配置

(3)修改Dockerfile

(4)修改requirements.txt

(5)修改fonts.dev.css和fonts.min.css

(6)构建并启动镜像

3.配置CTFd-whale

4.发布题目

四.创建自己的web题并实现动态flag

五.去广告,修改页脚


从零用Docker搭建CTFd动态靶场(CTFd+CTFd-whale)2023/04/01_第1张图片

一.前言

 搭建完静态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博客

 更换操作系统:

从零用Docker搭建CTFd动态靶场(CTFd+CTFd-whale)2023/04/01_第2张图片


二.服务器

云服务器:阿里云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镜像加速

阿里云镜像加速获取

把这段话复制运行就行

从零用Docker搭建CTFd动态靶场(CTFd+CTFd-whale)2023/04/01_第3张图片

(12)docker集群设置

docker swarm init

docker node ls

docker node update --label-add name=linux-1 <节点 ID>

docker swarm init的结果必须这样才算成功,不行就重启试试sudo systemctl restart docker

从零用Docker搭建CTFd动态靶场(CTFd+CTFd-whale)2023/04/01_第4张图片

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.cssfonts.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

照着大佬的配置就行

img

 img

 img

填上图这个就行

 img

 img

 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.发布题目

还是照着操作就行

img

 img

 img

 img

 img


四.创建自己的web题并实现动态flag

上面的web题很显然都是docker pull过来的,如果你想自己出动态flag的web题并部署在CTFd上,请看我的这篇博客

(正在写)

从零用Docker搭建CTFd动态靶场(CTFd+CTFd-whale)2023/04/01_第5张图片


五.去广告,修改页脚

看我的这篇博客

从零用Docker搭建CTFd静态靶场,汉化,去广告(2023/04/01)_J14N的博客-CSDN博客


你可能感兴趣的:(CTFd靶场搭建,docker,运维,容器,服务器,linux)