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

UserParameter 上报清单。修复只通过一个白名单键 + 受限 sudoers 执行——绝不使用任意的 system.run。audit/linux 审计;Windows 注册表软件通过 Smart Audit 审计,已安装的 KB 通过 audit/kb 审计(含每条 CVE 的 CVSS 评分)。Smart Audit 与 Zabbix 版本无关。在您的 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 模板、报告主机、触发器和仪表盘。
Vulners - Hosts、- Bulletins、- Packages、- Statistics。vulners.host 标签。在监控 → 问题中筛选 Tags: vulners.host Equals <host>,即可查看某台主机的漏洞。(一条发现 = 一个(漏洞,主机)对。)整个集群的 CVSS 中位数趋势和分数分布:

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

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

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

所有配置项都有默认值;通过环境变量提供机密信息(它们会覆盖 YAML 文件)。完整示例:config.example.yaml。
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 实现保留在本仓库的 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。
| 环境变量 | 用途 |
|---|
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 值的发现 |