ctfer-io/fullchain

GitHub: ctfer-io/fullchain

一个集成的 CTF 平台项目,通过封装与重打包镜像降低部署门槛,实现一键式生产环境级 CTF 部署。

Stars: 2 | Forks: 0

Fullchain

reference go report Coverage Status
License CI CodeQL
OpenSSF Scoreboard
**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 基础设施。
The Fullchain architecture.
## 📦 部署 ### 配置 默认配置可以工作,但你可能无法得到一个 ✨ **完美** 🤌 的设置。 要做到这一点,你可以查看整个 [`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, 全栈, 子域名突变, 学习实验, 安全评估工具, 安全评分, 容器化, 开源, 日志审计, 测试演示, 独立部署, 生产环境, 网络安全, 赛事赞助, 隐私保护