Cybersécurité

Déployer agents Wazuh sur multi-VPS Linux/Windows : tutoriel 2026

14 min de lecture

📍 Article principal de la série : Wazuh 2026 : guide pratique.

Manager Wazuh installé, étape suivante : déployer agents sur tous les endpoints. Ce tutoriel détaille le déploiement bulk via Ansible et script bash, validé sur 10-50 VPS chez plusieurs PME ouest-africaines.

Prérequis

  • Wazuh Manager en production (voir tutoriel installation).
  • SSH key access vers VPS cibles.
  • Ansible 2.14+ ou bash + sshpass.
  • Niveau attendu : intermédiaire.
  • Temps estimé : 30-60 minutes.

Méthode 1 — Script bash simple

Sur le Manager : générer authd password

cat /var/ossec/etc/authd.pass
# Note la passphrase (ou en générer une)

Script deploy.sh

#!/bin/bash
WAZUH_MANAGER="siem.votre-entreprise.com"
WAZUH_AGENT_PASSWORD="passphrase-from-manager"

# Détection 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

# Configurer Manager
sed -i "s/MANAGER_IP/${WAZUH_MANAGER}/g" /var/ossec/etc/ossec.conf

# Enregistrer auto
WAZUH_REGISTRATION_PASSWORD="${WAZUH_AGENT_PASSWORD}" \
  /var/ossec/bin/agent-auth -m "${WAZUH_MANAGER}" -P

systemctl daemon-reload
systemctl enable --now wazuh-agent

Boucle SSH sur 10 VPS

for vps in vps1.fqdn vps2.fqdn vps3.fqdn; do
  ssh root@$vps 'bash -s' < deploy.sh
done

Méthode 2 — Ansible (recommandé > 5 VPS)

Inventory hosts.ini

[wazuh_agents]
vps1.fqdn ansible_user=root
vps2.fqdn ansible_user=root
vps3.fqdn ansible_user=root

Playbook wazuh-agent.yml

---
- 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

Run

export WAZUH_REG_PASSWORD="passphrase"
ansible-playbook -i hosts.ini wazuh-agent.yml

Windows Server agent

PowerShell sur chaque Windows :

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

Vérification post-deploy

# Sur Manager
/var/ossec/bin/agent_control -l
# Liste tous agents avec status

Dashboard → Agents : voir tous, status « Active », OS détecté.

Erreurs fréquentes

Erreur Cause Solution
« Connection refused » Port 1514/1515 firewall Manager UFW allow from agents IPs
« Auth password incorrect » authd.pass mal copié Régénérer + redéployer
Agent « Disconnected » Manager redémarré Restart agent côté VPS
Hostname duplicate Plusieurs agents même nom Force unique hostname
Latence agent reports Bandwidth limité Réduire frequency send

Ce que les retours d'expérience locaux ajoutent

Trois précisions. VPS chez plusieurs hébergeurs : Hetzner + OVH + Africa Data Centres. Wazuh agnostique, juste DNS Manager accessible. Tailscale recommandé : agents et Manager sur tailnet, ports privés, pas exposition publique. Auto-renaming : nommer agents par hostname + datacenter (ex : vps-prod-fsn1).

Tutoriels frères

FAQ

Capacité agents par Manager ? 1 000 par Manager standard. Cluster pour plus.

Mises à jour agents ? apt upgrade wazuh-agent automatique.

Container Docker ? Image agent existe pour environnements containerisés.

macOS ? Oui, .pkg installer.

Désinstallation ? apt purge wazuh-agent + remove from Manager.

Pour explorer plus loin

Vous cherchez un hébergement web sérieux et abordable ?

Hostinger offre des serveurs avec installation WordPress en un clic et un panel simple. Notre équipe l'utilise au quotidien.

Découvrir Hostinger →

Lien d affiliation. Si vous achetez via ce lien, le blog reçoit une petite commission sans surcoût pour vous.

Étape 1 : choisir où installer le Wazuh Manager

Le Manager Wazuh est le cerveau qui reçoit les événements de tous les agents. Il doit tourner sur un VPS dédié, pas sur la même machine que vos applications. Pour une PME au Sénégal ou en Côte d'Ivoire qui supervise 5 à 20 VPS, un Hetzner CPX31 (4 vCPU, 8 Go RAM, 160 Go SSD, environ 14 EUR/mois soit 9 180 FCFA) est le bon dimensionnement en 2026 avec Wazuh 4.9.

Évitez les VPS à moins de 4 Go : OpenSearch (le moteur d'indexation embarqué dans Wazuh) consomme beaucoup de RAM et tombera en boucle de redémarrage. Le signal d'un sous-dimensionnement : systemctl status wazuh-indexer affiche des "OutOfMemoryError" dans les logs.

Étape 2 : installer le Manager via le script officiel

Wazuh fournit un script d'installation tout-en-un qui pose le manager, l'indexer (OpenSearch) et le dashboard sur le même hôte. C'est l'option recommandée pour démarrer.

curl -sO https://packages.wazuh.com/4.9/wazuh-install.sh
sudo bash ./wazuh-install.sh -a

Le script télécharge les paquets, génère les certificats internes, et démarre les trois services. Comptez 8 à 12 minutes selon la bande passante du VPS. À la fin, le mot de passe du compte admin est affiché dans le terminal : copiez-le immédiatement dans un gestionnaire de mots de passe, il ne sera plus jamais réaffiché.

Étape 3 : ouvrir le dashboard et vérifier l'état

Le dashboard Wazuh écoute sur le port 443 du VPS Manager. Connectez-vous via https://IP_DU_MANAGER avec l'utilisateur admin et le mot de passe noté à l'étape 2. Le navigateur affichera un avertissement de certificat auto-signé : c'est attendu pour une installation initiale.

Naviguez vers Server Management → Status. Vous devez voir wazuh-manager, wazuh-indexer et wazuh-dashboard tous en "running". Si l'un est "stopped", consultez journalctl -u wazuh-indexer -n 100 pour identifier le problème, le plus souvent un manque de mémoire ou un port déjà utilisé.

Étape 4 : préparer les VPS cibles à recevoir l'agent

Sur chaque VPS à superviser (serveurs web Nginx, bases Postgres, applications Node), installez le paquet wazuh-agent. La commande exacte dépend de la distribution. Pour Ubuntu 24.04 (le plus courant en 2026) :

curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | sudo gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg --import
sudo 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" | sudo tee /etc/apt/sources.list.d/wazuh.list
sudo apt update
sudo apt install wazuh-agent

L'agent est installé mais pas encore démarré : il manque l'enrôlement auprès du manager.

Étape 5 : enrôler chaque agent avec une clé unique

Sur le manager, générez une clé d'enrôlement par agent. Wazuh propose deux méthodes : enrôlement automatique via authd (port 1515) ou ajout manuel via l'interface. Pour 5 à 20 agents, le manuel reste plus traçable.

# Sur le manager
sudo /var/ossec/bin/manage_agents
# Choisir A (Add), saisir le nom (ex: web-dakar-01), l'IP source
# Choisir E (Extract), copier la clé base64 affichée
# Sur l'agent
sudo /var/ossec/bin/manage_agents
# Choisir I (Import), coller la clé
sudo systemctl enable --now wazuh-agent

Le marqueur de succès : sur le dashboard du manager, dans Agents → Overview, le nouvel agent apparaît en "Active" sous 30 secondes.

Étape 6 : activer les règles utiles pour une PME

Wazuh livre 3 000+ règles par défaut. La plupart ne sont pas pertinentes pour une PME. Activez en priorité : détection de connexions SSH brute-force (règle 5710), modification de fichiers critiques sous /etc (FIM, File Integrity Monitoring), tentatives de privilege escalation (sudo non autorisé), et présence de processus inhabituels (rootcheck).

Désactivez les règles bruyantes inutiles dans votre contexte : audit Windows si vous n'avez que du Linux, règles AWS CloudTrail si vous êtes sur Hetzner, règles Office 365 si vous n'utilisez pas Microsoft 365. Cela réduit le bruit et rend les vraies alertes visibles.

Étape 7 : router les alertes critiques vers WhatsApp Business

Wazuh peut déclencher des "Active Responses" et des "Integrators". Créez un integrator personnalisé qui envoie les alertes de niveau 10+ (intrusion confirmée) vers un webhook. Ce webhook est un petit relais Node.js qui appelle l'API WhatsApp Cloud (Graph API v25.0) pour notifier l'admin réseau sur son téléphone.

# /var/ossec/etc/ossec.conf (extrait)
<integration>
  <name>custom-whatsapp</name>
  <hook_url>https://relay.mapme.sn/wazuh-to-whatsapp</hook_url>
  <level>10</level>
  <alert_format>json</alert_format>
</integration>

Pour une équipe IT à Dakar ou à Abidjan qui n'est pas devant un écran 24h/24, recevoir l'alerte sur WhatsApp en moins de 30 secondes change la donne face à une compromission en cours.

Étape 8 : centraliser les logs avec Filebeat (option avancée)

Si vous voulez aussi centraliser les logs Nginx, Postgres ou applicatifs, ajoutez Filebeat sur chaque agent et faites pointer la sortie vers l'OpenSearch du manager. Cela transforme Wazuh en SIEM complet, pas seulement en HIDS. Le coût en RAM côté manager monte rapidement : passez à un Hetzner CPX41 (8 vCPU, 16 Go) au-delà de 10 sources de logs.

Pour démarrer, restez sur la configuration Wazuh seule. Vous ajouterez Filebeat dans 3 à 6 mois quand vous saurez quels logs valent vraiment l'analyse centralisée.

Étape 9 : automatiser les mises à jour mensuelles

Wazuh publie une version mineure toutes les 4 à 6 semaines. Mettez à jour les agents via APT (apt upgrade wazuh-agent) après avoir mis à jour le manager. Ne sautez jamais une version majeure : la rétro-compatibilité agent ↔ manager est garantie sur ±1 version mineure seulement.

Sur un angle proche, consultez notre guide Coolify sur Hetzner et le tutoriel sécurisation d'un VPS Ubuntu. Avec un Manager Wazuh + 10 agents sur des VPS Hetzner, une PME ouest-africaine couvre l'essentiel de la détection d'intrusion pour environ 25 EUR/mois (16 400 FCFA) tout compris, soit le coût d'un déjeuner d'équipe par mois.

Étape 1 : choisir où installer le Wazuh Manager

Le Manager Wazuh est le cerveau qui reçoit les événements de tous les agents. Il doit tourner sur un VPS dédié, pas sur la même machine que vos applications. Pour une PME au Sénégal ou en Côte d'Ivoire qui supervise 5 à 20 VPS, un Hetzner CPX31 (4 vCPU, 8 Go RAM, 160 Go SSD, environ 14 EUR/mois soit 9 180 FCFA) est le bon dimensionnement en 2026 avec Wazuh 4.9.

Évitez les VPS à moins de 4 Go : OpenSearch (le moteur d'indexation embarqué dans Wazuh) consomme beaucoup de RAM et tombera en boucle de redémarrage. Le signal d'un sous-dimensionnement : systemctl status wazuh-indexer affiche des "OutOfMemoryError" dans les logs.

Étape 2 : installer le Manager via le script officiel

Wazuh fournit un script d'installation tout-en-un qui pose le manager, l'indexer (OpenSearch) et le dashboard sur le même hôte. C'est l'option recommandée pour démarrer.

curl -sO https://packages.wazuh.com/4.9/wazuh-install.sh
sudo bash ./wazuh-install.sh -a

Le script télécharge les paquets, génère les certificats internes, et démarre les trois services. Comptez 8 à 12 minutes selon la bande passante du VPS. À la fin, le mot de passe du compte admin est affiché dans le terminal : copiez-le immédiatement dans un gestionnaire de mots de passe, il ne sera plus jamais réaffiché.

Étape 3 : ouvrir le dashboard et vérifier l'état

Le dashboard Wazuh écoute sur le port 443 du VPS Manager. Connectez-vous via https://IP_DU_MANAGER avec l'utilisateur admin et le mot de passe noté à l'étape 2. Le navigateur affichera un avertissement de certificat auto-signé : c'est attendu pour une installation initiale.

Naviguez vers Server Management → Status. Vous devez voir wazuh-manager, wazuh-indexer et wazuh-dashboard tous en "running". Si l'un est "stopped", consultez journalctl -u wazuh-indexer -n 100 pour identifier le problème, le plus souvent un manque de mémoire ou un port déjà utilisé.

Étape 4 : préparer les VPS cibles à recevoir l'agent

Sur chaque VPS à superviser (serveurs web Nginx, bases Postgres, applications Node), installez le paquet wazuh-agent. La commande exacte dépend de la distribution. Pour Ubuntu 24.04 (le plus courant en 2026) :

curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | sudo gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg --import
sudo 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" | sudo tee /etc/apt/sources.list.d/wazuh.list
sudo apt update
sudo apt install wazuh-agent

L'agent est installé mais pas encore démarré : il manque l'enrôlement auprès du manager.

Étape 5 : enrôler chaque agent avec une clé unique

Sur le manager, générez une clé d'enrôlement par agent. Wazuh propose deux méthodes : enrôlement automatique via authd (port 1515) ou ajout manuel via l'interface. Pour 5 à 20 agents, le manuel reste plus traçable.

# Sur le manager
sudo /var/ossec/bin/manage_agents
# Choisir A (Add), saisir le nom (ex: web-dakar-01), l'IP source
# Choisir E (Extract), copier la clé base64 affichée
# Sur l'agent
sudo /var/ossec/bin/manage_agents
# Choisir I (Import), coller la clé
sudo systemctl enable --now wazuh-agent

Le marqueur de succès : sur le dashboard du manager, dans Agents → Overview, le nouvel agent apparaît en "Active" sous 30 secondes.

Étape 6 : activer les règles utiles pour une PME

Wazuh livre 3 000+ règles par défaut. La plupart ne sont pas pertinentes pour une PME. Activez en priorité : détection de connexions SSH brute-force (règle 5710), modification de fichiers critiques sous /etc (FIM, File Integrity Monitoring), tentatives de privilege escalation (sudo non autorisé), et présence de processus inhabituels (rootcheck).

Désactivez les règles bruyantes inutiles dans votre contexte : audit Windows si vous n'avez que du Linux, règles AWS CloudTrail si vous êtes sur Hetzner, règles Office 365 si vous n'utilisez pas Microsoft 365. Cela réduit le bruit et rend les vraies alertes visibles.

Étape 7 : router les alertes critiques vers WhatsApp Business

Wazuh peut déclencher des "Active Responses" et des "Integrators". Créez un integrator personnalisé qui envoie les alertes de niveau 10+ (intrusion confirmée) vers un webhook. Ce webhook est un petit relais Node.js qui appelle l'API WhatsApp Cloud (Graph API v25.0) pour notifier l'admin réseau sur son téléphone.

# /var/ossec/etc/ossec.conf (extrait)
<integration>
  <name>custom-whatsapp</name>
  <hook_url>https://relay.mapme.sn/wazuh-to-whatsapp</hook_url>
  <level>10</level>
  <alert_format>json</alert_format>
</integration>

Pour une équipe IT à Dakar ou à Abidjan qui n'est pas devant un écran 24h/24, recevoir l'alerte sur WhatsApp en moins de 30 secondes change la donne face à une compromission en cours.

Étape 8 : centraliser les logs avec Filebeat (option avancée)

Si vous voulez aussi centraliser les logs Nginx, Postgres ou applicatifs, ajoutez Filebeat sur chaque agent et faites pointer la sortie vers l'OpenSearch du manager. Cela transforme Wazuh en SIEM complet, pas seulement en HIDS. Le coût en RAM côté manager monte rapidement : passez à un Hetzner CPX41 (8 vCPU, 16 Go) au-delà de 10 sources de logs.

Pour démarrer, restez sur la configuration Wazuh seule. Vous ajouterez Filebeat dans 3 à 6 mois quand vous saurez quels logs valent vraiment l'analyse centralisée.

Étape 9 : automatiser les mises à jour mensuelles

Wazuh publie une version mineure toutes les 4 à 6 semaines. Mettez à jour les agents via APT (apt upgrade wazuh-agent) après avoir mis à jour le manager. Ne sautez jamais une version majeure : la rétro-compatibilité agent ↔ manager est garantie sur ±1 version mineure seulement.

Pour étoffer le tableau, consultez notre guide Coolify sur Hetzner et le tutoriel sécurisation d'un VPS Ubuntu. Avec un Manager Wazuh + 10 agents sur des VPS Hetzner, une PME ouest-africaine couvre l'essentiel de la détection d'intrusion pour environ 25 EUR/mois (16 400 FCFA) tout compris, soit le coût d'un déjeuner d'équipe par mois.

Partager