安全竞赛基础设施自动化框架

Laforge 能够快速开发用于信息安全竞赛的基础设施。通过一种简单直观的配置语言,Laforge 管理依赖图和状态,并实现高效的远程协作。Laforge 引擎使用自定义加载器进行多维、非破坏性的配置叠加。一个很好的类比是 Docker —— 当你构建 Docker 容器时,它是逐层构建的。正是这种强大的能力启发我们构建了 Laforge。这无疑是一个小众项目,但我们确实为它找到了不可思议的用途。
注意 —— 目前我们处于 v0.0.1 的预览版本。API 可能会发生变化(尽管我会尽量最小化变化),并且你可能会遇到 bug。欢迎提交 issue,更好的是,给我发一个 pull request :)
Laforge 是一个框架,让你能够以可扩展、协作且有趣的方式设计和实施安全竞赛!你用 Laforge 配置语言 编写配置,并使用 CLI 工具检查、验证、构建并连接到远程基础设施。从历史上看,它主要支持 Terraform 作为其“后端”(生成复杂的 Terraform 配置),但这在未来几周和几个月内将迅速改变。Laforge 目前为全国大学生渗透测试竞赛 (National Collegiate Penetration Testing Competition) 的所有基础设施管理提供动力,并已支持部署超过 1400 个独立节点的竞赛环境。
三个原因:
没有必要就这个或那个工具展开口水战。坦率地说,我们喜欢这些工具。我们最大的抱怨是,由于它们极其碎片化,很难在任何一个工具上真正变得 擅长。我们喜欢 Terraform,它从一开始就是我们的主要后端。
我们已经使用 LaForge 的各种迭代版本为近 30 个队伍生成了包含数百台主机的竞赛环境。简而言之,它可以扩展到你的想象力(以及预算/资源)允许的规模。此外,我们已经在超过 15 名志愿者开发者组成的团队中使用该工具,每位开发者负责自己的组件,并在最新版本中吸收了这些反馈。
根据环境的复杂程度,构建 LaForge 输出可能需要几秒或几分钟。最终,你将花费更多时间在你选择的环境中(如 Terraform 或 Vagrant)启动系统,而不是生成相关配置。
如果你所说的生产环境是指开发现实的竞赛环境,LaForge 已经以“生产”状态使用了三年多。如果你指的是贵公司或组织的实时系统,它可能也能很好地工作,但使用风险自负。
$ go get github.com/gen0cide/laforge/cmd/laforge
laforge configure
laforge init
laforge example <model>
build 子命令configure 子命令deps 子命令download 子命令导师、贡献者和 Laforge 的好朋友们
dump 子命令env 子命令example 子命令explorer 子命令init 子命令query 子命令serve 子命令shell 子命令status 子命令upload 子命令Builder 接口设计BuildEngine 完成BuildIssue 错误类型validations 包null 构建器实现(目前作为规范)