CTFD支持动态靶机的搭建笔记(docker:ctfd+ctf-whale)2021.2.5

本文详细记录了使用docker在CTFD平台上搭建动态靶机的过程,包括ctfd-whale插件的集成、frps的安装配置以及解决遇到的各种坑点,适合熟悉Linux基础和Docker操作的读者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CTFD支持动态靶机的搭建笔记(docker:ctfd+ctf-whale)

本篇文章最后更新于2021年2月25日

转载请注明来源:https://err0r.top/article/CTFD/

前言

ctfd可以说是如今最方便的ctf靶场搭建平台,支持各种插件与二次开发,赵师傅早前写了一款插件ctf-whale非常方便,但本人在搭建的过程中遇到了不少问题,经过不断研究终于完成,特此记录,以防后期忘记,也供大家交流学习。
赵师傅开发的插件是为了适合 buu 的架构,本篇文章采用完整流程+填坑讲解的格式。
我修改了一份CTFd,已上传github:https://github.com/Err0rCM/CTFd_with_CTFd-whale,启动后仍需按照教程后半部分配置,省去前半部分时间,如有问题请提issue或者从头自行配置。

强调!

由于国内git clone实在太慢,本人采用的方法是科学上网下载zip解压的方式,可自行百度git clong与Download zip的区别。本篇文章是用本地下载zip解压上传的方式完成在服务器上搭建

如果阅读中操作出现问题请自行百度,翻到文末查看坑点讲解或者查看其它搭建文章

这里感谢赵师傅zhaoj,fjh1997等前辈写的文章指导,读者遇到问题或有不足或缺陷的地方请私信我添加改正

事前准备

注意:本机为CentOS7
要求:

  1. 已安装基础环境,熟悉linux基本操作
  2. 已安装好 Docker 和 Docker-Compose,并且启用 Docker Swarm,完成换源等操作
  3. 科学上网
  4. 有绝对的耐心

需求:

  1. 下载赵师傅改写的ctfd,赵师傅已经完成了镜像换源等操作
https://github.com/glzjin/CTFd.git ->赵师傅仓库
  1. 下载frp
wget https://github.com/fatedier/frp/releases/download/v0.29.0/frp_0.29.0_linux_amd64.tar.gz

tar -zxvf frp_0.29.0_linux_amd64.tar.gz

也可以直接访问链接下载然后解压上传

  1. 下载ctf-whale
https://github.com/glzjin/CTFd-Whale
  1. 下载docker的frps
    这里在赵师傅仓库里扒拉发现的
https://github.com/glzjin/Frp-Docker-For-CTFd-Whale

以上除ctfd解压后请确保字母小写,并只有一级文件夹


安装步骤

1.docker集群设置

输入命令

docker swarm init

docker node ls

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

docker集群设置

具体原理等可以查看其它ctfd搭建文章,文末会贴出,这里不做过多阐述

2.放入ctfd-whale

将解压的ctfd-whale改小写后放入/CTFd/CTFd/plugins

3.安装frps(这里有其他教程写的是不对的)

这里注意下,frp不是装在服务器机子上的,简单来说,frps与frpc都是在docker里的。(大坑在这里)
frpc是在ctfd里的,frps是在docker机里的

上传赵师傅的Frp-Docker-For-CTFd-Whale,进入目录后运行docker-compose up -d即可,然后docker ps可看到frps的容器运行中
frps

这里看到frps有28000-28100,这是在Frp-Docker-For-CTFd-Whale里的docker-compose.yml,可更改配置后compose

version: '2'

services:
  frps:
    image: glzjin/frp:latest
    restart: always
    volumes:
      - ./frp:/conf/
    entrypoint:
        - /usr/local/bin/frps
        - -c
        - /conf/frps.ini
    ports:
      - "28000-28100:28000-28100"     #可更改开放端口
      - "6490:6490"    #此处必须与frps.ini配置一致
    networks:
        default:

networks:
    default:

再看一下/frp/frps.ini

[common]
bind_port = 6490
token = randomme

4.配置ctfd

直接上ctfd的docker-compose.yml配置

version: '2.2'

services:
  ctfd-nginx:
    image: nginx:1.17
    volumes:
      - ./nginx/http.conf:/etc/nginx/nginx.conf   #这里注意
    user: root
    restart: always
    ports:
      #- "85:80"     #我将这里注释掉了,这里通过nginx转发感觉速度访问速度会变慢,多次尝试之后直接开8000端口访问不会对服务造成影响
      - "443:443"
    networks:
        default:
        internal:
    depends_on:
      - ctfd
    cpus: '1.00'  #可改
    mem_limit: 150M     #可改
  ctfd:
    build: .
    user: root
    restart: always
    ports:
      - "8000:8000"     #这里原本没开端口,直接打开访问网站速度会加快
    environment:
      - UPLOAD_FOLDER=/var/uploads
      - DATABASE_URL=mysql+pymysql://root:ctfd@db/ctfd
      - REDIS_URL=redis://cache:6379
      - WORKERS=1
      - LOG_FOLDER=/var/log/CTFd
      - ACCESS_LOG=-
      - ERROR_LOG=-
      - REVERSE_PROXY=true
    volumes:
      - .data/CTFd/logs:/var/log/CTFd
      - .data/CTFd/uploads:/var/uploads
      - .:/opt/CTFd:ro
      - /var/run/docker.sock:/var/run/docker.sock     #这里是添加的
    depends_on:
      - db
    networks:
        default:
        internal:
        frp:
            ipv
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值