InfraGuard

安全概览(防御漏斗)

安全运营的核心画面:一条漏斗串起威胁、检测、自动响应规则集与封禁,讲述自动防御的完整故事。

概述 — 这个画面做什么

安全概览(/security)是安全角色区域的 核心画面。它把 InfraGuard 早已采集、判定并自动处置、却从未被可视化过的「隐藏遥测」,以一条 防御漏斗叙事 的形式呈现出来。

核心信息只有一句话:「此时此刻,AI 与 IDS 自动防御正在封禁敌对网络。」 为了让这句话可信,画面一眼就能给出:

全部内容 只读 — 这个画面不会封禁或修改任何东西。实际操作在 威胁、封禁列表与信誉 和 检测 中进行。

这里没有「域名」的概念 — 安全概览是按 角色区域(安全运营) 汇总的,而不是按 Web TLD。

何时使用

布局

顶部 — 威胁强度仪表 + 防御漏斗

区域 内容
威胁强度(t.ov.score) 以锥形渐变环绘制的安全评分。显示值为 100 − score(越大越糟)。副标题:「越大越危险,以未处置的残留为准」。
防御漏斗(t.ov.funnel_title) 自上而下逐段收窄的四条阶段条,每条都带有实测计数和说明文字。

中部 — 自动响应 + 威胁趋势

卡片 内容
自动响应(t.ov.resp_title) 四块指标磁贴:每小时威胁数 · 24 小时威胁数 · 生效封禁 /24 · 24 小时封禁数。
威胁趋势(t.ov.tseries_title) 将 IDS 告警降采样为 30 个分桶的 SVG 迷你折线图,附带 Σ total · ▲ max/bucket-min 元信息与采集延迟(⏱ Nm)徽标。

底部 — JA3 攻击者 · 头部威胁 IP · 最近自动处置

页头控件

使用方法

  1. 阅读顶部的 威胁强度 仪表,了解当前风险等级(越大越糟)。
  2. 自上而下阅读 防御漏斗,跟随这条故事线:「进来了多少(威胁)→ 有多少被标记(检测)→ 触发了多少规则集(自动响应)→ 封禁了多少(响应)」。
  3. 查看 威胁趋势 迷你折线图上的尖峰。⏱ Nm 徽标数值很大意味着采集滞后,因此应把计数理解为截至该锚点时间的数据。
  4. 从 JA3 攻击者 / 头部威胁 IP 中挑出可疑 IP,再转到 威胁 / 检测 做深入调查、信誉查询 和封禁。
  5. 用 最近自动处置动态 查看自动防御刚刚封禁了什么、原因是什么。

漏斗各阶段的精确定义

每一项计数都限定在所选时间窗(1h/6h/24h)内,由 SecurityOverviewService::compute() 产出。

阶段 键 公式 来源
威胁 threats alertCount + nginxSuspiciousCount suricata_alert_ct + nginx_meta_ct(is_suspicious=1)
检测 detections distinctAlertIps + kitsuneBlockedCount 去重后的 src_ip(suricata_alert_ct)+ kitsune_detail_log(is_blocked=1)
自动响应规则集 rulesets active rulesets + firing rulesets infr_sec_ruleset(status=active)+ 44 条规则集目录中正在触发的部分
响应 response blockedCount blacklist_info(created_at ≥ 时间窗)

「自动响应规则集」的计数 不是 原始特征(sid)的数量。它与 规则集库 采用 同一个「规则集」计量单位(复用了 RulebookService),因此永远不会超过 44 条目录,也与规则集画面保持一致。

自动响应卡片的指标定义

指标 含义 计算方式
每小时威胁数 threats_hr 基于锚点的 24 小时告警数 ÷ 24
24 小时威胁数 threats_24h 基于锚点的 24 小时 alertCount
生效封禁 /24 active blacklist_info 中 is_use=1 的条数
24 小时封禁数 blocks_24h 最近 24 小时的 blockedCount

自动响应区块中还有「隔离(自动)」和「国际协作(手动)」的文案(resp.isolate / resp.coop),但这两项属于 后续阶段 ——要等响应工具部署之后才会统计。目前真正被计算的只有上述四个指标。

威胁强度(安全评分)公式

公式由 Services\Security\PostureService 拥有(2026-09-04 修订)。它与 Overview「安全依据」卡片显示的是 同一个数值:

score  = weighted mean of ids, ai, web, rep, tls, fw   # each metric 0..100
metric = 100 − 45 × open / (total + floor)             # open = 0  ->  metric = 100
displayed threat intensity = 100 − score               # 0..45, higher = worse

数据来源

所有威胁/检测/封禁计数都以 只读 方式读取遗留 legacy_glory 连接上的大容量遥测表。凭据只来自 config('database.connections.legacy_glory')(= .env),绝不硬编码。

表 连接 用途
suricata_alert_ct legacy_glory IDS 告警(威胁、检测、头部威胁 IP、趋势)。alert_ts 索引
nginx_meta_ct legacy_glory 可疑 Web 请求(is_suspicious)。idx_suspicious
kitsune_detail_log legacy_glory ML 异常封禁(is_blocked)
suricata_tls_ct legacy_glory JA3 指纹序列(JA3 攻击者)
blacklist_info legacy_glory 自动/手动封禁(/24 CIDR)。响应、生效封禁、动态
ip_info_loop legacy_glory geo/ASN/ISP 富化(ipEnrichment)
infr_sec_ruleset 应用(MAIN) JA3 序列规则集(生效规则集数量 + 摘要)

性能与新鲜度纪律

SecurityScope — 自动排除自有网络

头部威胁 IP 与 JA3 攻击者列表会自动排除你自己的网络,避免自家服务器被列为攻击者(无需硬编码)。

e.g. register 203.0.113.10 in infr_instance → prefix "203.0.113." auto-excluded
     add 10.0.0.0/8 to OpsPolicy internal_networks → CIDR → "10." coarse prefix excluded

如果自家服务器持续出现在威胁/攻击者列表中,请把这些 IP 登记到 资产 ▸ 实例,或加入 运维策略 的 internal_networks 白名单。它们会自动从列表中消失。

访问权限

故障排查与常见问题

Q. 漏斗的所有计数都是 0。 所选时间窗(1h/6h/24h)可能没有数据,或者 legacy_glory 连接已中断。请放宽到 24h;如果 ⏱ 延迟徽标非常大,说明某个采集器(eve_ingest / kts_tx / srct_tx)已经停滞,数据已经过期。

Q. 我们自己的服务器 IP 出现在头部威胁/攻击者里。 自有网络排除没有覆盖到它。请把该 IP 登记到 实例,或加入 运维策略 的 internal_networks(SecurityScope 按 /24 前缀排除)。

Q. 「自动响应规则集」的数字与 规则集库 不一致。 规则集阶段的公式是 active rulesets + firing rulesets。生效的 JA3 序列规则集(infr_sec_ruleset 为 active)会被加上,所以它可能超过纯目录触发数。

Q. 规则集写着 action=block,但并没有封禁。 该字段是建议而非指令。自动封禁直接从 suricata_tls_ct 计算 JA3 轮换,并不读取 infr_sec_ruleset。真正的封禁请在 封禁列表 中执行,或由自动封禁调度器完成。参见 检测。

Q. 威胁强度总是很低(≤45)。 这是预期行为。显示值为 100 − score,而 score 被钳制在下限 55,所以威胁强度的范围是 0..45。

Q. 数字每 30 秒会轻微抖动。 这是 30 秒轮询与 30 秒缓存共同作用的结果:每次轮询都会基于最新时间窗重新计算。关闭 LIVE 即可停止自动刷新。

相关内容

보안 개요 — 위협에서 대응까지의 방어 퍼널
보안 개요 — 위협에서 대응까지의 방어 퍼널
방어 퍼널 — 위협 → 탐지 → 룰셋 → 대응
방어 퍼널 — 위협 → 탐지 → 룰셋 → 대응