ctfer-io/fullchain
GitHub: ctfer-io/fullchain
一个集成的 CTF 平台项目,通过封装与重打包镜像降低部署门槛,实现一键式生产环境级 CTF 部署。
Stars: 2 | Forks: 0
**Fullchain** 是一个总括性项目,它以牺牲 **CTFer.io** 栈的[独立可部署性](https://microservices.io/post/architecture/2022/05/04/microservice-architecture-essentials-deployability.html)为代价,换取一个开箱即用的 CTF(夺旗)平台。
它的目的是帮助部署类似生产环境的环境,供社区在测试、演示或赞助活动的 SaaS 工作中自行部署。
其中已包含通过我们的[重新打包镜像](https://github.com/ctfer-io/ctfd-packaged)集成的 [CTFd](https://github.com/ctfd/ctfd)、[Chall-Manager](https://github.com/ctfer-io/chall-manager) 及其 [CTFd 插件](https://github.com/ctfer-io/ctfd-chall-manager),以及 [监控](https://github.com/ctfer-io/monitoring) 堆栈。这个列表预计会随着时间推移而增长,因为越来越多的服务成熟到足以支持 CTF 基础设施。
## 📦 部署
### 配置
默认配置可以工作,但你可能无法得到一个 ✨ **完美** 🤌 的设置。
要做到这一点,你可以查看整个 [`Pulumi.yaml`](Pulumi.yaml) 配置。
我们在这里详细说明其中的一些配置。
#### 专用挑战集群
如果你想为挑战配置一个专用集群。
```
# 在之前导出 PULUMI_CONFIG_PASSPHRASE
# https://github.com/pulumi/pulumi/issues/6015
cat /path/to/kubeconfig | pulumi config set --secret --path chall-manager.kubeconfig
```
#### 自定义证书
如果你想使用自定义证书。
我们**强烈推荐**用于生产目的,特别是为了防止中间人攻击、凭证泄露等。
```
# 在之前导出 PULUMI_CONFIG_PASSPHRASE
# https://github.com/pulumi/pulumi/issues/6015
cat /path/to/crt.pem | pulumi config set --secret --path ctfer.platform.crt
cat /path/to/key.pem | pulumi config set --secret --path ctfer.platform.key
```
#### DNS 入口主机名
如果你想通过 DNS 名称将 CTF 平台暴露给外部人员。
```
pulumi config set --path ctfer.platform.hostname ctfd.yourdomain
```
#### 工作者与副本
如果你想在 CTFd 上配置多个工作者。
```
pulumi config set-all \
--path ctfer.platform.workers 3 \
--path ctfer.platform.replicas 3
```
### 隔离环境
如果你不需要隔离环境设置,你可以**直接跳过到[部署](#lets-do-it)**。
对于隔离环境,你需要下载所有镜像并上传到你的注册表,然后再进行部署。你可以使用 [Hauler](https://docs.hauler.dev/) 一次性下载并推送所有镜像。
在执行 `pulumi up -y` 之前,必须完成以下步骤:
1. 导航到 `hack` 目录:
cd hack
2. 使用 Hauler 同步镜像:
hauler store sync -f chaine-totale.yml
3. 将镜像复制到你的注册表:
hauler store copy registry://your-registry:5000
4. 配置注册表地址:
pulumi config set registry your-registry:5000
### 开始部署!
现在只剩下特定于基础设施的最后一步配置,你应该可以顺利部署 CTFer! 💪
```
pulumi config set-all \
--path platform.hostname ctfd.dev1.ctfer-io.lab \
--path ingress-labels.name traefik
pulumi up
```
## 🏗️ 已知限制
由于 **Fullchain** 尚未完全成熟,某些配置目前还无法轻松定制。
为了正确使用本项目,我们建议你:
- 在 `cnpg-system` 命名空间中安装 CNPG 运算符;
- 在 `ingress-controller` 命名空间中安装入口控制器;
- 使用 Cilium 作为 CNI(并启用 Hubble 用于调试,生产环境中可能不必要);
- 使用带有 `psycopg2-binary` 包的 CTFd 镜像,例如[我们的重新打包镜像](https://github.com/ctfe-io/ctfd-packaged)(或使用 `ctferio/ctfd` 自行创建)。
标签:Capture The Flag, CI, CodeQL, CTF平台, EVTX分析, Go, NIDS, OpenSSF, Ruby工具, SaaS, 全栈, 子域名突变, 学习实验, 安全评估工具, 安全评分, 容器化, 开源, 日志审计, 测试演示, 独立部署, 生产环境, 网络安全, 赛事赞助, 隐私保护