Перейти к содержимому

安全模型

Это содержимое пока не доступно на вашем языке.

本页说明 DumbMonit 保护什么、信任谁、设计如何限制失误造成的损害,以及可以在代码和测试中的 哪里查证。如需报告漏洞,请遵循 安全策略。

DumbMonit 运行在您的网络内部。它存储读取每个监控项所需的凭据(SNMP 团体名、API 令牌、密码), 接收您机器上代理发来的测量数据,并向您配置的地址发送请求。一旦被攻破,这些机密将会泄露, 攻击者也会在被监控的网络中获得立足点。

边界另一端是谁信任
浏览器或脚本到 /api/*管理员、操作员和查看者通过会话 cookie 或 API 令牌验证身份;三种角色限制各自可执行的操作。
代理到 /api/ingest您安装了代理的机器每台机器一个令牌;泄露的令牌可以单独撤销。
服务器到监控项和服务第三方系统不受信任:响应经过防御性解析,重定向只在同一主机内进行。
服务器到通知渠道外部服务凭据静态加密,API 绝不返回。
服务器到 VictoriaMetrics回环地址上的子进程,或外部实例内置实例没有身份验证,仅监听回环地址;外部实例由运维人员负责。
/data 卷和主机运维人员受信任。控制主机或卷的攻击者不在范围内。
  • 最小权限。 容器以无特权用户运行,不带任何 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。 没有任何自行实现的算法。
类别(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;路由和字段仍可能变化。