CTFd是一款基于Apache2.0的协议的开源CTF平台,最新版本目前为1.20。该平台功能强大,基本上能够满足目前的CTF竞赛需求,同时,该平台提供了强大的插件功能,可以自己进行插件开发实现自己的功能
本次项目是基于Ubuntu service+ctfd搭建的一个靶场这其中有我自己的一些思路以及遇到的问题
本次我搭建的环境以及使用到的工具如下
搭建环境 :win10操作系统 、Ubuntu service操作系统
使用的工具:ssh工具 xhell6   VMware Workstation 16Pro 
首先安装Ubuntu service 操作系统 下载地址如下 获取Ubuntu服务器版 | Ubuntu

安装好后使用xshell连接安装链接

(14条消息) 用虚拟机安装Ubuntu Server_Heros的博客-CSDN博客

安装好后用xshell连接 使用 ssh +ip地址

当然你发现连接不了你要配置ssh服务

解决方法如下

# 1.更新资料列表
sudo apt-get update

# 2.安装openssh-server
sudo apt-get install openssh-server

# 3.查看ssh服务是否启动
sudo ps -e | grep ssh

# 4.如果没有启动,启动ssh服务
sudo service ssh start

# 5.查看IP地址
sudo ifconfig
inet addr:192.168.252.128

1连接好后开始安装ctfd

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

sudo apt-get update
sudo apt-get upgrade

2安装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

3安装dockercompose

进入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即安装成功

4安装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

5安装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

6创建frp网络

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容器

ctfd安装

下载靶场和插件

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

配置docker-compose.yml文件(要在CTFd目录下

vim docker-compose.yml

version: '2.2'

services:
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=-
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:

db:
image: mariadb:10.4.12 #这里改成10.4.12,10.4.13会出错
restart: always
environment:
- MYSQL_ROOT_PASSWORD=ctfd
- MYSQL_USER=ctfd
- MYSQL_PASSWORD=ctfd
- MYSQL_DATABASE=ctfd
volumes:
- .data/mysql:/var/lib/mysql
networks:
internal:
# This command is required to set important mariadb defaults
command: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci, --wait_timeout=28800, --log-warnings=0]

cache:
image: redis:4
restart: always
volumes:
- .data/redis:/data
networks:
internal:

networks:
default:
internal:
internal: true

修改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 ctfd

WORKDIR /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/simple

COPY . /opt/CTFd

RUN 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/uploads

USER 1001
EXPOSE 8000
ENTRYPOINT ["/opt/CTFd/docker-entrypoint.sh"]

修改requirements.txt(要在CTFd目录下)

vim requirements.txt

最后一行添加banal==0.4.2

构建并启动镜像

docker-compose build
docker-compose up -d

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

最后访问

CTFd+ubuntu service搭建等待更新的更多相关文章

  1. 在Ubuntu下搭建ASP.NET 5开发环境

    在Ubuntu下搭建ASP.NET 5开发环境 0x00 写在前面的废话 年底这段时间实在太忙了,各种事情都凑在这个时候,没时间去学习自己感兴趣的东西,所以博客也好就没写了.最近工作上有个小功能要做成 ...

  2. Ubuntu环境搭建系列—JavaEE篇

    恩,其实我是一时兴起,所以就写了目前这几篇环境的博文,希望能给自己做一个笔记,同时也能够给一些新手带来一些帮助,不会在配置方面那么迷茫.本篇文章主要就是针对Java web开发进行环境搭建. 一.To ...

  3. 在ubuntu上搭建开发环境3---解决Y470一键系统重装之后恢复ubuntu引导启动的方法

    2015/08/18 将知识.常用的操作整理出来一定要完整,注意细节. 就像下面是再2015.04.27时候整理的,当时确实实验成功了,但是可能忘记记下具体的细节,尤其是3.4.5.6步骤中的关于盘符 ...

  4. Ubuntu server 搭建Git server

    Ubuntu server 搭建Git server,git相比svn,最主要就是分布式了,每个客户端用户的本地都是一个版本管理控制器. Ubuntu server 版本为12.04 搭建步骤如下: ...

  5. ubuntu完美搭建git服务器【转】

    转自:http://blog.csdn.net/tommy_wxie/article/details/38779667 最近公司项目需要用到Git来管理项目,正好逢周末花了点时间在虚拟机的unbunt ...

  6. 在Ubuntu下搭建FTP服务器的方法

    由于整个学校相当于一个大型局域网,相互之间传送数据非常快,比如要共享个电影,传点资料什么的. 所以我们可以选择搭建一个FTP服务器来共享文件. 那么问题来了,有的同学会问,我们既然在一个局域网内,直接 ...

  7. 在Ubuntu上搭建kindle gtk开发环境

    某个角度上说,kindle很类似android,同样的Linux内核,同样的Java用户层.不过kindle更注重简单.节能.稳定.Amazon一向认为,功能过多会分散人们阅读时候的注意力. Kind ...

  8. 在Ubuntu中搭建KMS服务器

    介绍 基于vlmcsd搭建的KMS服务器. 根据github上的说明,这个工具是用C写的,没有任何依赖,可以直接运行.而且它横跨几乎现在所有的系统平台,如Android, FreeBSD, Solar ...

  9. Ubuntu下搭建tftp服务器最简单方法

    今天开始调试ARM的板子,要通过tftp下载到板子上,所以又要配置tftp服务器,真的烦死了… (本人酷爱装系统,所以经常都要搞配置) 因为之前已经在Ubuntu下搭建过很多次tftp服务器了,但是一 ...

随机推荐

  1. Moco框架jar下载

    下载地址: https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.10.0/ 选择如下图下载 下载成功即可使用

  2. 字符串对比 BASIC-15

    字符串对比 代码 import java.util.Scanner; /*给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等 ...

  3. 浅谈C#取消令牌CancellationTokenSource

    前言 相信大家在使用C#进行开发的时候,特别是使用异步的场景,多多少少会接触到CancellationTokenSource.看名字就知道它和取消异步任务相关的,而且一看便知大名鼎鼎的Cancella ...

  4. Longhorn 企业级云原生容器存储解决方案-部署篇

    内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 云原生分布式块存储解决方案设计架构和概念 安装 Longhorn 可以通过多种方式安装 ...

  5. idea 2019.3.3 系列产品破解

    所有软件版本要求 必须是2019.3.3版本,可破解idea, goland, datagrid, pycharm等系列产品. 编辑vmoptions 添加破解jar包 然后重新打开,输入激活码进行激 ...

  6. 一个tomcat配置多个不同端口的项目

    1.将要同时启动的项目放入不同的webapps文件夹中 2.修改tomcat安装目录下的conf-->setting.xml文件 <?xml version="1.0" ...

  7. Docker搭建网页数据库管理-Adminer

    为什么Adminer比phpMyAdmin更好? 官网介绍: 用Adminer替换phpMyAdmin,您将获得一个简洁的用户界面,对MySQL功能的更好支持,更高的性能和更高的安全性.请参阅详细比较 ...

  8. 关于Ubuntu18.04 linux系统使用搜狗输入法 出现乱码

    解决: 执行下面的命令即可!无需重启系统 killall fcitx

  9. JDBC基础篇(MYSQL)——自定义JDBCUtil工具类

    package util; import java.io.File; import java.io.InputStream; import java.sql.Connection; import ja ...

  10. Node.js & Kubernetes Graceful Shutdown

    k8s-graceful-shutdown:该库提供了使用 Kubernetes 实现 Graceful Shutdown(优雅退出) Node.js App 的资源. 问题描述 在 kubernet ...