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

Join our Discord community server

For any questions, suggestions, or just to chat with the community, join us on Discord!

900+Members