返回更新列表
新发布Aug 1, 2026

zabbix-threat-control v3.0.0

Zabbix 漏洞评估插件

分享

Zabbix Threat Control (ztc)

将您已经在运行的 Zabbix 变成漏洞管理控制台。

ztc 通过标准的 zabbix-agent2(无需部署额外代理)读取每台主机的软件清单,对照 Vulners 进行审计,并将按主机评分的发现结果——问题、仪表盘和 CVSS 图表——推回 Zabbix。一个静态二进制文件,一条命令即可安装。

CI Release License

Zabbix 中的 Vulners 仪表盘

为什么选择 ztc

  • 无需新代理,无 RCE 风险。 主机通过标准 zabbix-agent2 的 UserParameter 上报清单。修复只通过一个白名单键 + 受限 sudoers 执行——绝不使用任意的 system.run
  • 支持 Linux Windows。 Linux 软件包通过 Vulners audit/linux 审计;Windows 注册表软件通过 Smart Audit 审计,已安装的 KB 通过 audit/kb 审计(含每条 CVE 的 CVSS 评分)。Smart Audit 与 Zabbix 版本无关。
  • 支持 Zabbix 6.0、7.0、7.4 和 8.0。 自动检测 API 版本;您无需维护按版本区分的分支。
  • 可操作,而不仅仅是列表。 发现结果会成为 Zabbix 按 CVSS 严重性评分的问题,可按主机筛选,并在现成的仪表盘上提供CVSS 中位数和分数分布图
  • 单一二进制。 一条命令即可安装;支持自动更新

快速开始

在您的 Zabbix 服务器上(或任何能访问 Zabbix + Vulners 的 Linux 主机):

curl -fsSL https://raw.githubusercontent.com/vulnersCom/zabbix-threat-control/master/deploy/install.sh | sudo sh

安装程序会询问您的 Vulners API 密钥和 Zabbix 连接信息,安装一个 systemd 服务,并提供创建 Zabbix 实体的选项(ztc provision --all)。然后将采集模板链接到您想要扫描的主机——参见 docs/guide.md

其他选项(Docker、手动、离线环境、通过 Zabbix 引导):deploy/README.md

工作原理

 hosts: zabbix-agent2  UserParameter
   Linux   → vulners.os / version / arch / packages
   Windows → vulners.os / version / win.software / win.kb
        │   (polled into Zabbix items)
        ▼
   ztc scan ─► collect (Zabbix API) ─► audit (Vulners) ─► aggregate ─► sender ─► Zabbix
                                                                           │
        problems (CVSS severity) · dashboard · graphs · vulners.host tags ◄┘

ztc scan --daemon 按计划运行扫描循环;ztc provision 创建 Zabbix 模板、报告主机、触发器和仪表盘。

您在 Zabbix 中获得的内容

  • 报告主机: Vulners - Hosts- Bulletins- Packages- Statistics
  • 仪表盘,包含按严重性划分的问题概览、每个报告的问题列表、CVSS 中位数评分趋势和CVSS 分数分布饼图。
  • 按严重性评分的问题——每条发现会根据其 CVSS 以 Disaster / High / Average / Warning 级别触发,因此按严重性查看问题变得有意义。
  • 按主机筛选——每条发现都带有 vulners.host 标签。在监控 → 问题中筛选 Tags: vulners.host Equals <host>,即可查看某台主机的漏洞。(一条发现 = 一个(漏洞,主机)对。)

整个集群的 CVSS 中位数趋势和分数分布:

整个集群的 CVSS 中位数评分趋势和分数分布

严重性细分——真实的 Disaster / High / Average / Warning 数量,而不是一条灰色的“未分类”栏:

按严重性划分的问题

单台主机的漏洞——通过 vulners.host 标签筛选:

通过 vulners.host 标签筛选问题

单条发现——按 CVSS 评分、标记所属主机、链接到 vulners.com:

一条已评分、带标签的 Vulners 问题

配置

所有配置项都有默认值;通过环境变量提供机密信息(它们会覆盖 YAML 文件)。完整示例:config.example.yaml

环境变量用途
VULNERS_API_KEYVulners API 密钥(必需)
VULNERS_BASE_URL自托管 / 代理 Vulners 端点(可选)
ZABBIX_URLZabbix 前端 URL(JSON-RPC API)
ZABBIX_TOKENAPI 令牌(首选)…
ZABBIX_USER / ZABBIX_PASSWORD…或用户名 + 密码
ZABBIX_SERVER_FQDN / ZABBIX_SERVER_PORTzabbix-sender 目标
ZTC_SCHEDULE守护进程扫描间隔(例如 1h
ZTC_MIN_CVSS创建对象前丢弃低于此 CVSS 值的发现

ztc --help 列出全部配置项。

命令

ztc scan --daemon                 # run the scan loop on a schedule
ztc scan --once                   # a single cycle
ztc provision --all               # create/reconcile templates, report hosts, dashboard
ztc fix --host H --package P      # remediate a package (whitelisted, opt-in)
ztc upgrade                       # self-update, then re-run `provision --all`
ztc version --check               # print version and check for updates

修复

ztc fix 通过白名单代理键 vulners.fix[<pkg>] 升级存在漏洞的软件包,该键由主机端工作进程消费——不执行任意命令。它可以手动运行,也可以在 scan --daemon --auto-fix 模式下,由受信任的用户在 Zabbix 中确认问题来驱动。设计理由:docs/adr/0001-remediation-mechanism.md

支持矩阵

Zabbix6.0 和 7.0 LTS、7.4、8.0(自动检测)
可审计的操作系统Linux(deb/rpm/apk/…)、Windows(软件 + KB)
ztc 运行平台Linux amd64 / arm64

从 Python 版本迁移

最初的 Python 实现保留在本仓库的 git 历史中(Go 重写之前的提交)以及 Go 之前的发布标签中。它使用相同的 Zabbix 端名称(主机组、报告主机、仪表盘),但通过标准 agent 键而非随附的 report.py 采集数据,将模板拆分为两个,并去掉了修复 Action。逐步指南(配置映射、对象清理、主机重新接入、修复机制切换):docs/MIGRATION.md

开发

go build ./...     # compile
go test ./...      # unit tests (no network)
go vet ./... && gofmt -l .
make build         # -> bin/ztc

Docker 测试环境(Zabbix + agent + ztc)位于 deploy/docker/README.md。CI(构建/测试/lint)在每次推送时运行;为 v* 提交打标签会发布二进制文件和 GHCR 镜像。

许可证

参见 LICENSE

分类