
Zabbix 취약점 평가 플러그인
이미 운영 중인 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, 수동, air-gapped, 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 태그가 포함됩니다. Monitoring → Problems에서 Tags: vulners.host Equals <host>로 필터링하면 특정 호스트의 취약점을 확인할 수 있습니다. (발견 항목 하나 = (취약점, 호스트) 쌍 하나.)플릿 전체의 중앙값 CVSS 추세 및 점수 분포:

심각도 분류 — 회색 "Not classified" 막대 하나가 아닌 실제 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 (자동 감지) |
| 감사 대상 OS | Linux (deb/rpm/apk/…), Windows (소프트웨어 + KB) |
| ztc 실행 환경 | Linux amd64 / arm64 |
원래 Python 구현은 이 저장소의 git 기록(Go 재작성 이전 커밋)과 Go 이전 릴리스 태그에 남아 있습니다. 동일한 Zabbix 측 이름(그룹, 보고 호스트, 대시보드)을 공유하지만, 번들된 report.py 대신 기본 에이전트 키로 수집하고, 템플릿을 두 개로 분할하며, fix 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(빌드/테스트/린트)는 모든 푸시에서 실행되며, v* 커밋에 태그를 지정하면 바이너리와 GHCR 이미지가 게시됩니다.
LICENSE를 참조하세요.