Wazuh : SIEM open-source

Wazuh : SIEM open-source

Déployez Wazuh, plateforme SIEM open-source qui combine HIDS, gestion de logs, détection d'intrusion, intégrité fichiers, audit de vulnérabilités, conformité réglementaire. La référence libre face à Splunk, QRadar, SentinelOne.

Introduction

Wazuh est une plateforme de sécurité tout-en-un qui surveille en continu vos serveurs et postes :

  • HIDS (Host Intrusion Detection) : détecte les comportements anormaux
  • Logs centralisés : agrégation et analyse de tous vos logs (syslog, applicatif, audit)
  • FIM (File Integrity Monitoring) : alerte si un fichier critique change
  • Vulnerability detection : identifie les paquets vulnérables (CVE)
  • Compliance : rapports PCI-DSS, HIPAA, GDPR, NIST
  • MITRE ATT&CK : mapping des détections sur la matrice MITRE

Architecture : agents Wazuh (Linux/Win/Mac) + manager central + dashboard web (basé Kibana).

Prérequis

  • VPS dédié pour le manager (8 Go RAM, 4 vCPU, 50 Go SSD)
  • Ubuntu 22.04 / Debian 12 / Rocky 9
  • Accès root
  • Agents : Linux / Windows / macOS

Étape 1 : Installation tout-en-un (assistant)

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

Le script installe :

  • Wazuh indexer (Opensearch)
  • Wazuh manager
  • Wazuh dashboard
  • Filebeat

Compte 10-15 min. À la fin :

INFO: --- Summary ---
INFO: You can access the web interface https://<IP>
    User: admin
    Password: <generated>

Notez le mot de passe.

Étape 2 : Accès au dashboard

Ouvrez https://IP_VPS dans votre navigateur. Acceptez le cert auto-signé.

Login admin + mot de passe généré.

Vous arrivez sur le dashboard Wazuh.

Étape 3 : Déployer un agent

Sur le manager, allez dans Agents → Deploy new agent.

Choisissez OS et architecture. Pour Linux Debian/Ubuntu :

curl -so wazuh-agent.deb https://packages.wazuh.com/4.x/apt/pool/main/w/wazuh-agent/wazuh-agent_4.7.0-1_amd64.deb
sudo WAZUH_MANAGER='IP_MANAGER' WAZUH_AGENT_GROUP='default' dpkg -i ./wazuh-agent.deb
sudo systemctl daemon-reload
sudo systemctl enable wazuh-agent
sudo systemctl start wazuh-agent

L'agent apparaît dans le dashboard sous Agents (état Active en quelques secondes).

Étape 4 : Premiers events

Sur l'agent, simulez une tentative de brute force SSH :

sshpass -p 'wrong' ssh -o StrictHostKeyChecking=no foo@localhost
sshpass -p 'wrong' ssh -o StrictHostKeyChecking=no foo@localhost
sshpass -p 'wrong' ssh -o StrictHostKeyChecking=no foo@localhost

Dans le dashboard → Threat Hunting → Search sshd → vous voyez les événements remontés.

Étape 5 : File Integrity Monitoring (FIM)

Wazuh surveille par défaut des dossiers critiques. Pour ajouter /etc/nginx :

Sur l'agent, éditez /var/ossec/etc/ossec.conf :

<syscheck>
    <directories check_all="yes" report_changes="yes" realtime="yes">/etc/nginx</directories>
</syscheck>
sudo systemctl restart wazuh-agent

Toute modif d'un fichier /etc/nginx/* génère un événement avec le diff.

Étape 6 : Détection de vulnérabilités

Wazuh scanne automatiquement les paquets installés contre la NVD :

Sur le manager, dans /var/ossec/etc/ossec.conf :

<vulnerability-detector>
    <enabled>yes</enabled>
    <interval>5m</interval>
    <run_on_start>yes</run_on_start>
    <provider name="canonical">
        <enabled>yes</enabled>
        <os>jammy</os>
        <update_interval>1h</update_interval>
    </provider>
    <provider name="debian">
        <enabled>yes</enabled>
        <os>bookworm</os>
    </provider>
    <provider name="redhat">
        <enabled>yes</enabled>
    </provider>
    <provider name="nvd">
        <enabled>yes</enabled>
    </provider>
</vulnerability-detector>
sudo systemctl restart wazuh-manager

Sous Modules → Vulnerabilities vous voyez tous les paquets vulnérables avec CVE associée.

Étape 7 : Active Response

Wazuh peut agir automatiquement :

Dans ossec.conf sur le manager :

<command>
    <name>firewall-drop</name>
    <executable>firewall-drop</executable>
    <timeout_allowed>yes</timeout_allowed>
</command>

<active-response>
    <command>firewall-drop</command>
    <location>local</location>
    <rules_id>5712</rules_id>
    <timeout>600</timeout>
</active-response>

La règle 5712 = brute force SSH. Wazuh va automatiquement bloquer l'IP attaquante 10 min via iptables.

Étape 8 : Custom rules

Pour ajouter une détection custom (ex: alerte si quelqu'un édite /etc/sudoers) :

sudo nano /var/ossec/etc/rules/local_rules.xml
<group name="local,syslog,">
  <rule id="100001" level="12">
    <if_sid>550</if_sid>
    <field name="file">/etc/sudoers$</field>
    <description>CRITIQUE: /etc/sudoers modifie</description>
  </rule>
</group>
sudo systemctl restart wazuh-manager

Étape 9 : Audit et compliance

Wazuh fournit des dashboards préconfigurés :

  • PCI DSS : conformité paiement
  • GDPR : protection données EU
  • HIPAA : santé
  • NIST 800-53 : référentiel US
  • TSC : SOC 2

Modules → Regulatory compliance → choisissez. Vous voyez l'état de conformité par exigence.

Étape 10 : Intégration MITRE ATT&CK

Chaque alerte Wazuh est mappée sur des tactiques/techniques MITRE :

Modules → MITRE ATT&CK → affiche la matrice avec les tactiques observées dans votre environnement.

Étape 11 : Notifications

Pour recevoir un mail sur les alertes critiques (level >= 12) :

sudo nano /var/ossec/etc/ossec.conf
<global>
    <email_notification>yes</email_notification>
    <smtp_server>smtp.gmail.com</smtp_server>
    <email_from>[email protected]</email_from>
    <email_to>[email protected]</email_to>
</global>

<alerts>
    <log_alert_level>3</log_alert_level>
    <email_alert_level>12</email_alert_level>
</alerts>

Étape 12 : Performance et dimensionnement

Pour 100 agents : 8 Go RAM, 4 vCPU, 100 Go disque

Pour 1000 agents : 32 Go RAM, 16 vCPU, 500 Go disque (NVMe recommandé)

Les indices Opensearch grossissent vite. Configurez la rétention dans Stack Management → Index Management → ISM Policies.

Dépannage

Agent disconnected

Vérifiez la connectivité au manager :

telnet IP_MANAGER 1514
telnet IP_MANAGER 1515

Vérifiez les logs agent :

sudo tail -f /var/ossec/logs/ossec.log

Dashboard timeout

Indexer en train de monter (long). Patientez ou augmentez la RAM :

sudo systemctl status wazuh-indexer

Trop d'alertes (noise)

Tunez local_rules.xml pour réduire le niveau ou ignorer des rules.

"Out of memory" sur le manager

Augmentez la RAM. Wazuh-indexer (Opensearch) consomme beaucoup.

Commandes utiles

# Status services
sudo systemctl status wazuh-manager wazuh-indexer wazuh-dashboard

# Agents connectés
sudo /var/ossec/bin/manage_agents -l

# Restart manager
sudo systemctl restart wazuh-manager

# Logs principaux
sudo tail -f /var/ossec/logs/ossec.log
sudo tail -f /var/ossec/logs/alerts/alerts.log

# Forcer le scan vulnérabilités
sudo /var/ossec/bin/wazuh-control restart

# Lister les rules actives
sudo /var/ossec/bin/wazuh-logtest

Conclusion

Wazuh remplace plusieurs outils :

  • SIEM (Splunk, QRadar)
  • HIDS (OSSEC, AIDE)
  • FIM
  • Vulnerability scanner
  • Compliance reporting

Tout open-source et bien intégré.

Pour aller plus loin :

  • Couplez avec Suricata pour ajouter la couche NIDS
  • Intégrez avec TheHive + Cortex pour la réponse à incident
  • Pour les grosses prods, considérez la version Enterprise (Wazuh Cloud)

Ressources

Rejoignez notre serveur communautaire Discord

Pour toute question, suggestion ou simplement pour discuter avec la communauté, rejoignez-nous sur Discord !

900+Membres