
zabbix-threat-control v3.0.0
Zabbix 漏洞评估插件
Zabbix Threat Control (ztc)
将您已经在运行的 Zabbix 变成漏洞管理控制台。
ztc 通过标准的 zabbix-agent2(无需部署额外代理)读取每台主机的软件清单,对照 Vulners 进行审计,并将按主机评分的发现结果——问题、仪表盘和 CVSS 图表——推回 Zabbix。一个静态二进制文件,一条命令即可安装。

为什么选择 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 中位数趋势和分数分布:

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

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

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

配置
所有配置项都有默认值;通过环境变量提供机密信息(它们会覆盖 YAML 文件)。完整示例:config.example.yaml。
| 环境变量 | 用途 |
|---|---|
VULNERS_API_KEY | Vulners API 密钥(必需) |
VULNERS_BASE_URL | 自托管 / 代理 Vulners 端点(可选) |
ZABBIX_URL | Zabbix 前端 URL(JSON-RPC API) |
ZABBIX_TOKEN | API 令牌(首选)… |
ZABBIX_USER / ZABBIX_PASSWORD | …或用户名 + 密码 |
ZABBIX_SERVER_FQDN / ZABBIX_SERVER_PORT | zabbix-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。
支持矩阵
| Zabbix | 6.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。