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 :
- 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.
- Indexer : basé sur OpenSearch (fork d'Elasticsearch), stocke tous les logs et les alertes. Permet les recherches et analyses historiques.
- Dashboard : interface web (remplace Kibana) pour visualiser les alertes, les vulnérabilités, la compliance (CIS, PCI-DSS, GDPR).
- 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 :
- Aller dans Analytics → Discover
- Créer une requête (ex:
rule.level: [9 TO 15]) - Save → Create visualization (graphique, heatmap, timeline)
- 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
- 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>
- Augmenter les seuils de brute-force (ex: 10 tentatives au lieu de 5)
- Désactiver les règles non pertinentes dans
/var/ossec/etc/rules/decoders.xml
Performance
- Monitorer
cpuetmemoryvia 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.


