QuantumDef1337/RuleVis

GitHub: QuantumDef1337/RuleVis

RuleVis 是一个多租户 Wazuh 规则智能平台,通过交互式依赖图帮助安全团队可视化、分析和管理 Wazuh 规则集的健康状况与合规覆盖。

Stars: 0 | Forks: 0

# RuleVis — Wazuh 的多租户规则智能平台 RuleVis 将您的 Wazuh 规则集转化为动态、交互式的依赖图——并将其封装在一个完整的多租户平台中:RBAC、MFA、审计日志、实时 Wazuh/GitHub 同步、webhook、公共 API 以及 OIDC 单点登录。它帮助安全团队可视化规则关系、发现结构性问题、追踪 MITRE ATT&CK 和合规性覆盖情况,并通过真实的审计跟踪管理规则变更——所有这些都在您所需的任意数量的隔离租户工作区中完成。 专为 SOC 分析师(了解规则的实际作用及其原因)、SOC 管理员(健康/覆盖报告、变更审计)和平台工程师(多租户管理、集成)打造。 ![主仪表盘](https://static.pigsec.cn/wp-content/uploads/repos/cas/96/96a181e3e6eccf52470e8b6102ffa942d264f1564d9e8edee36378b70d6c7aff.png) ## 功能 ### 规则智能 * **交互式图表可视化** — 力导向、分层和径向布局,在 Canvas 上渲染以实现大规模下的高性能。 * **规则详情面板** — 对任何规则进行通俗易懂的拆解:严重程度、父规则、子规则,以及触发警报必须匹配的每一个条件,自上而下排列。 * **依赖分析** — 将父/子关系(`if_sid`、`if_group`、`if_matched_sid`、`if_matched_group`)作为有向边,并进行断链和重复 ID 检测。 * **规则健康仪表盘** — 禁用的父规则、孤儿规则、MITRE ATT&CK 覆盖率、合规性标签覆盖率、依赖链深度。 * **规则 ID 热力图** — 查看哪些 ID 范围被大量使用,哪些可用于新的自定义规则。 * **对比** — 对比两个规则集或 manager 快照的差异。 * **产品映射** — 将规则文件组织成逻辑产品(例如“Windows”、“FortiGate”),并提供每个产品的规则计数。 ![规则可视化工具](https://static.pigsec.cn/wp-content/uploads/repos/cas/ce/ce5a9a97de8e96875212c239038b1b47b7f5fdae2942e0d3e2c753203deb1c2f.png) ### 多租户与访问控制 * **隔离的租户工作区** — 每个工作区都有各自的规则、产品、manager、GitHub 源、webhook 和成员。 * **RBAC** — `tenant_admin` / `analyst` / `viewer` 角色,加上针对特殊例外的逐用户权限覆盖,以及一个全平台超级管理员层。 * **直接或基于邀请的用户创建** — 用户名、可选电子邮件、密码、角色、权限覆盖、强制重置密码和要求注册 MFA,全部集中在一个表单中完成。 ![团队与访问](https://static.pigsec.cn/wp-content/uploads/repos/cas/3d/3d779d84304e3d683c76a2a1622c5589ab4a312e68accb5567f2c7ee92c326a9.png) ### 安全性 * **基于 TOTP 的 MFA**,支持二维码注册和一次性备用代码。 * **账户锁定**和**基于 IP 的登录速率限制**(后者由数据库支持,而不是进程内计数器——它在多个 worker 进程或主机下依然有效)。 * **静态加密密钥** — Wazuh manager 密码和 GitHub token 在接触磁盘之前都会使用 Fernet 进行加密。 * **审计日志和删除日志** — 记录每一项管理操作,包含操作者、IP 地址,以及(针对规则同步的)完整的增加/删除/更改差异对比。 * **登录活动监控**,带有可疑活动标记。 * **OIDC 单点登录** — 适用于 Okta、Azure AD/Entra ID、Google Workspace、Auth0、Keycloak 或任何标准的 OIDC 身份提供商。 ### 集成 * **实时 Wazuh manager 同步** — 连接 manager 的 REST API,按需同步或在一定时间间隔自动同步,每次同步都有完整的变更差异对比。 * **GitHub 源同步** — 直接从公开或私有仓库拉取规则文件。 * **Webhook** — 将规则变更和删除事件推送到 Slack、Microsoft Teams 或任何 JSON endpoint(ServiceNow、Jira、n8n、自定义),并使用 HMAC 签名。 * **公共 API** — 用于程序化访问的、可限定作用域和可撤销的 API key,每个 key 对应一个租户和一个角色。 ![工作区设置](https://static.pigsec.cn/wp-content/uploads/repos/cas/b6/b6644316c458bde6ae3b86db5f1c50a0fd748d3156dd1c53caec69bfbb0ea1d8.png) ## 安装 ``` git clone https://github.com/QuantumDef1337/RuleVis.git cd RuleVis pip install . ``` 所有依赖项(Flask、networkx、waitress、SQLAlchemy、cryptography、python-jose)都会通过 `pyproject.toml` 自动安装——在 Windows、Linux 或 macOS 上无需手动处理依赖项。前端已预编译(`src/internal/static/dist/`),因此在运行应用时**不需要 Node.js**。 仅当您将 RuleVis 指向 Postgres 而不是默认的 SQLite 时才需要(见下文): ``` pip install .[postgres] ``` ## 使用方法 ``` rulevis ``` 这会启动服务器,在默认浏览器中打开 `http://localhost:5000/`,并引导您完成第一个管理员账户的创建。接下来,所有操作——连接规则源、创建租户、邀请用户——都在应用内完成。 您可以选择在启动时从本地规则目录为第一个租户填充初始数据: ``` rulevis --path /var/ossec/ruleset/rules,/var/ossec/etc/rules ``` ![登录](https://static.pigsec.cn/wp-content/uploads/repos/cas/58/58bd4efdfe7bd8b9dc54816a59e79f5ed2b59e31eefe6176c63f49d0bb7618e4.png) ## 数据库 默认情况下,RuleVis 使用位于 `~/.rulevis/rulevis.db` 的本地 SQLite 文件——无需配置,开箱即用。对于多进程或多主机部署,请将其指向 Postgres: ``` export RULEVIS_DATABASE_URL="postgresql+psycopg2://user:pass@host/rulevis" ``` 身份/授权层中的每一个查询在编写时都兼顾了在两种后端上的可移植性。 ## 重新构建前端 仅当您要修改 `web/src` 时才需要——运行 RuleVis 本身并不需要此操作。 ``` cd web npm install npm run build # outputs to ../src/internal/static/dist/ ``` ## 数据位置 所有应用数据都位于 `~/.rulevis/` 目录下: | 路径 | 内容 | |---|---| | `rulevis.db` | 身份/授权 — 用户、租户、角色、审计日志(或您配置的外部数据库) | | `secret_key` | 会话签名密钥,在首次运行时生成一次 | | `tenants//config.json` | 租户专属的产品、manager、GitHub 源、webhook、SSO 配置 | | `tenants//cache//` | 从已连接的 Wazuh manager 镜像过来的规则文件 | | `tenants//cache/gh-/` | 从 GitHub 源镜像过来的规则文件 | | `tenants//uploads/` | 手动上传的规则 XML | ## 日志 RuleVis 遵循操作系统惯例,将诊断日志写入用户特定的位置: | 平台 | 日志文件位置 | |---|---| | Windows | `%LocalAppData%\rulevis\Logs\rulevis.log` | | macOS | `~/Library/Logs/rulevis/rulevis.log` | | Linux / BSD | `$XDG_STATE_HOME/rulevis/rulevis.log`(回退至 `~/.local/share/rulevis/logs/rulevis.log`) | 可以安全删除——下次运行时会自动创建一个新文件。 ## 测试 ``` pip install .[dev] pytest tests/ ``` 每个测试都针对一个隔离的一次性数据库运行(在每个测试中将 `HOME`/`USERPROFILE` 重定向到临时目录)——绝不会触及真实数据。 ## 架构 - **后端**:Flask,在生产环境中通过 [waitress](https://github.com/Pylons/waitress) 提供服务。 - **身份/授权**:基于 SQLite 或 Postgres 的 SQLAlchemy Core。 - **租户配置**:磁盘上的扁平化 JSON,在结构上与最初的单租户设计保持一致。 - **图形引擎**:[networkx](https://networkx.org/) `MultiDiGraph` — 规则是节点,`if_sid`/`if_matched_sid`/`if_group`/`if_matched_group` 是边。 - **前端**:React + TypeScript + Vite,被构建为由 Flask 直接提供服务的静态资源。 请参阅 [`docs/RULEVIS_PRODUCT_GUIDE.md`](docs/RULEVIS_PRODUCT_GUIDE.md) 获取完整的架构参考、数据模型、逐模块拆解,以及每个主要功能背后的设计逻辑。 ## 关于规则条件解析的说明 虽然 Wazuh 文档将 `` 定义为另一种创建父子关系的条件,但在任何内置规则中都没有使用它,因此在这里被特意省略了。 ``(*首次出现*)也特意不被视为父子关系,因为它并不会创建这种关系。 ## 致谢 RuleVis 最初是 Zafer Balkan 的 [zbalkan/rulevis](https://github.com/zbalkan/rulevis) 的一个分支,该项目引入了核心的规则解析引擎和力导向图可视化。本项目在很大程度上建立在那个基础之上——请参阅 [`LICENSE`](LICENSE) 获取完整的归属说明。 ## 许可证 MIT — 请参阅 [`LICENSE`](LICENSE)。
标签:Mutation, SOC分析, Streamlit, Wazuh, 云计算, 可视化, 安全运营, 扫描框架, 规则引擎, 访问控制, 逆向工具