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), 可视化界面, 威胁情报, 子域名突变, 开发者工具, 网络流量审计, 请求拦截, 通知系统