adamson34/zonewarden

GitHub: adamson34/zonewarden

zonewarden 是一款用 Rust 编写的 OT/ICS 网络分段策略验证工具,通过将声明式 IEC 62443 zone/conduit 策略与实际观测的网络流量进行确定性比对,自动检测并报告工业网络安全分段违规问题。

Stars: 0 | Forks: 0

# zonewarden **面向 OT/ICS 网络的 Segmentation-as-code。** 证明工业网络的*实际*流量 符合其*预期的* IEC 62443 zone/conduit 策略 —— 或者获得一份精确且可操作的差异清单,指出不匹配之处。 zonewarden 接收一个声明式的 segmentation **policy**(zones、conduits、允许的 flows)以及一份 **observed network flows**(例如 Zeek `conn.log`)记录,并确定性地将每一个 flow 分类为 允许或违规 —— 包括核心的 **Purdue Level 3.5 IDMZ no-bypass** 检查 —— 然后生成一份 违规报告和一张 Purdue 分层拓扑图。它完全**离线**运行在捕获的文件上,因此 可以安全地在任何地方运行,并且非常容易接入 CI。 用 IEC 62443 的术语来说,它是一个自动化的 **FR5 (Restricted Data Flow)** 一致性检查器。 ## 为什么会有这个项目 OT 网络分段是保护工业流程的首要控制手段,然而它仅仅存在于个人经验、 陈旧的图表以及手动维护的防火墙规则中。没有人能够*证明*网络的实际 行为与预期的策略相符,而且偏移只有在进行评估时——或者发生安全事件时——才会被察觉。 目前的工具环境中有配置验证工具、运行时执行平台和 OT 监控 套件,但是**没有开放的、声明式的、基于 git 进行版本控制的工具来验证 62443 zone/conduit 策略 与观察到的 flows。** zonewarden 填补了这一空白。 ## 状态 🚧 **早期开发中。** 完整的规范和设计已完成;实施正在进行中。 | 阶段 | 状态 | |-------|--------| | 规范敲定(领域模型、PRD、行为契约、架构) | ✅ 完成 | | Story 拆解(epics、stories、waves、遗留场景) | ✅ 完成 | | 测试优先实现 (Rust) | 🔜 进行中 | ## 它是如何构建的 这个项目是一次刻意的**严格的、规范驱动的开发**实践。在编写任何 代码之前,问题已经被端到端地建模,并且设计经过了压力测试: - **形式化的 L2 领域模型** —— 包含实体、20 个领域不变量、33 个边缘场景、通用语言 —— 通过 **8 轮对抗性审查**进行了强化(每一个发现都被跟踪并解决)。 - **带有 44 个行为契约的 L3 PRD** (`BC-S.SS.NNN`),每一个都有可测试的前置/后置条件和 规范的测试向量,可完全追溯到领域不变量。 - **一种架构**,带有架构决策记录和明确的 **pure-core / effectful-shell 边界**,在 Cargo crate 层级强制执行 —— 因此对正确性至关重要的逻辑是一个纯粹的库, 可以进行**形式化验证** (Kani) 和属性测试。 - **10 个验证属性**,将不变量映射到证明方法 (Kani / proptest / fuzz)。 - **跨越 5 个 waves 的 17 个具有依赖顺序的 stories**,每一个验收标准都追溯到某个契约。 完整的文档记录位于 [`.factory/`](.factory/) —— 包括设计决策 ([`specs/architecture/decisions/`](.factory/specs/architecture/decisions/)) 以及完整的 对抗性审查历史 ([`cycles/`](.factory/cycles/))。 ## 设计概览 ``` Policy (zones, conduits) ─┐ ├─► validate ─► resolve ─► classify ─► aggregate ─► report + diagram Observed flows (adapter) ─┘ ``` - **确定性与离线** —— 相同的输入总是产生字节完全相同的输出;不需要网络访问。 - **默认拒绝** —— 任何未被 conduit(或 zone 内部)明确允许的通信都是违规。 - **感知 OT 协议,真正的启发式** —— 识别 Modbus / DNP3 / EtherNet-IP / S7comm / BACnet / OPC UA,并对每一次推断提供透明的来源溯源。 - **可插拔的真实数据源** —— 优先支持 Zeek `conn.log`;NetFlow/IPFIX 和防火墙配置在规划路线图中。 ## 技术 - **Rust** —— 一个纯粹的 `zonewarden-core` 库 crate(验证目标)和一个轻薄的 `zonewarden` CLI 二进制文件。 - 验证:**Kani**(证明)、**proptest**(属性)、**cargo-fuzz**(解析器)、**cargo-mutants**(变异测试)。 ## 标准 - IEC 62443-3-2(zones & conduits;FR5 Restricted Data Flow) - Purdue Enterprise Reference Architecture(层级 0–5,IDMZ 位于 3.5) ## 许可证 [MIT](LICENSE)。
标签:LNA, PKINIT, Rust, 可视化界面, 工控安全, 策略合规, 网络安全, 网络流量分析, 网络流量审计, 运维自动化, 通知系统, 防御绕过, 隐私保护