文档目录
告警与配置漂移检测
资源阈值、磁盘用量预测、可疑配置变更以及登录日志审查。
贯穿本节的指导原则是:一份没人信任的告警列表,比完全没有告警更糟糕。 因此规则数量保持精简,只有在状态发生转变时才会产生事件 —— 磁盘使用率卡在 91% 一整周只算一个事件,而不是一万个。
三种事件类型
| 类型 | 触发时机 |
|---|---|
threshold(阈值) | 某项资源指标超过了您设置的阈值。 |
drift(配置漂移) | 与安全相关的配置相较上一次轮询发生了变化。 |
reachability(可达性) | VM 停止响应,或恢复响应。 |
每个事件都有 info、warning 或 critical 三种级别之一, 并附带简短标题和详细描述。
资源阈值
在 设置 中配置。共四个阈值: 磁盘警告、磁盘严重、内存、CPU。
磁盘一旦超过阈值会立即告警。内存和 CPU 必须连续多次轮询超标才会告警 —— 备份过程中持续一分钟的 CPU 峰值,不值得半夜把人叫醒。
磁盘用量预测
静态阈值本身很难反映紧迫程度。一年都没变过的 80%,不需要任何人关注; 一周内暴涨十个百分点的 60%,则需要有人今天就采取行动。
应用会为每个挂载点,基于最近七天的数据拟合一条线性回归, 并推算出何时会被填满。结果会显示为“大约还剩 N 天”。
在以下情况下,这项推算会拒绝给出结论,而不是随意猜测:
- 样本数少于 6 个,或数据跨度不足 6 小时;
- 趋势持平或呈下降趋势(挂载点正在被清理);
- 结果超过 365 天 —— “它迟早会被填满”并不是什么有用的信息。
预测每个 VM 最多每小时重新计算一次,因为每次都需要读取一整周的历史数据。
该模型假设增长速度保持恒定。对于日志轮转,或一夜之间数据翻倍的数据库, 这个假设是不成立的。请把它当作优先级参考,而不是承诺。
配置漂移检测
有四项内容会与上一次轮询进行比对。这些正是攻击者留下的真实痕迹:
| 项目 | 检测的变化 |
|---|---|
keys | authorized_keys —— SSH 密钥的新增或删除 |
users | /etc/passwd —— 新增账户、shell 变更 |
ports | 监听端口 —— 新对外暴露的服务 |
sudoers | /etc/sudoers 和 /etc/sudoers.d/* |
大多数变化都是合法的:同事添加了自己的密钥,部署了新服务。 这项功能的价值在于让您知道变化发生了以及发生的时间 —— 而不是六个月后才发现。
SSH 登录审查
当轮询账户可以读取登录日志时,应用会汇总以下内容:
- 成功登录 —— 用户、IP、认证方式、时间戳。
- 按 IP 统计的失败次数 —— 按次数排序,最多的排在最前面。
- 被封禁的 IP —— 如果存在
fail2ban,则从中读取。 - 常用网络 —— 每个用户通常登录所使用的子网。
“常用网络”这部分是这里最有价值的功能:来自陌生子网的一次成功登录, 远比来自互联网的成千上万次失败尝试更值得关注 —— 对于任何暴露在公网的服务器而言,失败尝试都是家常便饭。
非工作时间的登录会被标记出来,但不会仅凭这一点就生成告警。 很多合法的工作确实是在夜间进行的。
确认告警
告警中心按时间倒序列出事件。可以逐条标记为已确认,也可以一次性全部确认; 状态栏中的计数只统计尚未确认的事件。
事件在被确认后永远不会被删除,也不受 14 天指标数据保留期的清理影响 —— 它们会被长期保留,并用于 月度报告。
系统通知
critical 级别的事件会推送一条操作系统通知,即使应用窗口被遮挡也能看到。 可在您操作系统自身的通知设置中启用或关闭该功能。