安全模型
Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.
本页说明 DumbMonit 保护什么、信任谁、设计如何限制失误造成的损害,以及可以在代码和测试中的 哪里查证。如需报告漏洞,请遵循 安全策略。
DumbMonit 运行在您的网络内部。它存储读取每个监控项所需的凭据(SNMP 团体名、API 令牌、密码), 接收您机器上代理发来的测量数据,并向您配置的地址发送请求。一旦被攻破,这些机密将会泄露, 攻击者也会在被监控的网络中获得立足点。
| 边界 | 另一端是谁 | 信任 |
|---|---|---|
浏览器或脚本到 /api/* | 管理员、操作员和查看者 | 通过会话 cookie 或 API 令牌验证身份;三种角色限制各自可执行的操作。 |
代理到 /api/ingest | 您安装了代理的机器 | 每台机器一个令牌;泄露的令牌可以单独撤销。 |
| 服务器到监控项和服务 | 第三方系统 | 不受信任:响应经过防御性解析,重定向只在同一主机内进行。 |
| 服务器到通知渠道 | 外部服务 | 凭据静态加密,API 绝不返回。 |
| 服务器到 VictoriaMetrics | 回环地址上的子进程,或外部实例 | 内置实例没有身份验证,仅监听回环地址;外部实例由运维人员负责。 |
/data 卷和主机 | 运维人员 | 受信任。控制主机或卷的攻击者不在范围内。 |
采用的安全设计原则
Section titled “采用的安全设计原则”- 最小权限。 容器以无特权用户运行,不带任何 capability,根文件系统只读,并启用
no-new-privileges。三种角色(查看者、操作员、管理员)限制用户可以修改的内容 (crates/server/src/auth/users.rs;测试operator_role_api.rs)。 - 默认安全。 在全新的实例上,首个管理员创建之前,只有健康检查、设置、登录和认证状态
这几个路由会响应(测试
api_open_security_api.rs)。 - 机制精简。 一个二进制文件、一个 SQLite 文件、一个回环子进程,所有客户端只有一个入口:
/api/*。 - 故障安全的默认值。 缺少数据的安全检查结果为
unknown,绝不算作通过;无法访问的监控项 和配置错误是不同的状态。 - 完全仲裁。 一个身份验证中间件(
crates/server/src/auth/middleware.rs)守护所有 API 路由。 - 权限分离。 会话、API 令牌和代理令牌是不同的凭据,作用范围各不相同。
- 纵深防御。 在访问控制之上有静态加密,在 cookie 标志之上有 CSRF 标头,在密码哈希之上有 速率限制。
- 机密不回传。 API 返回
has_secret和credential_kind,绝不返回机密本身;PUT时省略 机密则保留原值。 - 只使用经过验证的密码学。 密码使用 Argon2 哈希,机密使用 AES-256-GCM 加密(
crypto.rs), 双因素认证使用 TOTP 和经过哈希的一次性恢复码,OpenID Connect 使用 state、nonce 和 PKCE。 没有任何自行实现的算法。
按弱点类别划分的对策
Section titled “按弱点类别划分的对策”| 类别(OWASP Top 10 主题) | 措施 |
|---|---|
| 访问控制失效 | 一个身份验证中间件;角色;全新实例拒绝除设置、登录、健康检查和认证状态之外的一切请求。 |
| 加密失败 | 静态使用 AES-256-GCM,密钥保存在数据库之外;Argon2 密码哈希;内置服务器使用明文 HTTP,因此文档中说明了 TLS 反向代理。 |
| 注入 | SQL 通过 sqlx 使用绑定参数;VictoriaMetrics 代理只转发读取查询(tsdb/mod.rs、proxy_read);解析器均有单元测试。 |
| 不安全的设计 | 上文的威胁模型;机密不回传;单一用途的实例。 |
| 安全配置错误 | 加固的 Compose 文件、仅限回环的 VictoriaMetrics、安全策略中的运维加固说明。 |
| 易受攻击的组件 | cargo deny 检查许可证、禁用项和 RustSec 公告;每周对已发布镜像进行 Trivy 扫描;Dependabot;GitHub Actions 按提交固定。 |
| 身份识别和身份验证失败 | 按客户端地址和按账户的登录速率限制(auth/rate_limit.rs)、可选的双因素认证、OpenID Connect,管理员可以重置用户的第二因素并让其退出登录。 |
| 软件和数据完整性 | 代理安装程序会校验所下载二进制文件的 SHA-256;发行镜像由 CI 构建。 |
| 日志记录和监控 | 记录登录和敏感变更的安全日志(auth/audit.rs)。 |
| 服务器端请求伪造 | 集成和通知渠道只跟随到同一主机的重定向,因此监控项无法把请求及其 API 密钥转发到别处。 |
| 跨站请求伪造 | 依赖 cookie 的状态变更请求必须携带 X-Requested-With: DumbMonit 或同源 fetch 元数据,否则返回 403;使用令牌验证的请求不携带 cookie。 |
每次推送和拉取请求都会运行 clippy -D warnings、Rust 测试套件(包括
crates/server/tests/ 下的 API、身份验证和角色测试)、web/tests/ 下的 Web 测试、依赖检查以及
CodeQL 分析。OpenSSF Scorecard 按计划运行。安全修复附带回归测试,并在发行说明中列出其 CVE 或
GHSA 编号。
保证论证给出完整的威胁模型、安全设计论证以及支撑每项主张的证据。
- 内置服务器使用明文 HTTP;请在前面放置 TLS。
- 监控项选项以未加密形式存储。请把机密放在凭据字段中。
- 内置的 VictoriaMetrics 没有身份验证。
- DumbMonit 尚未到达 1.0;路由和字段仍可能变化。