العودة إلى التحديثات
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

لوحة معلومات Vulners في Zabbix

لماذا ztc

  • لا وكيل جديد، ولا RCE. تبلّغ المضيفات عن جردها عبر UserParameters القياسية في zabbix-agent2. وتتم المعالجة عبر مفتاح واحد مدرج في القائمة البيضاء + نطاق sudoers ضيّق — لا system.run عشوائي إطلاقًا.
  • Linux و Windows. حزم Linux عبر Vulners audit/linux؛ برامج Windows المسجّلة في السجل عبر Smart Audit وتحديثات KB المثبّتة عبر audit/kb (مع درجة CVSS لكل CVE). Smart Audit مستقل عن إصدار Zabbix.
  • Zabbix 6.0 و7.0 و7.4 و8.0. يكتشف إصدار API تلقائيًا؛ لا فروع لكل إصدار لصيانتها من جانبك.
  • قابلة للتنفيذ، وليست مجرد قائمة. تتحوّل النتائج إلى مشاكل Zabbix مُقيَّمة حسب خطورة CVSS، قابلة للتصفية حسب المضيف، مع رسوم بيانية لمتوسط CVSS وتوزيع الدرجات على لوحة معلومات جاهزة.
  • ملف ثنائي واحد. يُثبَّت بأمر واحد؛ وهو يحدّث نفسه ذاتيًا.

بدء سريع

على خادم Zabbix لديك (أو أي مضيف Linux يمكنه الوصول إلى Zabbix + Vulners):

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.
  • مشاكل مُقيَّمة حسب الخطورة — تُطلق كل نتيجة عند مستوى Disaster / High / Average / Warning استنادًا إلى درجة CVSS الخاصة بها، لذا تصبح المشاكل حسب الخطورة ذات معنى.
  • التصفية حسب المضيف — تحمل كل نتيجة وسم vulners.host. في Monitoring → Problems صفِّ حسب Tags: vulners.host Equals <host> لرؤية ثغرات مضيف واحد. (النتيجة الواحدة = زوج واحد (ثغرة، مضيف).)

اتجاه متوسط CVSS وتوزيع الدرجات عبر المجموعة:

اتجاه متوسط درجة CVSS وتوزيع درجات CVSS

توزيع الخطورة — أعداد حقيقية لمستويات Disaster / High / Average / Warning، وليست شريطًا رماديًا واحدًا بعنوان «غير مصنَّف»:

المشاكل حسب الخطورة

ثغرات مضيف واحد عبر فلتر وسم vulners.host:

تصفية المشاكل حسب وسم vulners.host

نتيجة واحدة — مُقيَّمة حسب CVSS، موسومة بمضيفها، ومرتبطة بـ vulners.com:

مشكلة Vulners مُقيَّمة وموسومة

الإعداد

لكل شيء قيمة افتراضية؛ وقدِّم الأسرار عبر متغيرات البيئة (وهي تتجاوز ملف YAML). مثال كامل: config.example.yaml.

المتغيرالغرض
VULNERS_API_KEYمفتاح Vulners API (مطلوب)
VULNERS_BASE_URLنقطة نهاية Vulners مستضافة ذاتيًا / عبر وسيط (اختياري)
ZABBIX_URLعنوان واجهة Zabbix الأمامية (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.

مصفوفة التوافق

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 (المجموعة، مضيفات التقارير، لوحة المعلومات)، لكنه يجمع عبر مفاتيح الوكيل القياسية بدلًا من 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 + وكيل + ztc) في deploy/docker/README.md. يعمل CI (بناء/اختبار/فحص) عند كل push؛ ويؤدي وسم أي التزام يبدأ بـ v* إلى نشر الملفات الثنائية وصورة GHCR.

الترخيص

انظر LICENSE.

الفئات