从 HGAME2025 运维,聊聊学校战队 CTF 独立办赛

写这篇文章的时候,HGAME2025 马上就要结束了,还是比较有自信它能够平稳结束吧,就开始提前开香槟写总结文章了,你们看到这篇文章的时候估计已经结束了。 我所在的 Vidar-Team 算是办赛非常非常勤的一支队伍了,几乎覆盖了全年。我们一届运维,一路会从小规模长时间的 HGAME-Mini 开始办赛,到中上规模,较长时间的 HGAME 正式赛,再到线下赛 HGAME Final,最后还要办一个国际范围大强度标准时长的 D^3 CTF。 我先吹一句,高校战队中 No Body Has CTF Hosting Experience More Than Vidar-Team. 🙌 这届 HGAME 对我来说意义不同寻常,往年主要运维工作其实都由凌武科技承担,老学长连着干了不知道多少届运维,我们就混混经验看看操作。但是今年是完全由现役 Vidar-Team 成员去做的所有支撑工作,所以很多东西包括预算,选方案,开机子这些细节是完全从头来过的,也可以说这是我们这一届头一次独立办赛。 这篇文章我们主要还是谈一些运维上的方案,包括备选的技术方案,如果您是某个校队的队长或者运维,希望这些方案以及数据能够给你们提供一些小小的帮助。 关于平台与集群化 平台选择非常重要,下面的讨论是完全基于“回归终端”这一平台进行,你可以在 https://ctf.xidian.edu.cn/ 找到部署好的平台以及找到开发者联系方式。 这个平台目前并不开源,如果要办赛,要做私有化部署,需要事先获取作者rx授权,当然你可以有其他的选择,比如 GZCTF,也是一个非常现代化 CTF 平台,包括所有必须的功能。 HGAME 选取回归终端一部分原因是其还承担着一些关于回归终端的规模技术验证的任务,您自然可以做出你自己的选择。 但是一些旧平台可能会存在一些能力的缺失,导致无法实现下面我们提到的的一些方案。 打个比方说CTFd,他的原版是没有动态靶机能力的,虽然可以通过插件实现 Docker 容器分发,但实际上靶机调度能力比较受限,比如你想做多个节点的容器调度,他就是做不了。 不过我们也不是非要动态靶机不可,下面的丐版方案会提到,最低成本办赛。 一些假设 要出运维方案我们肯定得先确定一下规模和办赛方案,我们做了一些假设: 报名参赛的人数计作 1000 开赛当天有 30% 的人会蹲点开靶机,合计 300-400 靶机 假设平均一个靶机需要 512MB,CPU内存配比按 1:2 给 流量费用与计算资源费用 1:1 峰值过后靶机数量维持在 100 左右 有了这些个假设,我们就可以开始做预算了 HGAME 赛程相当长,平台开放时间从注册两周,到比赛两周,再到复现一周,合计会有5周时间,相同规模下预算会显著高于那些只办 48h 的赛事。 这里所有的预算仅为事先试算,数据均不可靠 多个方案 最优方案: ALL IN 阿里云 ACK 具体计算细节不提了,如果采用这个方案,预算会来到 2000-3000 这一个位置,最大的好处是他确实稳,同时也能省下很多很多的精力,往上面托管就好了。 ...

February 17, 2025 · BaiMeow