
zabbix-threat-control v3.0.0
إضافة تقييم الثغرات لـ Zabbix
Zabbix Threat Control (ztc)
حوّل خادم Zabbix الذي تشغّله بالفعل إلى وحدة تحكم لإدارة الثغرات الأمنية.
يقرأ ztc جرد برامج كل مضيف عبر zabbix-agent2 القياسي (دون نشر وكيل إضافي)، ويدقّقه عبر Vulners، ويدفع نتائج مُقيَّمة لكل مضيف — مشاكل ولوحات معلومات ورسوم CVSS بيانية — إلى 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 وتوزيع الدرجات عبر المجموعة:

توزيع الخطورة — أعداد حقيقية لمستويات 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 الأمامية (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 (المجموعة، مضيفات التقارير، لوحة المعلومات)، لكنه يجمع
عبر مفاتيح الوكيل القياسية بدلًا من 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.