업데이트로 돌아가기
New releaseAug 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 버전을 자동 감지하므로 사용자 측에서 유지 관리할 버전별 브랜치가 없습니다.
  • 단순 목록이 아닌 실행 가능한 결과. 발견 항목은 CVSS 심각도로 점수가 매겨진 Zabbix 문제가 되며, 호스트별로 필터링할 수 있고, 기본 제공 대시보드에 중앙값 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, 수동, 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 템플릿, 보고 호스트, 트리거 및 대시보드를 생성합니다.

Zabbix에서 얻을 수 있는 것

  • 보고 호스트: Vulners - Hosts, - Bulletins, - Packages, - Statistics.
  • 대시보드심각도별 문제 개요, 보고서별 문제 목록, 중앙값 CVSS 점수 추세 및 CVSS 점수 분포 파이 차트.
  • 심각도 점수 문제 — 각 발견 항목은 CVSS에 따라 Disaster / High / Average / Warning 수준으로 발생하므로 심각도별 문제(Problems by severity) 보기가 의미 있습니다.
  • 호스트별 필터 — 모든 발견 항목에는 vulners.host 태그가 포함됩니다. Monitoring → Problems에서 Tags: vulners.host Equals <host>로 필터링하면 특정 호스트의 취약점을 확인할 수 있습니다. (발견 항목 하나 = (취약점, 호스트) 쌍 하나.)

플릿 전체의 중앙값 CVSS 추세 및 점수 분포:

중앙값 CVSS 점수 추세 및 CVSS 점수 분포

심각도 분류 — 회색 "Not classified" 막대 하나가 아닌 실제 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 (자동 감지)
감사 대상 OSLinux (deb/rpm/apk/…), Windows (소프트웨어 + KB)
ztc 실행 환경Linux amd64 / arm64

Python 버전에서의 마이그레이션

원래 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를 참조하세요.

카테고리