لماذا Wazuh للامتثال لـ NIS2 المادة 21
تفرض المادة 21 من NIS2 أربع قدرات: تسجيل الأحداث، الكشف عن الحوادث، الاستجابة، والإخطار. يغطي Wazuh الثلاثة الأولى بشكل أصلي — جمع السجلات، قواعد الكشف، الاستجابة الفعّالة — ولوحة التحكم تُنتج تقارير التدقيق اللازمة للرابعة. خلافاً لـ SIEM السحابي، تبقى البيانات على بنيتك التحتية دون نقل إلى خوادم خارجية. الإصدار 4.14.8 الصادر في 25 سبتمبر 2026 هو الإصدار المستقر الحالي.
Wazuh مقابل بدائل SIEM ذاتية الاستضافة
مرّر الجدول أفقيًا
| الأداة | الترخيص | بيئة النشر | تغطية NIS2 المادة 21 |
|---|---|---|---|
| Wazuh 4.14 | GPLv2 (المدير) / Apache 2 (المفهرس) | Docker Compose رسمي | تسجيل + كشف + استجابة فعّالة |
| Elastic SIEM | SSPL | Docker أو حزم | تسجيل + كشف (استجابة عبر SOAR خارجي) |
| Graylog Open | SSPL | Docker Compose | تسجيل (كشف محدود بدون إضافات) |
| Security Onion | GPLv2 | ISO bare-metal أو VM | تغطية كاملة لكن يتطلب خادماً مخصصاً |
المتطلبات المسبقة للأجهزة والبرامج
المتطلبات الرسمية لنشر عقدة واحدة تغطي حتى 25 وكيلاً: 4 vCPU و8 جيجابايت من الذاكرة العشوائية و50 جيجابايت للتخزين (لـ 90 يوماً من البيانات المفهرسة). يكفي VPS متوسط الفئة لفريق يراقب حتى 25 نقطة نهاية. على صعيد البرامج، تحتاج إلى Docker Engine (الإصدار 24 كحد أدنى) وDocker Compose v2 وGit. يجب أن يسمح نواة Linux بـ 262,144 منطقة ذاكرة افتراضية على الأقل للمفهرس.
ما يراقبه Wazuh فور تفعيل الوكلاء
- مراقبة سلامة الملفات (FIM) — يكشف أي تعديل أو إنشاء أو حذف في المسارات الحرجة (
/etcو/binو/usr/binافتراضياً) - سجلات النظام — يجمع ويفهرس سجلات المصادقة وsyslog وjournald والسجلات التطبيقية المُهيَّأة
- تقييم التهيئة (SCA) — يقارن حالة النظام الفعلية بمعايير CIS لـ Ubuntu وDebian وRHEL وWindows
- الكشف عن الـ rootkit — يحلل العمليات المخفية وشذوذات النواة عبر
rootcheck - الكشف عن الثغرات — يُطابق الحزم المثبتة على الوكلاء مع CVEs من قاعدة بيانات الثغرات الوطنية
- الاستجابة الفعّالة — يحجب تلقائياً عنوان IP بعد N محاولات مصادقة فاشلة دون الحاجة لـ SOAR خارجي
- سجلات السحابة — يستوعب أحداث AWS CloudTrail وAzure Activity Log وGCP Audit Log عبر وحدات مخصصة
النشر خطوة بخطوة على VPS يعمل بـ Debian/Ubuntu
تجهيز النظام
حدّث الحزم وثبّت التبعيات:
apt update && apt upgrade -y apt install -y docker.io docker-compose-v2 git curl systemctl enable --now dockerأضف المستخدم غير الجذري لمجموعة docker عند الحاجة:
usermod -aG docker $USERضبط vm.max_map_count
يتطلب مفهرس Wazuh (OpenSearch) 262,144 منطقة ذاكرة افتراضية على الأقل. طبّق المعامل فوراً واجعله دائماً:
sysctl -w vm.max_map_count=262144 echo 'vm.max_map_count=262144' >> /etc/sysctl.confبدون هذه الخطوة، يتوقف حاوية
wazuh.indexerبخطأmax virtual memory areas vm.max_map_count [65530] is too low.استنساخ المستودع الرسمي
استنسخ الفرع المطابق للإصدار المستقر الحالي:
git clone https://github.com/wazuh/wazuh-docker.git -b v4.14.8 cd wazuh-docker/single-node/يحتوي المجلد
single-node/على ملف docker-compose.ymlالرئيسي وملفgenerate-indexer-certs.ymlاللازم للخطوة التالية.توليد شهادات TLS بين الخدمات
يشفّر Wazuh جميع الاتصالات الداخلية. ولّد الشهادات باستخدام الأداة المُرفقة:
docker compose -f generate-indexer-certs.yml run --rm generatorتُودَع الشهادات في
config/wazuh_indexer_ssl_certs/. لا تُعيد توليدها دون إعادة إنشاء المكدس بالكامل.تشغيل المكدس
شغّل الخدمات الثلاث في الخلفية:
docker compose up -dتابع بدء التشغيل في الوقت الفعلي:
docker compose logs -fيحتاج المفهرس نحو 60 ثانية ليكون جاهزاً. انتظر السطر
Node 'node-1' initializedقبل المتابعة.الدخول إلى لوحة التحكم وتغيير كلمة المرور
افتح
https://IP-الخادمفي متصفحك. بيانات الدخول الافتراضية: المستخدمadmin، كلمة المرورSecretPassword. غيّر كلمة المرور فوراً عبر Security → Internal users → admin → Edit. للأتمتة من سطر الأوامر:docker exec -it single-node-wazuh.manager-1 \ /var/ossec/bin/wazuh-passwords-tool.sh \ -u admin -p 'كلمةمرورجديدة!'فتح المنافذ الضرورية في الجدار الناري
على الخادم الافتراضي، اسمح بحركة البيانات الواردة للوكلاء ولوحة التحكم:
ufw allow 443/tcp # لوحة التحكم HTTPS ufw allow 1514/tcp # الوكلاء ufw allow 1515/tcp # تسجيل الوكلاء ufw allow 514/udp # استقبال syslog ufw allow 55000/tcp # Wazuh REST API (قيّد بعناوين IP الإدارة فقط) ufw enableقيّد المنفذ 55000 بعناوين IP الإدارة فقط.
تثبيت وكيل Wazuh على خادم تريد مراقبته
على كل جهاز تريد مراقبته، ثبّت الوكيل وأشر به إلى خادمك الافتراضي. مثال على Debian/Ubuntu:
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | gpg --dearmor \ -o /usr/share/keyrings/wazuh.gpg echo "deb [signed-by=/usr/share/keyrings/wazuh.gpg] \ https://packages.wazuh.com/4.x/apt/ stable main" \ > /etc/apt/sources.list.d/wazuh.list apt update && apt install -y wazuh-agent WAZUH_MANAGER='IP-الخادم-الافتراضي' \ WAZUH_AGENT_NAME='your-server-01' \ dpkg-reconfigure wazuh-agent systemctl enable --now wazuh-agentيظهر الوكيل في لوحة التحكم ضمن Agents في غضون 30 ثانية.
مزيد من القراءة — أدلة ذات صلة
لتعزيز وضعيتك الأمنية، راجع أدلتنا ذات الصلة: [nis2-securite-informatique-hebergement-obligations] للالتزامات القانونية التفصيلية، و[crowdsec-vs-fail2ban-securite-vps] للحجب التعاوني على مستوى الشبكة، و[zitadel-sso-self-hosted-vps] لمركزة المصادقة وتقليل سطح الهجوم.
معمارية المكدس أحادي العقدة
يُنشئ مكدس Docker Compose الرسمي ثلاث خدمات مترابطة. مدير Wazuh هو القلب: يستقبل الأحداث من الوكلاء عبر المنفذ 1514، ويُطبّق قواعد الكشف، ويُشغّل الاستجابات الفعّالة، ويُحيل التنبيهات إلى المفهرس. مفهرس Wazuh (OpenSearch) يخزّن هذه التنبيهات ويجعلها قابلة للبحث؛ يتواصل مع المدير عبر المنفذ 9200 ويستلزم موارد النواة الخاصة بمحركات البحث. لوحة تحكم Wazuh تعرض واجهة المستخدم على المنفذ 443 وتستعلم المفهرس عبر HTTPS. تتشارك الخدمات الثلاث شهادات TLS موقّعة ذاتياً تُولَّد في خطوة التجهيز؛ تعديل إحداها دون إعادة توليد الأخريات يُسبّب أخطاء التحقق المتبادل. البيانات المستمرة — تهيئة المدير، طابور التنبيهات، بيانات الفهرس — مخزّنة في أحجام Docker مُسمّاة مفصولة عن دورة حياة الحاويات.
ضبط الاحتفاظ بالبيانات وتنبيهات البريد الإلكتروني
يحتفظ Wazuh بالبيانات 90 يوماً افتراضياً. لتعديل الاحتفاظ، عدّل معامل max_age في سياسة ISM للمفهرس عبر Index Management → Policies في لوحة التحكم. يمكنك تمديد الاحتفاظ إلى 180 يوماً لتلبية متطلبات NIS2 لحفظ السجلات، أو تقليصه إلى 30 يوماً على VPS محدود التخزين. لتنبيهات البريد الإلكتروني، عدّل /var/ossec/etc/ossec.conf في حاوية المدير — أضف مقطع <email_notification> مع خادم SMTP ومستويات التنبيه المطلوبة (المستوى 7 فما فوق للتنبيهات الحرجة، والمستوى 5 لتضمين التنبيهات المتوسطة). يدعم Wazuh أيضاً إرسال الإشعارات عبر webhooks إلى Slack وTeams وPagerDuty. أعد تشغيل المدير بعد كل تعديل في التهيئة:
docker compose restart wazuh.managerتوليد تقارير الامتثال لـ NIS2 / GDPR
تتضمن لوحة تحكم Wazuh لوحات مخصصة لأُطر الامتثال: GDPR وPCI DSS وHIPAA وNIST 800-53. تتيح هذه اللوحات تصدير تقارير PDF تُدرج الضوابط المغطاة والأحداث المرتبطة بها — مفيدة لتبرير وضعيتك أمام مدقق أو سلطة مختصة بـ NIS2. لـ NIS2 تحديداً، استخدم عرض GDPR كأساس وأكمله بقواعد الكشف المصنّفة وفق إطار Mitre ATT&CK. تُلزم NIS2 بالإخطار في غضون 72 ساعة من اكتشاف حادث مهم: هيّئ تنبيهات المستوى 12 (الحرجة) لتُطلق إخطاراً فورياً — يتضمن Wazuh قواعد جاهزة لمحاولات استغلال CVEs المعروفة والتحركات الجانبية وتصعيد الامتيازات.
فعّل سياسة كلمات المرور القوية في Wazuh فور التثبيت: ضمن Security → Security settings، فعّل 'Require complex passwords' و'Enable audit logging'. كلا الخيارين معطّلان افتراضياً ويجب تفعيلهما يدوياً قبل الإنتاج.
تحديث Wazuh دون فقدان البيانات
تُحفظ بيانات المفهرس في أحجام Docker مُسمّاة. تتضمن إجراءات التحديث استنساخ الإصدار الجديد في مجلد منفصل ونسخ الأحجام الموجودة ثم إعادة تشغيل المكدس. توصي الوثيقة الرسمية بنسخ احتياطي للأحجام قبل أي تحديث رئيسي:
docker run --rm \
-v single-node_wazuh-indexer-data:/data \
-v $(pwd)/backup:/backup \
alpine tar czf /backup/indexer-data-$(date +%Y%m%d).tar.gz /dataللتحديث من إصدار ثانوي (مثلاً 4.14.7 إلى 4.14.8)، عدّل الوسم في docker-compose.yml وأعد التشغيل بـ docker compose up -d --pull always.
استكشاف الأخطاء — المشكلات الشائعة
إليك الأخطاء الخمسة الأكثر شيوعاً خلال أول نشر لـ Wazuh Docker مع أسبابها وحلولها.
الأخطاء الشائعة وحلولها
max virtual memory areas vm.max_map_count [65530] is too low— لم يُطبَّق معامل النواة. نفّذsysctl -w vm.max_map_count=262144وتحقق بـsysctl vm.max_map_countقبل إعادة تشغيل المكدس.Connection refusedعلى المنفذ 443 بعدdocker compose up -d— المفهرس ليس جاهزاً بعد. انتظر 60 إلى 90 ثانية وراجعdocker compose logs wazuh.indexerللتأكد من تهيئة العقدة.Agent disconnectedمباشرة بعد التسجيل — المنفذ 1514/TCP أو 1515/TCP محجوب على مستوى الخادم الافتراضي. تحقق منufw statusوقواعد الأمان الشبكي لمزود الاستضافة.certificate verify failedفي سجلات لوحة التحكم — الشهادات المُولَّدة تلقائياً لا تتطابق مع عنوان IP أو اسم المضيف المستخدم. أعد توليد الشهادات بعد التحقق من أنWAZUH_DASHBOARD_HOSTفي docker-compose.ymlيطابق عنوان IP أو اسم نطاقك.Wazuh API 401 Unauthorized— تغيير كلمة مرورadminلم يُنشر على تهيئة لوحة التحكم. بعد التعديل، حدّث أيضاًDASHBOARD_PASSWORDفي ملف .envأو في متغيرات بيئة خدمةwazuh.dashboard، ثم أعد التشغيل بـdocker compose restart wazuh.dashboard.