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

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

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

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

文章目录

  • CTFD支持动态靶机的搭建笔记(docker:ctfd+ctf-whale)
    • 本篇文章最后更新于2021年2月25日
    • 前言
        • 强调!
    • 事前准备
    • 安装步骤
      • 1.docker集群设置
      • 2.放入ctfd-whale
      • 3.安装frps(这里有其他教程写的是不对的)
      • 4.配置ctfd
      • 5.配置Dockerfile
      • 6.准备完毕
      • 配置CTFD
      • 设置docker网络
      • 坑点注意
            • docker容器无法启动问题
            • frp端口无法映射问题
    • 2021.2.25 更新
      • 参考文章

前言

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_li

你可能感兴趣的:(CTFd)