Sécurité
SIEM
Monitoring

SIEM open source : déployer Wazuh pour la détection d'intrusion

15 janvier 2026

6 min de lecture

Wazuh est un SIEM (Security Information and Event Management) open source basé sur OSSEC. Il détecte les intrusions, analyse les vulnérabilités, vérifie la compliance et répond aux incidents en temps réel. Contrairement aux solutions commerciales, Wazuh vous laisse contrôle total sur vos données de sécurité — idéal pour monitorer des infrastructures sensibles.

Architecture Wazuh

Wazuh repose sur 4 composants principaux :

  1. Manager Wazuh : cœur du système. Reçoit, traite et corrèle les événements des agents. Exécute les règles de détection et génère les alertes.
  2. Indexer : basé sur OpenSearch (fork d'Elasticsearch), stocke tous les logs et les alertes. Permet les recherches et analyses historiques.
  3. Dashboard : interface web (remplace Kibana) pour visualiser les alertes, les vulnérabilités, la compliance (CIS, PCI-DSS, GDPR).
  4. Agents : déployés sur les serveurs à monitorer. Collectent les logs, appliquent les règles localement, envoient les alertes au manager.

La communication agent → manager est chiffrée (TLS 1.3) et authentifiée via certificats pré-enregistrés.

Installation du Manager

Sur Debian/Ubuntu 22.04
# Ajouter le dépôt Wazuh
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

# Installer le manager et l'indexer
apt install wazuh-manager wazuh-indexer wazuh-dashboard -y

# Démarrer les services
systemctl enable --now wazuh-manager wazuh-indexer wazuh-dashboard

# Vérifier le statut
systemctl status wazuh-manager wazuh-indexer wazuh-dashboard
Sur RHEL/CentOS 8+
# Ajouter le dépôt
rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH
cat > /etc/yum.repos.d/wazuh.repo << 'EOF'
[wazuh]
name=Wazuh open source repository
baseurl=https://packages.wazuh.com/4.x/yum/
enabled=1
gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH
EOF

# Installer
dnf install wazuh-manager wazuh-indexer wazuh-dashboard -y

# Démarrer
systemctl enable --now wazuh-manager wazuh-indexer wazuh-dashboard

Interface : https://IP_MANAGER:443 — identifiants par défaut admin / SecretPassword (à changer immédiatement).

Installation des Agents

Agent Linux (Debian/Ubuntu)
# Installer l'agent
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 wazuh-agent -y

# Configurer le manager
sed -i 's/<manager_ip>127.0.0.1<\/manager_ip>/<manager_ip>192.168.1.100<\/manager_ip>/' /var/ossec/etc/ossec.conf

# Redémarrer l'agent
systemctl enable --now wazuh-agent
systemctl restart wazuh-agent

# Vérifier la connexion
tail -f /var/ossec/logs/ossec.log | grep "Connected to the server"
Agent Linux (RHEL/CentOS)
# Installer
rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH
cat > /etc/yum.repos.d/wazuh.repo << 'EOF'
[wazuh]
name=Wazuh open source repository
baseurl=https://packages.wazuh.com/4.x/yum/
enabled=1
gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH
EOF

dnf install wazuh-agent -y

# Configurer
sed -i 's/<manager_ip>127.0.0.1<\/manager_ip>/<manager_ip>192.168.1.100<\/manager_ip>/' /var/ossec/etc/ossec.conf

# Démarrer
systemctl enable --now wazuh-agent
Enregistrement des Agents (méthode sécurisée)

Sur le Manager, générer une clé d'enregistrement :

/var/ossec/bin/wazuh-control start

# Créer un agent avec authentification
/var/ossec/bin/manage_agents -a -n "production-web-01" -i 192.168.1.50 -e 001

Sur l'Agent, importer la clé :

/var/ossec/bin/manage_agents -i /tmp/agent-key-001.txt
/var/ossec/bin/wazuh-control restart

Règles de Détection Personnalisées

Les règles Wazuh sont stockées en XML et appliquées en temps réel. Chaque règle a un identifiant unique (id), une sévérité (level: 0-15) et des conditions de correspondance.

Détection de Brute-force SSH
<!-- /var/ossec/etc/rules/local_rules.xml -->
<group name="sshd_custom">
  <rule id="100001" level="6">
    <if_sid>5710</if_sid>
    <field name="srcip">^192.168.1.</field>
    <match>Failed password</match>
    <description>SSH failed login from internal network</description>
  </rule>

  <rule id="100002" level="10">
    <if_sid>100001</if_sid>
    <same_source_ip />
    <frequency>5</frequency>
    <timeframe>600</timeframe>
    <description>Brute force SSH attack detected (5 failed logins in 10 min)</description>
  </rule>
</group>
Détection de Modification de Fichiers Critiques
<group name="fim_custom">
  <rule id="100010" level="9">
    <if_sid>550</if_sid>
    <field name="file">/etc/passwd</field>
    <description>Critical file /etc/passwd modified</description>
  </rule>

  <rule id="100011" level="8">
    <if_sid>550</if_sid>
    <field name="file">/etc/sudoers</field>
    <description>Sudoers configuration changed</description>
  </rule>
</group>

Après modification, redémarrer le manager :

systemctl restart wazuh-manager

File Integrity Monitoring (FIM)

Syscheck surveille les modifications de fichiers et répertoires. Idéal pour détecter les backdoors, les rootkits ou les modifications non autorisées.

<!-- /var/ossec/etc/ossec.conf -->
<syscheck>
  <!-- Audit des binaires système -->
  <directories check_all="yes" realtime="yes">/bin</directories>
  <directories check_all="yes" realtime="yes">/sbin</directories>
  <directories check_all="yes" realtime="yes">/usr/bin</directories>
  <directories check_all="yes" realtime="yes">/usr/sbin</directories>

  <!-- Audit de la configuration -->
  <directories check_all="yes" report_changes="yes">/etc</directories>
  <directories check_all="yes" report_changes="yes">/etc/ssh</directories>

  <!-- Audit du contenu web -->
  <directories check_all="yes" realtime="yes">/var/www/html</directories>

  <!-- Exclure les fichiers temporaires -->
  <ignore>/var/log</ignore>
  <ignore>/var/cache</ignore>
  <ignore>/var/run</ignore>
</syscheck>

L'option realtime="yes" détecte les modifications instantanément. L'option report_changes="yes" crée un diff pour les fichiers de config.

Redémarrer l'agent après modification :

systemctl restart wazuh-agent

Dashboard et Visualisations

Le Wazuh Dashboard propose des vues préconstruites :

  • Security : alertes en temps réel, répartition par règle, top 10 des sources
  • Threat Intelligence : IPs menaçantes, géolocalisation des attaques
  • Compliance : statut PCI-DSS, CIS Benchmark, GDPR
  • Vulnerabilities : scan CVE, versions logicielles exposées
  • File Integrity Monitoring : fichiers modifiés, comparaison avant/après

Pour créer une visualisation personnalisée :

  1. Aller dans Analytics → Discover
  2. Créer une requête (ex: rule.level: [9 TO 15])
  3. SaveCreate visualization (graphique, heatmap, timeline)
  4. Ajouter au Dashboard

Alertes et Notifications

Intégration Slack

Créer un webhook Slack : https://api.slack.com/messaging/webhooks

Éditer /var/ossec/etc/ossec.conf :

<integration>
  <name>slack</name>
  <hook_url>https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXX</hook_url>
  <level>6</level>
  <alert_format>json</alert_format>
  <group>sshd_custom,fim_custom</group>
</integration>

Redémarrer : systemctl restart wazuh-manager

Intégration Email
<email_notification>
  <email_from>wazuh@company.com</email_from>
  <smtp_server>smtp.gmail.com</smtp_server>
  <smtp_port>587</smtp_port>
  <email_to>secops@company.com</email_to>
</email_notification>

<alert>
  <email_alerts>yes</email_alerts>
  <log_alert_level>7</log_alert_level>
</alert>
Seuils d'Alerte

Définir des niveaux de sévérité (0-3: info, 4-7: warning, 8-11: high, 12-15: critical) et router les alertes selon le contexte :

<alert_level>5</alert_level>

Seules les alertes de niveau ≥5 seront loggées et transmises aux intégrations.

Bonnes Pratiques

Sizing
  • CPU : 2-4 cores pour moins de 10 agents, 8+ cores au-delà de 100 agents
  • RAM : 4 GB minimum (Manager + Indexer), +2 GB par 50 agents
  • Disque : ~500 GB par an pour 10 agents (retenir 90 jours)
Rétention des Logs

Éditer /var/ossec/etc/ossec.conf :

<indexer>
  <shards>3</shards>
  <replicas>1</replicas>
  <refresh_interval>30s</refresh_interval>
</indexer>

<!-- Garder 90 jours, archiver les anciens -->
<archive>
  <retention>90</retention>
  <directory>wazuh-events-%Y.%m.%d</directory>
</archive>
Tuning pour Réduire les Faux Positifs
  1. Whitelister les IPs de confiance :
<rule id="100001" level="6">
  <if_sid>5710</if_sid>
  <field name="srcip">^10.0.0.</field>
  <noalert />
  <description>SSH login from trusted range - ignored</description>
</rule>
  1. Augmenter les seuils de brute-force (ex: 10 tentatives au lieu de 5)
  2. Désactiver les règles non pertinentes dans /var/ossec/etc/rules/decoders.xml
Performance
  • Monitorer cpu et memory via le Dashboard
  • Limiter le nombre de logs ingérés : augmenter <logrotate> à 20 MB
  • Utiliser des filtres d'indexation pour réduire la taille des indices

Intégration avec l'Écosystème de Sécurité

Complétez Wazuh avec :

  • Fail2ban : blocage proactif basé sur les logs Wazuh
  • CrowdSec : IPS collaboratif alimenté par vos détections
  • Suricata : détection réseau complémentaire (IDS/IPS)
  • CIS Benchmark Audit : vérification de conformité automatisée

Wazuh est le pilier d'une stratégie SOC (Security Operations Center). Ses règles, son FIM et son architecture distribuée en font la solution idéale pour les environnements on-premise ou hybrides.

Besoin d'aide sur ce sujet ?

Notre équipe d'experts est là pour vous accompagner dans vos projets d'infrastructure et d'infogérance.

Contactez-nous

Articles similaires