简介
GZ::CTF 是一个基于 ASP.NET Core 的开源 CTF 平台,采用 Docker 或 K8s 作为容器部署后端,提供了可自定义的题目类型、动态容器和动态分值功能。
GZ::CTF 基于 AGPLv3 协议开源,使用和修改均需遵守开源协议。
官网
![图片[1]-【CTF靶场搭建】GZ-CTF平台-松鼠博客](https://squirrelblog.com/wp-content/uploads/2024/12/image-9-1024x482.png)
服务器系统目前最好用:ubuntu的22.04
的版本目前我是使用这个,应为它是自带docker的省去搭建docker的环节,如果需要更大的集群官网有k8s搭建方法。
国内服务器docker换源
如果你是用ubuntu的22.04直接换源
详细换源教程在这篇文章:【Docker换源】Docker更换镜像源教程
{
"registry-mirrors": [
"https://ustc-edu-cn.mirror.aliyuncs.com/",
"https://ccr.ccs.tencentyun.com/",
"https://docker.m.daocloud.io/",
"https://dockerhub.azk8s.cn",
"https://mirror.baidubce.com",
"https://docker.nju.edu.cn",
"https://mirror.iscas.ac.cn",
"https://dockerhub.icu",
"https://docker.anyhub.us.kg",
"https://hub.gog.email",
"https://dockerpull.com",
"https://atomhub.openatom.cn"
]
}
//这是新的源我也不知道好用不好用你们尝试一下
GZCTF的安装
有脚本我自己写的如果想直接的用我脚本
1.先创建一个GZCTF的文件夹,用来存放配置相关文件
mkdir GZCTF
2.创建 appsettings.json
文件(在GZCTF文件夹下)
vim appsettings.json
将以下内容输入到文件中记得替换初始参数之类的内容,删除掉所有注释,不然可能会报错
{
"AllowedHosts": "*",
"ConnectionStrings": {
"Database": "Host=db:5432;Database=gzctf;Username=postgres;Password=GzctfAuto233", // 此处Password内容可以自定义(安全起见,至少包含数字及字母大小写)
"RedisCache": "cache:6379,abortConnect=false"
},
"EmailConfig": { // 邮件配置,用于找回密码之类的,这里就用163举例
"SendMailAddress": "demo@163.com", // 邮件发送者
"UserName": "demo@163.com", // SMTP用户名,就是你开启SMTP的邮箱
"Password": "SMTP_PASSWORD", // 你得STMP服务器密码,唯一,
"Smtp": {
"Host": "smtp.163.com", // 163邮箱的stmp服务器地址
"Port": 465 // stmp端口
}
},
"XorKey": "GzctfAuto233", // 此处XorKey可以自定义
"ContainerProvider": {
"Type": "Docker",
"PortMappingType": "Default",
"EnableTrafficCapture": false,
"PublicEntry": "XXX.XXX.XXX.XXX", // 域名或IP配置,用于容器生成,域名不带http/https
"DockerConfig": {
"SwarmMode": false,
"Uri": "unix:///var/run/docker.sock"
}
},
"RequestLogging": false,
"DisableRateLimit": true,
"RegistryConfig": {
"UserName": "DOCKER_USERNAME",
"Password": "DOCKER_PASSWORD",
"ServerAddress": "DOCKER_ADDRESS"
},
"CaptchaConfig": {
"Provider": "None",
"SiteKey": "",
"SecretKey": "",
"GoogleRecaptcha": {
"VerifyAPIAddress": "https://www.recaptcha.net/recaptcha/api/siteverify",
"RecaptchaThreshold": "0.5"
}
},
"ForwardedOptions": {
"ForwardedHeaders": 5,
"ForwardLimit": 1,
"ForwardedForHeaderName": "X-Forwarded-For",
"TrustedNetworks": [
"0.0.0.0/0"
]
}
}
3.在当前文件夹下继续创建docker-compose.yml
文件
vim docker-compose.yml
在文件里输入以下内容,记得替换初始参数之类的内容,删除掉所有注释
services:
gzctf:
image: registry.cn-shanghai.aliyuncs.com/gztime/gzctf:develop
restart: always
environment:
- "GZCTF_ADMIN_PASSWORD=<Your GZCTF_ADMIN_PASSWORD>" # <Password>换成账户管理员密码,管理员账户为admin
# choose your backend language `en_US` / `zh_CN` / `ja_JP`
- "LC_ALL=zh_CN.UTF-8"
ports:
- "80:8080"
volumes:
- "./data/files:/app/files"
- "./appsettings.json:/app/appsettings.json:ro"
# - "./kube-config.yaml:/app/kube-config.yaml:ro" # this is required for k8s deployment
- "/var/run/docker.sock:/var/run/docker.sock" # this is required for docker deployment
depends_on:
- db
db:
image: postgres:alpine
restart: always
environment:
- "POSTGRES_PASSWORD=<Your POSTGRES_PASSWORD>" # 数据库密码,务必要和appsettings.json中的配置一致
volumes:
- "./data/db:/var/lib/postgresql/data"
在构建并启动GZCTF
在当前文件夹下(GZCTF),执行命令,成功构建并启动GZCTF
docker-compose up -d
后续修改配置文件的时候要停止docker,并再此运行上述命令。
第一次安装的时候会有点慢,后面会快很多
查看GZCTF启动状态:
docker ps
![图片[2]-【CTF靶场搭建】GZ-CTF平台-松鼠博客](https://squirrelblog.com/wp-content/uploads/2024/12/image-10-1024x158.png)
会看到容器的状态
然后访问你填的ip或者域名即可
https配置
需要先下载caddy
caddy v2官网:欢迎 — Caddy v2中文文档
Debian、Ubuntu、Raspbian安装命令在下面
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
安装完之后caddy先查看它的状态
service caddy status
应为caddyv2不需要配置证书什么基本上是自动化所以我们重新到GZCTF文件夹下编辑compose.yml
默认一般是ports:80:8080,
要把80改成127.0.0.1:8081
或者127.0.0.1:8080
![图片[3]-【CTF靶场搭建】GZ-CTF平台-松鼠博客](https://squirrelblog.com/wp-content/uploads/2024/12/image-12.png)
改完gzctf里面内容可以重载compose
docker compose down && docker compose up -d
最重要是改caddyfile文件里面这个文件默认安装在/etc/caddy/Caddyfile
vim /etc/caddy/Caddyfile
就会看到
![图片[4]-【CTF靶场搭建】GZ-CTF平台-松鼠博客](https://squirrelblog.com/wp-content/uploads/2024/12/image-13.png)
ctf.squirrelblog.com {
reverse_proxy 127.0.0.1:8081 #这里输入你想反代的服务器IP和端口
}
把这个reverse_proxy 后面改成之前在compose.yml中配置的代码我在上面已经截图过了要一样
然后将ctf.squirrelblog.com改成自己域名,切记域名要确保解析自己服务器了否则不会有效果
caddy run
systemctl status caddy
caddy一些指令
# 启动Caddy
systemctl start caddy
# 开机自启
systemctl enable caddy
# 重启Caddy2
systemctl restart caddy
# 停止Caddy2
systemctl stop caddy
# 重载配置Caddy配置文件(修改配置文件后执行)
systemctl reload caddy
# 查看Caddy2运行状态
systemctl status caddy
![图片[5]-【CTF靶场搭建】GZ-CTF平台-松鼠博客](https://squirrelblog.com/wp-content/uploads/2024/12/image-14.png)
看它有没有爆红报错的提示如果没有就代表成功了
GZ后台用户管理ip显示教程
先到后台查看:172.xxx.xxx.xx/17然后只要把你管理员的那个在后台显示改下面的地方
![图片[6]-【CTF靶场搭建】GZ-CTF平台-松鼠博客](https://squirrelblog.com/wp-content/uploads/2024/12/image-15.png)
![图片[7]-【CTF靶场搭建】GZ-CTF平台-松鼠博客](https://squirrelblog.com/wp-content/uploads/2024/12/image-16.png)
把他替换管理员就能显示用户ip了
暂无评论内容