nickatnight96/ir-flyaway-kit

GitHub: nickatnight96/ir-flyaway-kit

一款用于在多节点 ESXi 环境中快速离线部署隔离 DFIR 取证分析环境的自动化工具。

Stars: 0 | Forks: 0

# ir-flyaway-kit 可在多节点 ESXi 便携式工具包上快速搭建干净、**隔离且带有快照的 DFIR 分析环境**—— 离线、在到达事件现场后几分钟内完成。 在基地提前构建黄金模板;在现场,通过单个清单文件在整个工具包的 ESXi 节点上进行克隆。现场无需互联网。 ## ⚠️ 在进行任何操作之前 —— 密钥 - **切勿提交凭据或访问令牌。** `.gitignore` 会屏蔽常见的 敏感文件格式(`*.env`、`*.token`、密钥),但请将任何敏感信息视为具有极高危险性。 如果令牌泄露到了 git 历史记录中,请**立即撤销并重新签发**。 - vCenter/ESXi 凭据必须来自**环境变量、ansible-vault 文件或命令行提示符**—— 切勿存储在清单文件本身中(`kit.yaml` 可以指向某个 vault 但不包含任何密钥,因此它是安全的,可以安全提交)。 - 专为部署在私有或物理隔离的 GitLab 上而设计。请参阅 [发布到内部 GitLab](#publishing-to-an-internal-gitlab)。 ## 功能说明 | 命令 | 作用 | |---|---| | `flyaway validate` | 结构化校验清单文件(离线)。 | | `flyaway preflight` | 校验工具链 + 工具包的连通性(只读)。 | | `flyaway doctor` | 带身份认证的部署前健康检查 —— 集群/DRS/vSAN、维护模式、模板、基础架构 VM。 | | `flyaway net-setup` | 创建工具包的隔离端口组(一次性引导操作)。 | | `flyaway deploy` | 跨宿主机克隆模板、连接网络、生成快照并开机。使用 `--dry-run` 进行预览。 | | `flyaway status` | 列出某个案例已部署的 VM。 | | `flyaway snapshot` | (重新)为某个案例的 VM 生成快照。 | | `flyaway template` | 列出/推送/注册/移除黄金模板 —— `push --replace` 是安全的刷新方式。 | | `flyaway power` | 开启/关闭某个案例 VM 的电源 —— 默认执行客户机关闭,仅在指定 `--force` 时强制断电。 | | `flyaway revert` | 将某个案例的 VM 还原到干净基线(或指定的)快照。 | | `flyaway rm` | 移除单个 VM —— 销毁,或使用 `--unregister` 保留其文件。 | | `flyaway teardown` | 关闭电源并销毁某个案例的 VM。 | | `flyaway journal` | 显示/校验某个案例的取证保管链日志 —— 哈希链式结构,在每次状态更改命令时自动记录(可检测内部篡改;需与 WORM 介质或 `FLYAWAY_JOURNAL_KEY` 配合使用)。 | 部署**按宿主机并行执行** —— 实际耗时取决于最慢的单个节点,而非所有节点的总和。 ## 架构 两阶段模型:**提前构建**(黄金模板,在基地有互联网时一次性完成) → **离线部署**(在现场进行本地克隆)。该工具包支持: - **模式 B —— vCenter**(推荐):提供完整的 API、Content Library 和分布式 交换机。由 `pyvmomi` 驱动。 - **模式 A —— 独立/免费版 ESXi**(备选):使用 `ovftool` + `ssh`。适用于 API 为只读的场景。 ## 文档 **[完整文档索引 → docs/index.md](docs/index.md)** —— 按读者角色( 操作员 / 工具包构建者 / 开发者)进行分类,并包含坦诚的当前限制清单。 | 如果你想…… | 请阅读 | |---|---| | 从零开始首次部署 | [入门指南](docs/getting-started.md) | | 了解设计理念 | [架构](docs/architecture.md) · [网络规划](docs/network-plan.md) | | 在安全事件现场操作 | [实战手册](docs/runbook.md) | | 查找命令或 YAML 键 | [CLI 参考](docs/cli-reference.md) · [清单文件参考](docs/manifest-reference.md) | | 修复故障 | [故障排除](docs/troubleshooting.md) | | 构建镜像 | [黄金模板](scripts/build-templates/README.md) · [分流 ISO](scripts/build-iso/README.md) | | 在正式部署前进行验证 | [实验室验证](docs/lab-validation.md) —— **关键关卡**;可消除所有 `VERIFY` 标记 | | 贡献代码 / 报告问题 | [贡献指南](CONTRIBUTING.md) · [安全指南](SECURITY.md) | ## 仓库布局 ``` config/kit.example.yaml the manifest — the kit + the environment to stamp out src/flyaway/ the tool (config model, planner, CLI, backends) backends/vcenter.py Pattern B — pyvmomi backends/standalone.py Pattern A — ovftool + ssh scripts/preflight.sh host-side readiness check scripts/build-templates/ Packer configs to build the golden images scripts/build-iso/ forensic triage/acquire live-boot ISO (bare-metal side) docs/ architecture, network plan, field runbook tests/ offline tests ``` ## 前置条件 - Python 3.9+ 且执行 `pip install pyyaml`(核心组件)。 - **模式 B:** 在部署宿主机上执行 `pip install pyvmomi`;需要已授权的 ESXi/vCenter。 - **模式 A:** 环境变量 PATH 中需包含 `ovftool` 和 `ssh`;在每个 ESXi 宿主机上启用 SSH(密钥认证)。 ## 快速开始 ``` # 0) 一次性操作:构建 golden templates(参见 scripts/build-templates/) # 1) 描述你的 kit cp config/kit.example.yaml kit.yaml && $EDITOR kit.yaml # 2) 检查它(离线) python3 -m flyaway validate -c kit.yaml python3 -m flyaway deploy -c kit.yaml --case IR-2025-014 --dry-run # 3) 在 kit 网络上:通过 env 提供凭据,然后开始 export FLYAWAY_VC_USER='administrator@vsphere.local' read -rs FLYAWAY_VC_PASS; export FLYAWAY_VC_PASS # prompts, nothing echoed python3 -m flyaway preflight -c kit.yaml python3 -m flyaway net-setup -c kit.yaml # first time only python3 -m flyaway deploy -c kit.yaml --case IR-2025-014 # 4) 当 engagement 结束时 python3 -m flyaway teardown -c kit.yaml --case IR-2025-014 ``` ### 离线模拟(无需 ESXi) 在笔记本电脑上演练完整的生命周期 —— 适用于培训、演示和 CI: ``` python3 -m flyaway deploy -c kit.yaml --case IR-2025-014 --simulate python3 -m flyaway status -c kit.yaml --case IR-2025-014 --simulate python3 -m flyaway teardown -c kit.yaml --case IR-2025-014 --simulate --yes ``` `--simulate` 使用内存后端(状态保存在 `.flyaway-sim-state.json` 中,已被 git 忽略) 且不会对任何 hypervisor 进行实际操作。 安装为控制台脚本(使用 `flyaway ...` 代替 `python3 -m flyaway`): `pip install -e .` ## 凭据 | 变量 | 使用方 | |---|---| | `FLYAWAY_VC_USER` / `FLYAWAY_VC_PASS` | 模式 B (vCenter) | | `FLYAWAY_ESXI_USER` / `FLYAWAY_ESXI_PASS` | 模式 A (ESXi) | | `FLYAWAY_VAULT_FILE` / `FLYAWAY_VAULT_PASS` | 可选的 ansible-vault 凭据(也可使用 `--vault-file` 或清单中的 `credentials:`) | 解析优先级按字段为 **环境变量 → vault → 提示符**(密码绝不回显);仅在配置后 才会调用 vault,且任何解密内容都不会写入磁盘。对于 工具包自签名的 VCSA 证书,请将 `vcenter.ca_bundle` 指向工具包的 CA,而不是禁用 TLS 校验。 ## 发布到内部 GitLab 对于私有或物理隔离的 GitLab,请通过 HTTPS 使用 `git` 和访问令牌进行推送。 在一台可以连接到该实例的机器上执行: ``` # 首先在 UI 中创建空项目,或通过 API(api scope)创建 git remote add origin https://gitlab.example.internal//ir-flyaway-kit.git git config --global credential.helper osxkeychain # store token in Keychain git push -u origin main # username: # password: <在提示符处粘贴你的 write_repository-scoped token> ``` - 对于团队共有的工具,推荐使用 **Group/Project Access Token**(`write_repository` 范围)—— 它不会受人员调动影响。**请在命令行提示符处粘贴,切勿放在文件或聊天中。** - **内部 CA:** 如果 git 拒绝服务器证书,请将 git 指向实例的 CA 证书包:`git config --global http.sslCAInfo /path/to/ca-bundle.pem`。 ## 状态 `v0.1.x` —— 完整的生命周期已实现,并已通过内存模拟器进行了测试:配置模型与规划器,CLI(`validate`/`preflight`/`doctor`/ `net-setup`/`deploy`/`status`/`snapshot`/`template`/`power`/`revert`/`rm`/`teardown`/ `journal`),`--dry-run`/`--simulate`,集群调度(`placement.mode`),将 NIC 连接 到现有的 vDS 分布式端口组,`template push --replace`/`list`/`register`/`rm`, `ip: auto` 静态 IP 客户机定制(Linux 模板;Windows 需要 Sysprep),vault 凭据(环境变量 → vault → 提示符),配置文件覆盖,以及哈希链式的取证保管链 日志。实时后端(`vcenter.py`、`standalone.py`)、Packer 构建和分流 ISO 仍带有 `VERIFY` 标记,且**尚未针对真实的 vSphere 进行过实验室验证**—— 在工具包正式发布前,请按照 [docs/lab-validation.md](docs/lab-validation.md)(阶段 A–E)进行操作。在实际投入使用前,请结合贵组织的变更控制和授权(例如 ATO/RMF)要求进行审查。
标签:ESXi, 内存分配, 数字取证与应急响应, 特权提升, 自动化部署, 虚拟化环境, 运维工具, 逆向工具