📍 المقالة الرئيسية للمجموعة: Wazuh 2026: الدليل الكامل.
Manager Wazuh مثبت، الخطوة التالية: نشر agents على جميع endpoints. هذا الدرس يفصل النشر بالجملة عبر Ansible وbash، مُختبَر على 10-50 VPS عند عدة شركات إفريقية فرنكوفونية. الهدف: نشر agent على عشرات الخوادم في أقل من ساعة بدلاً من عدة أيام يدوياً.
المتطلبات
Wazuh Manager في الإنتاج (راجع درس التثبيت). وصول SSH key إلى VPS الهدف. Ansible 2.14+ أو bash + sshpass. المستوى المتوقع: متوسط. الوقت المقدر: 30 إلى 60 دقيقة.
الطريقة 1 — script bash بسيط
على الـ Manager: توليد authd password
كلمة سر authd تسمح للـ agents بالتسجيل تلقائياً في Manager دون تدخل يدوي. هذه الكلمة يجب أن تكون قوية وسرية لأن أي شخص يعرفها يمكنه إضافة agent إلى Wazuh الخاص بك. خزنها في Vaultwarden مع باقي بيانات اعتماد البنية التحتية.
cat /var/ossec/etc/authd.pass
# سجل passphrase (أو ولِّد واحدة)
Script deploy.sh
هذا script bash بسيط يكتشف OS تلقائياً (Debian أو RHEL) ويثبت agent مع تكوين Manager المحدد. مفيد للنشر على عدد صغير من VPS أو للاختبار قبل استخدام Ansible للنشر الكبير.
#!/bin/bash
WAZUH_MANAGER="siem.votre-entreprise.com"
WAZUH_AGENT_PASSWORD="passphrase-from-manager"
# اكتشاف OS
if [ -f /etc/debian_version ]; then
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | apt-key add -
echo "deb 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
fi
# تكوين Manager
sed -i "s/MANAGER_IP/${WAZUH_MANAGER}/g" /var/ossec/etc/ossec.conf
# تسجيل تلقائي
WAZUH_REGISTRATION_PASSWORD="${WAZUH_AGENT_PASSWORD}" \
/var/ossec/bin/agent-auth -m "${WAZUH_MANAGER}" -P
systemctl daemon-reload
systemctl enable --now wazuh-agent
حلقة SSH على 10 VPS
للـ VPS قليلة، حلقة SSH بسيطة تنشر السكربت على كل خادم. لـ 10+ VPS، Ansible أكثر كفاءة لأنه يدير التوازي والاسترداد عند الفشل.
for vps in vps1.fqdn vps2.fqdn vps3.fqdn; do
ssh root@$vps 'bash -s' < deploy.sh
done
الطريقة 2 — Ansible (موصى به > 5 VPS)
Inventory hosts.ini
Ansible inventory يسرد VPS الهدف. هذا التنسيق البسيط يكفي لمعظم الحالات. لبيئات أكثر تعقيداً، dynamic inventory (AWS، Hetzner Cloud) ممكن.
[wazuh_agents]
vps1.fqdn ansible_user=root
vps2.fqdn ansible_user=root
vps3.fqdn ansible_user=root
Playbook wazuh-agent.yml
هذا playbook كامل ينفذ كل خطوات النشر بشكل idempotent. إذا كان agent مثبتاً بالفعل، الـ playbook يتحقق فقط من تكوينه دون إعادة التثبيت. هذا يسمح بإعادة التشغيل الآمنة لإصلاح الانحرافات أو لتطبيق تكوينات جديدة.
---
- hosts: wazuh_agents
vars:
wazuh_manager: siem.votre-entreprise.com
wazuh_agent_password: "{{ lookup('env','WAZUH_REG_PASSWORD') }}"
tasks:
- name: Add Wazuh repo key
apt_key:
url: https://packages.wazuh.com/key/GPG-KEY-WAZUH
state: present
- name: Add Wazuh repo
apt_repository:
repo: deb https://packages.wazuh.com/4.x/apt/ stable main
state: present
- name: Install Wazuh agent
apt:
name: wazuh-agent
state: latest
update_cache: yes
- name: Configure Manager IP
replace:
path: /var/ossec/etc/ossec.conf
regexp: 'MANAGER_IP'
replace: '{{ wazuh_manager }}'
- name: Register agent
shell: |
WAZUH_REGISTRATION_PASSWORD={{ wazuh_agent_password }} \
/var/ossec/bin/agent-auth -m {{ wazuh_manager }} -P
args:
creates: /var/ossec/etc/client.keys
- name: Start service
systemd:
name: wazuh-agent
enabled: yes
state: restarted
التشغيل
export WAZUH_REG_PASSWORD="passphrase"
ansible-playbook -i hosts.ini wazuh-agent.yml
Windows Server agent
للخوادم Windows، PowerShell ينفذ تثبيتاً مشابهاً. msi installer يدعم تكوين Manager مباشرة من سطر الأوامر، مما يبسط النشر المؤتمت.
Invoke-WebRequest -Uri https://packages.wazuh.com/4.x/windows/wazuh-agent-4.10.0-1.msi -OutFile \$env:tmp\wazuh-agent.msi
msiexec /i \$env:tmp\wazuh-agent.msi /q WAZUH_MANAGER="siem.votre-entreprise.com" WAZUH_REGISTRATION_PASSWORD="passphrase"
Start-Service WazuhSvc
التحقق post-deploy
بعد النشر، تحقق من جانب Manager أن جميع agents متصلة وفي حالة active. هذه الخطوة حاسمة لأنه قد يحدث أن agent يبدو مثبتاً محلياً لكنه لا يصل إلى Manager بسبب جدار ناري أو DNS.
# على Manager
/var/ossec/bin/agent_control -l
# يسرد جميع agents مع status
Dashboard → Agents: شاهد الجميع، الحالة «Active»، OS مكتشف بشكل صحيح.
الأخطاء الشائعة
| الخطأ | السبب | الحل |
|---|---|---|
| «Connection refused» | منفذ 1514/1515 محظور Manager | UFW allow from agents IPs |
| «Auth password incorrect» | authd.pass منسوخ بشكل سيئ | أعد التوليد + أعد النشر |
| Agent «Disconnected» | Manager أعيد تشغيله | Restart agent من جانب VPS |
| Hostname duplicate | عدة agents بنفس الاسم | إجبار hostname فريد |
| زمن استجابة تقارير agent | عرض النطاق محدود | تقليل تردد الإرسال |
التكيف مع السياق المغاربي وغرب إفريقيا
ثلاث توضيحات. VPS عند عدة مزودين. Hetzner + OVH + Africa Data Centres. Wazuh agnostic، فقط DNS Manager متاح. هذا التنوع في الاستضافة يحمي من الأعطال المحلية ويوفر نسخاً احتياطية جغرافية. Tailscale موصى به. Agents وManager على tailnet، منافذ خاصة، لا تعرض عامة. هذا يضمن أن مرور Wazuh مشفر وغير مرئي للإنترنت العام، ويبسط الجدار الناري. التسمية التلقائية. اسم agents حسب hostname + datacenter (مثلاً vps-prod-fsn1). هذا التنسيق يسمح بالعثور بسرعة على الخادم في حالة وجود مشكلة، خاصة عندما يكون لديك عشرات VPS موزعة على عدة مزودين.
دروس الإخوة في المجموعة
الأسئلة المتكررة
سعة agents لكل Manager؟ 1,000 لكل Manager قياسي. Cluster لأكثر.
تحديث agents؟ apt upgrade wazuh-agent تلقائياً.
Container Docker؟ صورة agent موجودة لبيئات الحاويات.
macOS؟ نعم، .pkg installer.
إلغاء التثبيت؟ apt purge wazuh-agent + remove from Manager.
للاستزادة
- 🔝 العودة للمرجع: الدليل الكامل Wazuh 2026
- وثائق Agents: documentation.wazuh.com/agents