Wazuh — centralisation des logs et règles de détection
Détection centralisée avec Wazuh : collecte de logs SSH/web/Drupal, décodeurs et règles personnalisées, corrélation d'événements et alertes sur SQLi et force brute.
Centralisation des logs et écriture de règles de détection avec Wazuh pour la corrélation d’événements de sécurité.
Contexte
Wazuh agrège les logs des agents, applique des décodeurs et des règles pour générer des alertes, et corrèle les événements dans le temps. La détection efficace de SQLi, force brute et altération de fichiers repose sur des règles personnalisées au-delà du jeu par défaut, et sur la surveillance d’intégrité (FIM) des arborescences applicatives sensibles.
Détection
État des agents et de la collecte sur le manager :
/var/ossec/bin/agent_control -l
/var/ossec/bin/wazuh-logtest </dev/null 2>&1 | head
tail -n 20 /var/ossec/logs/alerts/alerts.json | jq -r '.rule.description'
Test d’un événement contre le moteur de règles (validation de décodeur/règle) :
echo 'Failed password for invalid user admin from 192.0.2.77 port 4444 ssh2' | /var/ossec/bin/wazuh-logtest
Requête des alertes de haut niveau récentes :
jq -r 'select(.rule.level >= 10) | "\(.timestamp) [\(.rule.level)] \(.rule.description) src=\(.data.srcip // "n/a")"' /var/ossec/logs/alerts/alerts.json | tail -30
Durcissement
Collecte des logs applicatifs sur l’agent (/var/ossec/etc/ossec.conf) et surveillance d’intégrité du code Drupal :
<localfile>
<log_format>json</log_format>
<location>/var/www/nextcloud/data/nextcloud.log</location>
</localfile>
<localfile>
<log_format>apache</log_format>
<location>/var/log/nginx/access.log</location>
</localfile>
<syscheck>
<directories check_all="yes" realtime="yes" report_changes="yes">/var/www/drupal.exemple.fr/web/core</directories>
<directories check_all="yes" realtime="yes">/var/www/drupal.exemple.fr/web/modules/contrib</directories>
<nodiff>/var/www/drupal.exemple.fr/web/sites/default/settings.php</nodiff>
</syscheck>
Règles personnalisées sur le manager (/var/ossec/etc/rules/local_rules.xml) pour la SQLi web et l’escalade de force brute :
<group name="web,attack,">
<rule id="100200" level="12">
<if_sid>31100</if_sid>
<url>union select|information_schema|pg_sleep|0x[0-9a-f]{8}</url>
<description>Tentative d injection SQL detectee dans une requete web</description>
</rule>
<rule id="100201" level="10" frequency="8" timeframe="120">
<if_matched_sid>5710</if_matched_sid>
<same_source_ip />
<description>Force brute SSH: 8 echecs en 120s depuis une meme source</description>
</rule>
<rule id="100202" level="13">
<if_sid>550,554</if_sid>
<field name="file">/var/www/drupal.exemple.fr/web/core</field>
<description>Modification d un fichier du coeur Drupal (alteration possible)</description>
</rule>
</group>
Rechargement de la configuration et des règles :
/var/ossec/bin/wazuh-control restart
Vérification
Validation que les règles personnalisées se déclenchent sur des événements de test :
echo 'GET /?id=1 union select password from users HTTP/1.1' | /var/ossec/bin/wazuh-logtest | grep -E 'id:.*100200'
Test de la surveillance d’intégrité par modification contrôlée d’un fichier surveillé :
touch /var/www/drupal.exemple.fr/web/core/test-fim.txt
sleep 5
jq -r 'select(.rule.id=="100202" or .syscheck) | .syscheck.path' /var/ossec/logs/alerts/alerts.json | grep test-fim
rm /var/www/drupal.exemple.fr/web/core/test-fim.txt
Le déclenchement de la règle 100200 sur le payload SQLi et l’alerte FIM sur la modification de fichier confirment la chaîne de détection.
Vous avez un projet sur ces sujets ?
Nous contacter →