Ir al contenido

安全评分

Esta página aún no está disponible en tu idioma.

安全评分是一个可选的 A 到 F 等级(以及 0 到 100 的分数),显示在那些有几项检查能提供有用信息的监控项旁边:装有代理的 Linux 和 Windows 主机、Proxmox VE 和 Proxmox Backup Server、Synology、OPNsense、网站和 Active Directory。其他监控项不显示任何内容。

评分默认关闭。管理员在设置 → 账户和安全 → 安全评分中启用它。启用后:

  • 每个被评分的监控项在监控项列表中都会获得一个带有其字母的小盾牌徽章,并在其页面上获得一个带有分数的 Security 徽章;
  • 点击徽章会打开监控项的报告:哪些失败(附证据和修复方法)、哪些通过、在这类监控项上提高分数的步骤,以及指向下方相应章节的链接。

关闭后,徽章会隐藏,周期性计算停止,dumbmonit_security_score 序列也不再写入。

DumbMonit 在计算评分时从不向监控项额外询问任何内容。检查读取收集器已经记录的最新值(回溯 6 小时),因此评分不会给监控项带来任何开销。

每项检查都有类别(暴露面、补丁、身份验证、加密、备份、配置)、作为其权重的严重程度(critical 10、high 6、medium 3、low 1)、结果(通过、失败,或数据未被收集时的未知)、证据、修复方法,以及它所依据的厂商页面的链接。

分数 = 100 × (通过检查的权重)÷ (通过 + 失败检查的权重)。未知的检查会显示,但从不计入:分数不应因为监控账户缺少某项权限而下降,也不应因为什么都不知道而上升。所有检查都未知的监控项不评分。

等级分数评语
A90–100强
B75–89良好
C60–74一般
D40–59弱
F0–39差

一项失败的关键检查会把等级限制在 C,无论分数多少。

评分开启期间,服务器每 15 分钟重新计算一次,并将其存储为 dumbmonit_security_score{target="<id>"}(失败检查的数量存储为 dumbmonit_security_checks_failed)。两条内置规则使用它:Security score dropped(比过去 24 小时的最佳值低 10 分或更多)和 Security score low(低于 40)。参见告警规则。

装有代理的机器。SSH 和防火墙检查需要与服务器同一版本的代理;使用较旧的代理时,这些检查为未知。

检查严重程度数据
Security updates installedhigh待安装的安全更新(在包管理器能区分的地方)
No pending updateslow待安装的更新
No reboot pendingmedium需要重启
SSH root login with a password refusedhigh来自 sshd -T 的 PermitRootLogin(prohibit-password 通过)
SSH accepts keys onlymediumPasswordAuthentication,以及启用 UsePAM 时的 KbdInteractiveAuthentication
Host firewall filters inbound traffichigh丢弃或拒绝的 nftables 或 iptables input 链
SELinux enforcingmediumSELinux 模式(没有 SELinux 的地方为未知)
Container images up to datemedium镜像仓库中有更新的镜像(仅限有容器时)
No container image older than 180 dayslow镜像存在时间(仅限有容器时)

改进方法:

  1. 安装待安装的安全更新,然后启用自动安全更新:Debian 和 Ubuntu 上用 unattended-upgrades,Fedora 和 RHEL 上用 dnf-automatic。
  2. 在内核或库更新后重启。
  3. 确认您的 SSH 密钥可用,然后在 /etc/ssh/sshd_config 中设置 PermitRootLogin no、PasswordAuthentication no 和 KbdInteractiveAuthentication no,并重新加载 sshd。
  4. 启用会丢弃未经请求的入站流量的主机防火墙:Ubuntu 上用 ufw enable,Fedora 和 RHEL 上用 firewalld,其他系统用 nftables 规则集。
  5. 在发行版提供 SELinux 的地方保持其为 enforcing;定期拉取更新的容器镜像。

来源:CIS Controls、 sshd_config(5)、 Red Hat — Using SELinux。

装有 Windows 代理且与服务器同一版本的机器(从注册表读取;较旧的代理不会报告其中任何一项)。

检查严重程度数据
Windows Firewall on for every profilehigh域、专用和公用配置文件(组策略优先)
No reboot pendingmediumWindows 更新或组件维护正在等待重启
Remote Desktop requires Network Level Authenticationhigh远程桌面关闭时通过
SMBv1 disabledhighSMBv1 服务器设置

改进方法:

  1. 安装 Windows 更新(设置 → Windows 更新),并在提示时重启。
  2. 为域、专用和公用配置文件保持 Windows Defender 防火墙开启。
  3. 如果启用了远程桌面,请要求网络级别身份验证(NLA),并通过 VPN 访问,绝不要直接从互联网访问。
  4. 移除 SMBv1:Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol。

来源:Windows Firewall、 SMBv1。

检查严重程度数据
Security updates installedhigh每个节点待安装的安全更新(令牌需要 Sys.Modify,否则为未知)
Proxmox VE packages up to datemedium每个节点可升级的 Proxmox 软件包
Running the installed kernelmedium已安装的内核比正在运行的更新
No test repository in usemedium已启用的标准软件源
Package repositories correctly configuredmediumProxmox VE 对软件源报告的错误和警告
Enterprise repository subscriptionlow每个节点的订阅状态
Web interface certificate valid for 14+ daysmedium节点证书到期时间
Every guest is in a backup jobhigh未被任何备份任务选中的客户机
Backup jobs succeedhigh每个备份任务的最近一次结果

改进方法:

  1. 使用您有权使用的软件源:有订阅用 enterprise,否则用 pve-no-subscription;在重要节点上绝不使用 pvetest。
  2. 在节点的 Updates 面板中安装更新,然后重启进入新内核。
  3. 把每台虚拟机和容器都放入备份任务,最好备份到 Proxmox Backup Server,并修复任何失败的任务。
  4. 用 ACME 证书替换自签名的网页证书。

来源:System Software Updates、 Package Repositories、 Backup and Restore。

Proxmox Backup Server { #proxmox-backup-server }

Section titled “Proxmox Backup Server { #proxmox-backup-server }”
检查严重程度数据
System updates installedhigh待安装的更新(需要 /system 上的 Sys.Modify)
Running the installed Backup Server versionmedium仍在运行升级前版本的守护进程
Verify job scheduledhigh验证任务的数量
Prune job scheduledmedium清理(prune)任务的数量
Backups copied elsewhere (sync or tape)medium同步和磁带备份任务(3-2-1 规则)
Garbage collection clean, no bad chunkshigh每个数据存储最近一次 GC 结果和损坏的数据块
Certificate valid for 14+ daysmedium证书到期时间

改进方法:

  1. 安装更新,并在内核或 proxmox-backup 变化时重启。
  2. 在每个数据存储上安排一个验证任务和一个清理任务。
  3. 在别处保留一份副本:同步到第二台 Backup Server 的任务,或磁带。
  4. 为网页界面使用 ACME 证书。

来源:Maintenance tasks、 Remotes and sync。

检查严重程度数据
DSM 7 or laterhighDSM 版本
DSM up to datehigh有可用的 DSM 更新(仅限管理员账户)
Built-in admin account disabledmediumadmin 账户的状态(仅限管理员账户)
Auto Block enabledmedium自动封锁设置(仅限管理员账户)
DSM firewall enabledmedium防火墙设置(仅限管理员账户)
Hyper Backup task configuredmediumHyper Backup 任务数量
Hyper Backup tasks succeedhigh每个任务的最近一次结果

这四项设置每小时读取一次,并且只在 DumbMonit 使用管理员账户登录时读取;使用普通账户时它们保持未知,不计入。两步验证和 HTTPS 重定向不会被读取。

改进方法:

  1. 运行适用于您型号的最新 DSM 7 版本,并让 DSM 自动安装重要更新(控制面板 → 更新和还原)。
  2. 禁用内置的 admin 账户;使用受两步验证保护的个人管理员账户登录。
  3. 启用自动封锁和防火墙(控制面板 → 安全性),并且不要把 DSM 端口转发到互联网:请使用 VPN。
  4. 用 Hyper Backup 备份到另一个监控项或云端目标,并修复任何失败的任务:RAID 和快照不是备份。

来源:Product support status、 How to add extra security to your Synology NAS。

检查严重程度数据
Firmware updates installedhigh待安装的软件包更新(在 OPNsense 检查更新之前为未知)
On the current major release seriesmedium有新的主版本系列可用
No reboot pending after an updatemedium需要重启
Packet filter enabledcriticalpf 状态

改进方法:

  1. 在 System → Firmware → Status 中检查更新,安装后在提示时重启。
  2. 新的主版本发布后及时升级。
  3. 保持数据包过滤器开启。
  4. 只允许从 LAN 或 VPN 访问网页界面和 SSH,绝不要从 WAN 访问。

来源:OPNsense updates、 OPNsense firewall。

适用于协商 TLS 的 HTTP(S) 和 TLS 监测,以及 Website health & SEO 监控项。纯 HTTP 监测没有评分。

检查严重程度数据
Certificate valid for 14+ dayshigh距到期的天数(HTTP(S) 和 TLS 监测)
Certificate chain trustedhigh证书链验证(HTTP(S) 和 TLS 监测)
TLS 1.3 negotiatedlow协商的协议版本(HTTP(S) 和 TLS 监测)
Served over HTTPShigh重定向后的最终地址(Website health)
Strict-Transport-Security headermediummax-age 大于 0 的响应头
X-Content-Type-Options: nosnifflow响应头的值
Protected against clickjackinglowX-Frame-Options 或 CSP 的 frame-ancestors
Content-Security-Policy headerlow已强制执行的策略(仅报告模式不算)

只在 HTTPS 响应上读取响应头。

改进方法:

  1. 仅通过 HTTPS 提供网站,并把纯 HTTP 重定向到 HTTPS。
  2. 自动续期证书(ACME,例如 Let’s Encrypt),并提供完整的证书链。
  3. 在 Web 服务器或反向代理中添加安全响应头:Strict-Transport-Security、X-Content-Type-Options: nosniff,以及带有 frame-ancestors 的 Content-Security-Policy。
  4. 与 Mozilla HTTP Observatory 交叉核对,它测试的内容远多于本评分。

来源:Mozilla Server Side TLS、 MDN — HTTP headers。

根据 Active Directory 收集器中 PingCastle 风格的发现项进行评分:可被 Kerberoast 的账户、没有 Kerberos 预身份验证的账户、非约束委派、krbtgt 密码的存在时间、特权组的规模、LAPS 覆盖率、密码策略、陈旧账户。每个发现项就是一项检查,当它涉及的对象为零时通过。

改进方法:

  1. 先修复严重和高危的发现项:它们是通往 Domain Admins 的常见路径。
  2. 如果 krbtgt 密码很旧,请间隔几小时重置两次,并从非域控制器的计算机上移除非约束委派。
  3. 把以带 SPN 的用户账户运行的服务迁移到组托管服务账户(gMSA)。
  4. 运行 PingCastle 进行完整评估。

来源:PingCastle health check rules、 Windows LAPS。

  • 评分只反映 DumbMonit 能看到的内容;许多最佳实践未被检查,因为没有收集器读取相应数据:Proxmox 防火墙和双因素身份验证、暴露在 WAN 上的 OPNsense 网页界面、以特权模式或挂载 Docker 套接字运行的 Docker 容器、仍提供 TLS 1.0/1.1(探测只协商 TLS 1.2 和 1.3),等等。
  • 检查的新鲜度取决于其数据:有些收集器每隔几小时才重新读取一次更新。
  • 权重是产品层面的选择,对每个安装都相同。
  • 只有上述类型会被评分。其他类型(交换机、打印机、UniFi、pfSense……)有意不显示徽章:寥寥几项检查给出的等级没有意义。