记录搭建CTFd过程

  • 学校的毕业设计是搭建Web渗透攻防教学实训平台搭建,写这篇的目的是让大家少走弯路,一次性搭建完成
  • 搭建环境:阿里云eos云主机1g2核
  • ubuntu版本:20.04
  • 采用的是第一种CTFd+CTFd-whale模式
    赵师傅原文链接:
    https://www.zhaoj.in/read-6333.html?tdsourcetag=s_pctim_aiomsg
    特别感谢煜奕大佬在搭建过程中的指导

安装前记得先更新一下软件源和软件列表(一定要更新!)

 sudo apt-get updatesudo apt-get upgrade

不然可能会报错

安装docker

  • 使用的是通过版本安装
更新系统包索引
sudo apt-get update
添加HTTPS协议,允许apt从HTTPS安装软件包
sudo apt-get install  apt-transport-https  ca-certificates curl  software-properties-common
添加Docker公共密钥 Docker 官方源
curl -fsSL  https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add
设置版本库类型,软件版本包括三种: stable、edge、test
sudo add-apt-repository "deb [arch=amd64]  https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
安装最新版docker-ce
sudo apt-get install docker-ce
设置开机自启动并启动docker
sudo systemctl enable docker
sudo systemctl start docker

安装docker-compose

  • 通过GitHub安装
进入https://github.com/docker/compose/releases 查看最新版本。
sudo curl -L https://github.com/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
设置权限
sudo chmod +x /usr/local/bin/docker-compose
查看是否安装成功
docker-compose --version
出现docker-compose version 1.26.2即安装成功

设置docker镜像加速

这个是需要设置的

  • 进入阿里云容器镜像服务:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
  • 根据底下配置方法进行配置
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://******.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

安装frps

注意!!!:一定要在/root目录下执行,否则后面的文件编辑位置会出错。

cd
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
cd frp_0.29.0_linux_amd64
sudo cp systemd/* /etc/systemd/system/
sudo mkdir /etc/frp
sudo cp frpc.ini  frps.ini /etc/frp/
sudo cp frpc  frps /usr/bin/
sudo chmod a+x /usr/bin/frpc /usr/bin/frps
sudo systemctl enable frps
  • 编辑/etc/frp/frps.ini
sudo vim /etc/frp/frps.ini[common]
bind_port = 7897
bind_addr = 0.0.0.0
token = thisistoken  #token值一定要与frpc文件的保持一致
  • 启动frps系统服务
    sudo systemctl start frps

创建FRP网络

  • 启动frpc容器
sudo docker network create ctfd_frp-containers
sudo docker run  -d -v ~/frp_0.29.0_linux_amd64/frpc.ini:/etc/frp/frpc.ini --network="ctfd_frp-containers" --restart=always "glzjin/frp"
  • 创建frpcadmin网络并将frpc容器接入网络
sudo docker network create frpcadmin
docker ps //查看frpcadmin容器ID
sudo docker network connect frpcadmin <frpc容器ID>
  • 查看frpcadmin网络的连接情况并记录frpc容器的网络IP
    docker network inspect frpcadmin

注意!!!:如果初次执行没有发现地址,多执行几次上面的命令,容器处于up状态时才可以加入。

  • 修改/etc/frp/frpc.ini
vim /etc/frp/frpc.ini[common]
server_addr = 172.17.0.1 #docker0的ip
server_port = 7897
token=thisistoken
  • 编辑~/frp_0.29.0_linux_amd64/frpc.ini(这个文件会用来配置frpc容器的)
vim ~/frp_0.29.0_linux_amd64/frpc.ini[common]
server_addr = 172.17.0.1 //docker0的ip
server_port = 7897
token = thisistoken  //与前面frps.ini的token一致
admin_addr = 172.19.0.2  //frpc容器的网络IP,上面记录的IP
admin_port = 7400
log_file = ./frps.log

注意!!:之前配置的frps与两个frpc文件的token、port值一定要一样。不然容器会一直保持重启状态。

  • 重启frpc容器
    docker restart <frpc容器的ID>

CTFd和CTFd-whale插件的安装,汉化和修改

  1. 下载靶场和插件
git clone https://github.com/CTFd/CTFd.git
cd CTFd/
git reset 6c5c63d667a17aec159c8e26ea53dccfbc4d0fa3 --hard //回滚到当前教程适合的版本
cd CTFd/plugins  //打开ctfd插件目录
git clone https://github.com/glzjin/CTFd-Whale.git ctfd-whale
cd ctfd-whale
git reset 5b32f457e9f56ee9b2b29495f4b3b118be3c57bd --hard //回滚到当前教程适合的版本
cd ../../..  //返回CTFd主目录
vim docker-compose.yml
  1. 配置docker-compose.yml文件(要在CTFd目录下)
vim docker-compose.yml
version: '2.2'services:ctfd:build: .user: rootrestart: alwaysports:- "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=-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:- dbnetworks:default:internal:db:image: mariadb:10.4.12 #这里改成10.4.12,10.4.13会出错restart: alwaysenvironment:- MYSQL_ROOT_PASSWORD=ctfd- MYSQL_USER=ctfd- MYSQL_PASSWORD=ctfd- MYSQL_DATABASE=ctfdvolumes:- .data/mysql:/var/lib/mysqlnetworks:internal:# This command is required to set important mariadb defaultscommand: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci, --wait_timeout=28800, --log-warnings=0]cache:image: redis:4restart: alwaysvolumes:- .data/redis:/datanetworks:internal:networks:default:internal:internal: true
  1. 修改Dockerfile(要在CTFd目录下)
    这里我使用的是3.6的,我的使用3.7的会报错
vim Dockerfile
FROM python:3.6-alpine
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories &&\apk update && \apk add python3 python3-dev linux-headers libffi-dev gcc make musl-dev py-pip mysql-client git openssl-dev
RUN adduser -D -u 1001 -s /bin/bash ctfdWORKDIR /opt/CTFd
RUN mkdir -p /opt/CTFd /var/log/CTFd /var/uploads
RUN pip config set global.index-url https://pypi.doubanio.com/simple
RUN pip config set install.trusted-host pypi.doubanio.com
COPY requirements.txt .RUN pip install -r requirements.txt -i  https://pypi.doubanio.com/simpleCOPY . /opt/CTFdRUN for d in CTFd/plugins/*; do \if [ -f "$d/requirements.txt" ]; then \pip install -r $d/requirements.txt -i  https://pypi.doubanio.com/simple; \fi; \done;RUN chmod +x /opt/CTFd/docker-entrypoint.sh
RUN chown -R 1001:1001 /opt/CTFd
RUN chown -R 1001:1001 /var/log/CTFd /var/uploadsUSER 1001
EXPOSE 8000
ENTRYPOINT ["/opt/CTFd/docker-entrypoint.sh"]
  1. 修改requirements.txt(要在CTFd目录下)
vim requirements.txt

最后一行添加banal==0.4.2

  1. 构建并启动镜像
docker-compose build
docker-compose up -d
  1. 将ctfd容器加入到frpcadmin网络中
docker ps  #查看ctfd容器的id
docker network connect frpcadmin 容器id

输入
docker network inspect frpcadmin
显示

  1. 汉化CTFd页面
    CTFd 汉化包地址: https://github.com/Gu-f/CTFd_chinese_CN
    1.下载汉化包:
    git clone https://github.com/Gu-f/CTFd_chinese_CN.git
    2.替换或者增加theme
    方法一:将core_chinese文件直接放入CTFd\CTFd\themes目录即可在更换主题处找到该中文主题
    方法二:themes文件直接替换CTFd\CTFd目录下的themes即可完成汉化
    我用的是V2.1.4里的themes

  2. 解决CTFd页面访问慢的问题
    原因是用了一个all.css。这个样式文件是从外网加载过来的。修改一下网址即可实现快速加载。这个样式文件的位置在:/CTFd/CTFd/themes/core/static/css/vendor/font-awesome/下的fontawesome-fonts.css

    @import url('https://use.fontawesome.com/releases/v5.4.1/css/all.css');
    替换为
    @import url('https://cdn.bootcss.com/font-awesome/5.13.0/css/all.css');
    然后重新启动docker
    systemctl restart docker

  3. 访问页面
    由于我是使用阿里云服务器
    公网ip:8000 即可进入服务器
    服务器一定要开放8000端口,28000/29000端口
    开放端口在安全组配置-配置端口里

  4. 进去设置管理员账号密码这些

  5. 设置动态容器参数
    用自己设置的管理员账号密码登录
    汉化的:点击管理员->Plugins-> CTFd Whale
    未汉化的:点击Admin -> Plugins->CTFd Whale

Frp API IP填frpc容器网络的IP
domain没有就填None
Frp Direct IP Address填服务器公网IP
template里面写上frpc.ini的内容,其他照着填就行!!

在CTFd上放置题目及配置

这里使用的是仓库里的题目:
仓库地址:https://github.com/CTFTraining/CTFTraining
该题库较为详细,目录结构清晰,通过docker编排

  1. 下载CTFTraining中的题库,这里要注意CTFTraining整个项目较大,题目建议一个个下,有选择性的拉取,下面以拉取第一个题目为例
mkdir CTFTraining
cd CTFTraining
git clone https://github.com/CTFTraining/qwb_2019_supersqli.git

每道题的地址

2. 进入该题目录:

cd qwb_2019_supersqli

修改docker-compose.yml(选的题目的端口被占用才需要进去修改端口,端口不被占用可以不用修改)
然后启动题目
docker-compose up -d
启动成功后访问CTFd页面

3.设置题目参数

Challenge Type题目类型选择dynamic_docker
Name题目名字
Category题目分类
Initial Value初始分值
Decay Value递减分值
Minimum Value最小分值
Docker Image支持动态flag的镜像
Frp Http Portfrps http开放的端口
Frp Redirect Type没有域名选择Direct
Frp Redirect Port转发到靶机容器的端口
Score Type是否启用动态分数


启动题目

等待,跳出题目的ip地址即成功
输入到浏览器,到此搭建完成

参考文章:
搭建:https://blog.csdn.net/weixin_43802844/article/details/108572271
https://blog.csdn.net/iczfy585/article/details/110305888
汉化,放题
https://zhuanlan.zhihu.com/p/86409304?from_voters_page=true

Ubuntu搭建CTFd平台实现动态靶机的过程相关推荐

  1. 基于Ubuntu搭建CTFd平台(全网最全)

    前言: 最近在看<CTF安全竞赛入门>这本书,里面提到了搭建CTFd平台用于练习,学者可以在本地虚拟机上搭建. 所需系统:Ubuntu20.04 怎么安装虚拟机和配置Ubuntu这里就不再 ...

  2. trac linux,Ubuntu搭建trac平台步骤

    Ubuntu搭建trac平台步骤: 注:如果不用mysql模式,mysql相关均可不装 # apt-get install apache2 # apt-get install libapache2-m ...

  3. Ubuntu搭建XSS平台 nginx+php5.6+mysql

    重要! 因为网上搭建XSS平台的大多数都是用Apache来做Web服务器的,所以我就找了些资料用nginx进行搭建,其实很简单. 本人还是个小白,对php等技术了解并不深,基本上都是参照别的大佬的文章 ...

  4. CTFd+CTFd-whale动态靶机环境搭建

    CTFd+CTFd-whale动态靶机插件搭建 文章目录 CTFd+CTFd-whale动态靶机插件搭建 1.安装docker 2.安装docker-compose 3.Frp的配置 4.CTFd和C ...

  5. 记一次CTFd平台搭建

    CTFd平台搭建指南 前言 学校要承办市赛的网络安全赛项,要求要稳定的平台,所以这一次我选择了CTFd作为本次比赛的环境.(以前内部比赛用过H1v1,偶尔会出现500的报错.)之前看到过赵师傅写的CT ...

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

    目录 一.前言 二.服务器 三.搭建 1.安装Docker和Docker-compose并配置 (1)修改国内源 (2)更新yum包 (3)卸载旧版本 (4)安装必要工具 (5)添加docker的存储 ...

  7. ctfd的mysql导入_centos7 CTFd平台搭建过程

    centos7 CTFd平台搭建过程 CTFd平台想要搭建成功,需要centos7,python,mariadb,flask,apache 0X01 升级数据库 1.备份数据库 mysqldump - ...

  8. edx平台搭建(基于Ubuntu搭建edx)

    Edx的平台搭建,对于我这种完完全全的新手来说,搭建edx平台蛮耗劲的.上周在公司搞了一周的时间,最终完美搭建成功.下面写出自己的心路历程. 刚开始的,参考的是基于Ubuntu虚拟机安装edx-pla ...

  9. Ubuntu搭建DTN2仿真平台(详细过程记录)

    基于Ubuntu搭建DTN2仿真平台 软件安装 软件下载 安装过程 基础运用 软件安装 编译安装 dtn2 之前要保证 gcc 编译器是 3.3 版本以上(但其实如果用低于4.9版本的gcc编译mak ...

最新文章

  1. javascript密码强度验证!
  2. 实现才是目的——《大道至简》第六章读后感
  3. SAP Spartacus StoreFeatureModule
  4. Asp.net MVC 中Controller返回值类型ActionResult
  5. redhat5.4 安装mysql_Linux redhat 5.4上安装MYDNS
  6. 你的下一代iPhone何必是iPhone,苹果或将于2022年推出AR设备取代手机
  7. Java基础学习总结(83)——Java泛型总结
  8. python读取配置文件configparser模块
  9. 微信小程序_简单组件使用与数据绑定
  10. (JavaScript)浮动广告代码
  11. java 微服务架构图_图解微服务架构演进
  12. 计算机专业本科一批,本科一批招生计划
  13. EMC电磁兼容---EMI电磁干扰
  14. windows平台Emacs单实例原理、设置及右键菜单的添加
  15. 【ARM学习笔记】ARM Cortex -A7 EPIT定时器
  16. 鸿蒙升级后桌面背景底纹怎么弄,ps添加背景怎么弄
  17. php 顺丰接口实例,顺丰对接源代码
  18. 如何将中文地址翻译成英文
  19. 提升eBay店铺流量的方式有哪些?
  20. 管理信息化涉及的领域

热门文章

  1. Altium Designer Query语句
  2. 专访 | Draven:像写代码一样,用树形的结构写文章
  3. mysql round不四舍五入_MySQL中ROUND函数进行四舍五入操作陷阱分析
  4. Docker学习--修改阿里云镜像
  5. 乔布斯往事:游戏之神卡马克眼中的“英雄和傻瓜”
  6. Python音乐下载
  7. ACL+SASL的认证配置后的Kafka命令操作(Windows版)
  8. 云主机和电脑主机服务器有什么区别?
  9. 算法——连续性后处理(把26邻域连续的变成6邻域连续的)
  10. 2022-2028全球隔离式CAN收发器行业调研及趋势分析报告