
إضافة تقييم الثغرات لـ Zabbix
حوّل خادم Zabbix الذي تشغّله بالفعل إلى وحدة تحكم لإدارة الثغرات الأمنية.
يقرأ ztc جرد برامج كل مضيف عبر zabbix-agent2 القياسي (دون نشر وكيل إضافي)، ويدقّقه عبر Vulners، ويدفع نتائج مُقيَّمة لكل مضيف — مشاكل ولوحات معلومات ورسوم CVSS بيانية — إلى Zabbix. ملف ثنائي واحد ثابت، يُثبَّت بأمر واحد.

UserParameters القياسية
في zabbix-agent2. وتتم المعالجة عبر مفتاح واحد مدرج في القائمة البيضاء + نطاق
sudoers ضيّق — لا عشوائي إطلاقًا.system.runaudit/linux؛ برامج Windows
المسجّلة في السجل عبر Smart Audit وتحديثات KB المثبّتة عبر audit/kb (مع
درجة CVSS لكل CVE). Smart Audit مستقل عن إصدار Zabbix.على خادم 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
ومضيفات التقارير والمشغّلات ولوحة المعلومات.
Vulners - Hosts و- Bulletins و- Packages و- Statistics.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 الأصلي في محفوظات 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.