CTFd+ubuntu service搭建等待更新


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

 最后訪問

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM