ContextualWisdomLab/wardnet

GitHub: ContextualWisdomLab/wardnet

一个 Rust 实现的 WAF/IDS/AI SOC 网关基线,提供 API 路由、威胁评分、DNSBL 导出和商业化就绪证据能力,面向安全运营控制平面场景。

Stars: 0 | Forks: 0

# WAF IDS AI SOC 面向 ContextualWisdomLab 的 Rust 优先网关与 SOC 控制平面基线。 该项目有意从小规模起步: - Web 管理的 API 网关路由 - 位于同一 Cargo workspace 下的可复用 `waf-ids-core` 领域 crate - 基于威胁指标和 DNSBL 条条的请求评分 - 监控/拦截强制执行模式 - RFC 5782 风格的 DNSBL 区域导出 - SOC 事件和 KPI API - 具备租户/许可证感知能力的商业化就绪 API - 用于实时更新操作的威胁情报源导入状态 - 面向买方尽职调查和支持交接的支持包 API - 威胁情报源新鲜度证据和 SOC 事件 NDJSON 导出 - 用于独立运行的可选 JSON 状态持久化 - 内嵌的管理控制台 它目前并不自诩为一个完整的 WAF、IDS、SIEM 或 SOAR。生产级的 WAF 和 IDS 防护应通过适配经过验证的引擎来实现,例如 OWASP CRS/Coraza 和 Suricata。 ## 完成基线 程序完成基线意味着该二进制文件可以独立运行,在配置了 `WAF_IDS_STATE_PATH` 时,能够在重启后保留操作员管理的路由/威胁/DNSBL 条目/事件,执行监控/拦截决策,导出 DNSBL 记录,并通过 `scripts/smoke.sh` 验证该闭环。 它目前仍不是一个经过强化的面向互联网的部署。在接入生产流量之前,请使用 TLS、身份感知访问、上游白名单和路由回滚程序。 ## 商业化就绪基线 20 亿韩元(2B KRW)的销售就绪基线意味着运行时能够通过 API 证据证明面向买方的试点状态: - `GET /api/commercial/license` 返回租户、版本、许可证、支持和年度合同元数据。 - `POST /api/commercial/license` 使用 `X-Admin-Token` 更新该元数据。 - `POST /api/threat-feeds/import` 导入操作员审查过的威胁指标和 DNSBL 条目。 - `GET /api/commercial/readiness` 返回针对 2B KRW 目标的通过/失败检查和阻碍项。 - `GET /api/threat-feeds/freshness` 根据 TTL 和最后更新时间返回最新/过期的情报源证据。 - `GET /api/events.ndjson` 以换行符分隔的 JSON 格式导出事件,用于 SOC/SIEM 接入测试。 - `GET /api/commercial/evidence-manifest` 返回买方可验证的运行时、文档和部署证据映射。 - `GET /api/support-bundle` 返回健康状况、KPI、许可证、就绪状态和证据计数,且不包含管理员机密信息。 正式验收标准位于 `docs/commercial/20b-krw-sale-readiness.md` 中。 企业产品包证据记录于: - `docs/superpowers/specs/2026-07-02-enterprise-product-package-design.md` - `docs/superpowers/plans/2026-07-02-enterprise-product-package.md` - `docs/superpowers/specs/2026-07-02-feed-freshness-siem-evidence-design.md` - `docs/superpowers/plans/2026-07-02-feed-freshness-siem-evidence.md` - `docs/superpowers/specs/2026-07-03-buyer-evidence-manifest-design.md` - `docs/superpowers/plans/2026-07-03-buyer-evidence-manifest.md` - `docs/figma/enterprise-product-architecture.md` - `docs/product-design/enterprise-operator-workflows.md` - `docs/analytics/enterprise-value-scorecard.md` - `docs/ponytail/2026-07-02-complexity-audit.md` ## 运行 ``` cargo run ``` 打开 `http://127.0.0.1:8080/admin`。 实用的环境变量: - `BIND_ADDR`:监听地址,默认为 `127.0.0.1:8080` - `ADMIN_TOKEN`:可选的写入令牌,用于通过 `X-Admin-Token` 进行管理写入 - `WAF_IDS_STATE_PATH`:可选的 JSON 状态路径。省略时,服务将使用预设的内存状态运行。 - `DNSBL_ORIGIN`:DNSBL 区域源,默认为 `dnsbl.local` - `EVENT_LIMIT`:保留的事件数量,默认为 `1000`;必须大于零 使用持久化本地状态的示例: ``` ADMIN_TOKEN=dev-secret \ WAF_IDS_STATE_PATH=./waf-ids-state.local.json \ DNSBL_ORIGIN=dnsbl.example \ cargo run ``` ## API ``` curl http://127.0.0.1:8080/healthz curl http://127.0.0.1:8080/api/routes curl http://127.0.0.1:8080/api/threats curl http://127.0.0.1:8080/api/dnsbl curl http://127.0.0.1:8080/api/commercial/license curl http://127.0.0.1:8080/api/commercial/readiness curl http://127.0.0.1:8080/api/commercial/evidence-manifest curl http://127.0.0.1:8080/api/threat-feeds curl http://127.0.0.1:8080/api/threat-feeds/freshness curl http://127.0.0.1:8080/api/events.ndjson curl http://127.0.0.1:8080/api/support-bundle curl http://127.0.0.1:8080/dnsbl/zone curl http://127.0.0.1:8080/gateway/demo?q=union%20select ``` 添加一个拦截路由: ``` curl -X POST http://127.0.0.1:8080/api/routes \ -H 'content-type: application/json' \ -H 'x-admin-token: dev-secret' \ -d '{ "id": "api", "path_prefix": "/api", "upstream": "https://example.com", "mode": "block", "enabled": true }' ``` 管理写入采用的是 upsert(插入或更新)操作: - 路由以 `id` 为键 - 威胁指标以 `indicator_type`、`value` 和 `source` 为键 - DNSBL 条目以 `address` 为键 DNSBL 响应代码必须是 `127.0.0.0/8` 内的 IPv4 回环样式值。 导入经过审查的威胁情报源: ``` curl -X POST http://127.0.0.1:8080/api/threat-feeds/import \ -H 'content-type: application/json' \ -H 'x-admin-token: dev-secret' \ -d '{ "feed_id": "misp-seoul", "source": "misp://soc.example", "ttl_seconds": 600, "threats": [{ "value": "credential_dump", "indicator_type": "malware", "severity": "critical", "source": "misp-seoul", "ttl_seconds": 600 }], "dnsbl": [{ "address": "198.51.100.23", "code": "127.0.0.4", "reason": "feed scanner", "source": "misp-seoul", "ttl_seconds": 600 }] }' ``` 部署资产: - `Dockerfile` - `deploy/docker-compose.yml` - `deploy/kubernetes/waf-ids-ai-soc.yaml` ## Workspace - `crates/waf-ids-core`:纯领域模型、验证、upsert、评分、DNSBL 区域格式化、事件保留、威胁情报源新鲜度分类、KPI 快照、商业化就绪快照以及买方证据清单。 - `src/lib.rs`:Axum 管理 API、管理控制台、可选的状态持久化、上游代理、NDJSON 事件导出、证据清单/支持包组装以及 crate 内 HTTP 测试。 - `src/main.rs`:进程配置和服务器启动。 核心部分是一个本地 workspace crate,而不是 git submodule,因为它目前还没有独立的发布周期或外部消费者。 ## 路线图 1. 用于 HTTP 事务评分的 Coraza/OWASP CRS 适配器。 2. Suricata EVE JSON 接入以及与网关事件的关联。 3. STIX/TAXII 和 MISP/OpenCTI 情报源导入作业。 4. 使用 Hickory DNS 的权威 DNSBL 服务模式。 5. 带有针对拦截变更的人工审批门控的 AI SOC 分析师助手。 6. 在 NDJSON 导出契约于买方实验室得到验证后的完整 SIEM 适配器。 ## 验证 ``` cargo fmt --check cargo test --locked --workspace cargo clippy --locked --workspace --all-targets -- -D warnings scripts/smoke.sh ``` 不受信任的输入面(请求评分器、状态反序列化器、admin-token 和 DNSBL 解析器)由覆盖率引导的模糊测试和稳定的属性测试覆盖。请参阅 [`docs/fuzzing.md`](docs/fuzzing.md)。
标签:API网关, CISA项目, DNSBL, IP 地址批量处理, Rust, SOC安全运营中心, WAF, 入侵检测系统(IDS), 可视化界面, 威胁情报, 子域名突变, 开发者工具, 网络流量审计, 请求拦截, 通知系统