دليل عملي

‏Wazuh SIEM مفتوح المصدر على VPS: المراقبة والامتثال

الأمان والمراقبة10 دقائق للقراءةعدد الخطوات: 7

‏إذا كنت تشغّل عدة خوادم مستضافة ذاتياً — ‏n8n و‏Nextcloud وقواعد البيانات — دون أي رؤية موحّدة لما يجري عليها، فإن ‏Wazuh هو نظام ‏SIEM/XDR مفتوح المصدر يربط أحداث الأمان لديك في الوقت الفعلي، دون إرسال سجلاتك إلى طرف ثالث ودون اشتراك سحابي. إليك كيفية نشره على خادم ‏VPS يعمل بـ‏Linux في وضع العقدة الواحدة باستخدام ‏Docker Compose.

المحتويات· ‏لماذا تنشر Wazuh على خادم VPS الخاص بك1/8
  1. 01‏لماذا تنشر Wazuh على خادم VPS الخاص بك
  2. 02‏ما الذي يضيفه Wazuh فعلياً لبنيتك التحتية
  3. 03المتطلبات الدنيا قبل البدء
  4. 04‏نشر Wazuh باستخدام Docker Compose: الإجراء الكامل
  5. 05الإعداد بعد التثبيت: العملاء والقواعد ولوحات الامتثال
  6. 06تصليب بيئة النشر
  7. 07استكشاف الأخطاء: الأخطاء الشائعة
  8. 08‏Wazuh ضمن منظومة الأمان لديك

‏لماذا تنشر Wazuh على خادم VPS الخاص بك

‏يُصدر خادم Linux باستمرار إشارات أمنية: محاولات تسجيل الدخول عبر ‏SSH، وتعديلات على ملفات النظام، وعمليات رفع الصلاحيات، والعمليات غير المعتادة. تقع هذه الأحداث في سجلات متفرقة — ‏/var/log/auth.log وسجلات الحاويات والسجلات التطبيقية — دون أن يربطها أحد. نظام ‏SIEM هو تحديداً الأداة التي تمركز هذه التدفقات وتحللها وتكشف الحوادث.

‏Wazuh هو المرجع مفتوح المصدر في هذا المجال. يعتمد على مدير (مركز الكشف) يستقبل البيانات من عملاء خفيفين مثبّتين على كل خادم من خوادمك. يتضمن المدير محرك تحليل القواعد، ومراقبة سلامة الملفات (‏FIM)، وكشف الثغرات، ولوحات متابعة الامتثال التنظيمي الجاهزة للاستخدام.

‏على خلاف ‏Datadog SIEM أو ‏Elastic SIEM السحابي، لا يفرض ‏Wazuh رسوماً على الاستيعاب وتبقى بياناتك داخل بنيتك التحتية. هذا هو النهج الأمثل حين تدير عدة خوادم وتحتاج إلى تبرير وضعك الأمني — لمراجعة أو لعميل أو لمعرفة ما يجري فعلياً.

‏ما الذي يضيفه Wazuh فعلياً لبنيتك التحتية

  • ‏مركزة سجلات جميع خوادم Linux على لوحة تحكم واحدة: لا مزيد من الاتصال بـ‏SSH من آلة إلى أخرى لقراءة auth.log.
  • ‏كشف الاختراق القائم على القواعد: محاولات القوة الغاشمة، ورفع الصلاحيات، وتعديلات الملفات الحساسة — مع تحليل متعدد المصادر.
  • ‏مراقبة سلامة الملفات (‏FIM) في الوقت الفعلي: أي تعديل على /etc/passwd أو /etc/sudoers أو ثنائيات النظام يُطلق تنبيهاً فورياً.
  • ‏قواعد الامتثال لـ‏PCI-DSS و‏HIPAA و‏GDPR و‏NIST SP 800-53 مدمجة في مجموعة القواعد الافتراضية — كل تنبيه يُوسَم تلقائياً بضوابط تنظيمية المرتبطة به.
  • ‏كشف نشط عن الثغرات: يستعلم ‏Wazuh قواعد بيانات ‏CVE ويحدد الحزم المثبتة المعرّضة لثغرات معروفة.
  • ‏تكامل مع ‏CrowdSec و‏Fail2ban: يربط ‏Wazuh ويؤرشف للامتثال، بينما يتصرف ‏CrowdSec على المحيط — الأداتان تتكاملان دون تكرار.
  • لا رسوم استيعاب: تحتفظ بالسجل التاريخي طالما سمح القرص بذلك.

المتطلبات الدنيا قبل البدء

‏نشر ‏Wazuh على عقدة واحدة (مدير + فهرس + لوحة تحكم في ثلاث حاويات ‏Docker) أكثر طلباً للموارد من أداة مراقبة بسيطة. فيما يلي الحد الأدنى الواقعي للاستخدام الإنتاجي.

‏للمدير (العقدة المركزية):
- ‏4 vCPU كحد أدنى، و8 vCPU للأسطول المؤلف من 10 خوادم أو أكثر.
- ‏8 جيجابايت RAM كحد أدنى للعقدة الواحدة. خطط لـ16 جيجابايت إن كنت تفهرس حجماً عالياً من الأحداث أو تدير أكثر من 50 عميلاً.
- ‏50 جيجابايت SSD كحد أدنى؛ 100 جيجابايت أو أكثر للاحتفاظ بسجل 90 يوماً.
- ‏Ubuntu 22.04 LTS أو Debian 12 محدّثان.
- ‏Docker Engine 24.0+ و‏Docker Compose v2 مثبّتان.
- ‏اسم نطاق لعرض لوحة ‏Wazuh عبر ‏HTTPS بواسطة وكيل عكسي.

‏لكل عميل (على خوادمك الأخرى):
- ‏العميل خفيف جداً: أقل من 64 ميجابايت ‏RAM وأقل من 1% ‏CPU في الوضع الطبيعي.
- ‏متوافق مع ‏Linux (Debian وUbuntu وAlmaLinux وRocky) و‏Windows و‏macOS.

‏المنافذ التي يجب فتحها على المدير:
- ‏1514/UDP و‏1514/TCP: اتصال العميل بالمدير.
- ‏1515/TCP: تسجيل العملاء.
- ‏55000/TCP: واجهة برمجة ‏Wazuh (وصول محلي فقط، لا تعرّض للعموم).
- ‏9200/TCP و‏9300/TCP: ‏Wazuh Indexer (استخدام داخلي بين الحاويات).
- ‏443/TCP: لوحة ‏Wazuh عبر الوكيل العكسي.

‏نشر Wazuh باستخدام Docker Compose: الإجراء الكامل

  1. تجهيز الخادم وتثبيت Docker

    ‏حدّث النظام، ثم ثبّت ‏Docker Engine و‏Docker Compose v2 من المستودع الرسمي:

    apt-get update && apt-get upgrade -y
    curl -fsSL https://get.docker.com | sh
    docker --version && docker compose version

    ‏تحقق من أن ‏docker compose v2 يستجيب (الأمر بدون شرطة). فعّل ‏Docker عند التشغيل: systemctl enable --now docker.

  2. ‏استنساخ مستودع Wazuh Docker الرسمي

    ‏ينشر ‏Wazuh ملفات ‏Docker Compose الرسمية في مستودع wazuh/wazuh-docker. استنسخ الفرع المطابق للإصدار المستقر الحالي (‏v4.14.8 وقت كتابة هذا المقال):

    git clone https://github.com/wazuh/wazuh-docker.git -b v4.14.8 --depth 1
    cd wazuh-docker/single-node

    ‏يحتوي مجلد single-node على docker-compose.yml المُهيأ مسبقاً بثلاثة خدمات: wazuh.manager وwazuh.indexer وwazuh.dashboard.

  3. توليد شهادات TLS بين المكوّنات

    ‏يتطلب ‏Wazuh شهادات ‏TLS للتواصل بين المدير والفهرس ولوحة التحكم. يوفر المستودع ملف ‏Compose مخصصاً لتوليدها:

    docker compose -f generate-indexer-certs.yml run --rm generator

    ‏تُكتب الشهادات في config/wazuh_indexer_ssl_certs/. هذه الخطوة مطلوبة مرة واحدة فقط؛ لتجديدها، أعد تشغيل الأمر ثم أعد تشغيل المجموعة.

  4. ‏تشغيل مجموعة Wazuh

    ‏شغّل الحاويات الثلاث في الخلفية:

    docker compose up -d

    ‏يستغرق التشغيل الأول تنزيل الصور الرسمية (نحو 2 جيجابايت) وتهيئة الفهرس. انتظر 60 إلى 90 ثانية، ثم تحقق من أن الخدمات الثلاث في حالة healthy:

    docker compose ps

    ‏إن بقي wazuh.indexer في حالة starting بعد 3 دقائق، افحص سجلاته: docker compose logs wazuh.indexer | tail -50.

  5. تغيير كلمة المرور الافتراضية للوحة التحكم

    ‏بيانات الاعتماد الافتراضية للوحة ‏Wazuh هي admin / SecretPassword. غيّرها فوراً عبر واجهة ‏OpenSearch Indexer:

    docker compose exec wazuh.indexer curl -sk -X PUT \
      https://localhost:9200/_plugins/_security/api/account \
      -u admin:SecretPassword \
      -H 'Content-Type: application/json' \
      -d '{"password": "كلمة_مرورك_الجديدة", "current_password": "SecretPassword"}'

    ‏ثم حدّث المتغير DASHBOARD_PASSWORD في docker-compose.yml وأعد تشغيل docker compose up -d لتستخدم لوحة التحكم كلمة المرور الجديدة.

  6. ‏عرض لوحة التحكم عبر وكيل عكسي HTTPS

    ‏لا تعرّض لوحة التحكم مباشرة على المنفذ 443 دون وكيل عكسي. باستخدام ‏nginx، أنشئ ‏vhost يُعيد التوجيه إلى https://127.0.0.1:5601 مع تعطيل التحقق من الشهادة الموقّعة ذاتياً على الجانب العلوي:

    server {
      listen 443 ssl;
      server_name wazuh.your-domain.com;
      location / {
        proxy_pass https://127.0.0.1:5601;
        proxy_ssl_verify off;
      }
    }

    ‏جدّد شهادة ‏Let's Encrypt باستخدام ‏Certbot. لا تعرّض المنافذ 9200 أو 55000 أو 1514/1515 للعموم — يجب فتح 1514-1515 فقط من عناوين ‏IP خوادمك.

  7. تثبيت عميل وتسجيله على خادم بعيد

    ‏على كل خادم ‏Linux تريد مراقبته، ثبّت عميل ‏Wazuh مشيراً إلى ‏IP أو ‏DNS للمدير. على ‏Ubuntu/Debian:

    curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | gpg --no-default-keyring \
      --keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg --import && \
      chmod 644 /usr/share/keyrings/wazuh.gpg
    echo "deb [signed-by=/usr/share/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/ stable main" | \
      tee /etc/apt/sources.list.d/wazuh.list
    apt-get update && apt-get install -y wazuh-agent

    ‏حدّد عنوان المدير في /var/ossec/etc/ossec.conf (الوسم <address>)، ثم شغّل العميل وفعّله:

    systemctl daemon-reload
    systemctl enable wazuh-agent
    systemctl start wazuh-agent

    ‏يظهر العميل في لوحة التحكم تحت Agents خلال 30 ثانية.

الإعداد بعد التثبيت: العملاء والقواعد ولوحات الامتثال

‏بمجرد تشغيل المجموعة وتوصيل العملاء الأوائل، ثلاثة تعديلات تُحسّن دقة التنبيهات بشكل ملحوظ.

‏تفعيل مراقبة سلامة الملفات (‏FIM). في إعدادات العميل (/var/ossec/etc/ossec.conf)، أضف المجلدات الحساسة في قسم <syscheck>:

<syscheck>
  <frequency>43200</frequency>
  <directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
  <directories check_all="yes">/var/www</directories>
</syscheck>

‏كل تعديل في هذه المجلدات يُطلق تنبيهاً من المستوى 7 أو أعلى.

‏استكشاف لوحات الامتثال. في لوحة ‏Wazuh، يعرض قسم Modules طُرقاً مُعدّة مسبقاً لـ‏PCI-DSS و‏HIPAA و‏GDPR و‏NIST SP 800-53. يرث كل تنبيه تلقائياً وسوم الامتثال المحددة في قواعد ‏XML للمدير.

‏ضبط حد مستوى التنبيه. الحد الافتراضي هو 3. لاستقبال التنبيهات المهمة فقط، عدّل /var/ossec/etc/ossec.conf على المدير وارفع الحد إلى 7 في قسم <alerts>:

<alerts>
  <log_alert_level>7</log_alert_level>
  <email_alert_level>9</email_alert_level>
</alerts>

‏أعد تشغيل المدير بعد أي تعديل في الإعدادات: docker compose restart wazuh.manager.

تصليب بيئة النشر

‏بعض الإعدادات تُقلّص سطح هجوم المدير نفسه.

‏عزل المدير على ‏VPS خاص أو على الأقل خلف جدار ناري يفتح المنافذ 1514-1515 فقط لعناوين ‏IP عملائك — ليس على 0.0.0.0.

‏تفعيل مصادقة ‏TLS المتبادلة بين العملاء والمدير بتوليد شهادات عملاء موقّعة من ‏CA الداخلي بدلاً من التسجيل التلقائي. تُفصّل وثائق ‏Wazuh الرسمية الإجراء تحت "Agent enrollment via the Wazuh manager API".

‏تشفير أحجام ‏Docker التي تحتوي على فهرس ‏OpenSearch والإعدادات — خاصة إن كان المدير على ‏VPS مشترك.

‏مراقبة المدير نفسه: ثبّت عميل ‏Wazuh على ‏VPS الذي يُشغّل المدير للكشف عن أي تعديل في صور ‏Docker أو ملفات الإعداد.

استكشاف الأخطاء: الأخطاء الشائعة

‏فيما يلي الأخطاء الخمسة الأكثر شيوعاً عند نشر ‏Wazuh مع ‏Docker، مع الرسائل الدقيقة والحلول.

‏1. max virtual memory areas vm.max_map_count [65530] is too low
‏يتطلب فهرس ‏OpenSearch 262144 على الأقل. أضف هذا السطر في /etc/sysctl.conf على المضيف (وليس داخل الحاوية): vm.max_map_count=262144، ثم طبّق بـ‏sysctl -p. هذا أكثر الأخطاء شيوعاً على ‏VPS جديد.

‏2. بقاء wazuh.indexer في حالة starting إلى أجل غير مسمى
‏افحص السجلات أولاً (docker compose logs wazuh.indexer). إن رأيت bootstrap checks failed، فالسبب غالباً vm.max_map_count (انظر أعلاه) أو نقص في الذاكرة. إن رأيت certificate not found، أعد توليد الشهادات.

‏3. ظهور العميل بحالة Disconnected في لوحة التحكم
‏تحقق من أن المنفذ 1514 مفتوح للدخول على المدير وأن عنوانه مُعيَّن بشكل صحيح في إعدادات العميل. اختبر الاتصال: nc -zv <IP_MANAGER> 1514.

‏4. ERROR: [agent_auth] Unable to create ssl context
‏لا يمكن للعميل التحقق من شهادة ‏TLS للمدير. تأكد من أن ossec.cfg يشير إلى اسم ‏DNS وليس ‏IP المجردة إن كنت تستخدم شهادة مُسمّاة.

‏5. Too many open files في سجلات المدير
‏زِد حدود nofile على المضيف في /etc/security/limits.conf: * soft nofile 65536 و* hard nofile 65536، وأضف ulimits: nofile: soft: 65536 hard: 65536 لخدمة wazuh.manager في docker-compose.yml.

‏Wazuh ضمن منظومة الأمان لديك

‏Wazuh يبلغ أقصى فاعليته حين يتكامل مع ما لديك. بالإضافة إلى ‏CrowdSec (الذي يحجب ‏IP على مستوى الشبكة)، يُغطي جانبَي المحيط والعمق. مع ‏Fail2ban يضيف التحليل والأرشفة للامتثال التي لا يستطيع ‏Fail2ban إنتاجها وحده. وإن كانت لديك بالفعل بيئة ‏Grafana + Prometheus، يُتمّم ‏Wazuh مراقبة النظام بطبقة أمنية: ‏Prometheus يخبرك أن ‏CPU عند 90%، وWazuh يخبرك لماذا.

‏تصليب خادمك يُحدّد وضعاً أمنياً ثابتاً، وWazuh هو المراقبة المستمرة التي تتحقق من صموده عبر الزمن.

‏لاستضافة مدير ‏Wazuh على بنية تحتية تتحكم في مستوى أمانها، اطّلع على كيف تُهيكل ServOrbit أمان بنيتها التحتية.

بنيتك التحتية تحت المراقبة

‏خادم VPS بصلاحية root واختيار نظام التشغيل وIPv4 مخصص — ما تحتاجه لتشغيل مدير Wazuh دون قيود.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو تواصل مع فريقنا — معاودة اتصال أو WhatsApp أو بريد إلكتروني. الدعم بـالعربية والفرنسية والإنجليزية.

راسلنا على WhatsAppيُفتح في علامة تبويب جديدة