playground:playground
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédente | |||
| playground:playground [2026/09/02 10:15] – | playground:playground [2026/09/04 08:54] (Version actuelle) – | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== | + | ==== Playground |
| - | + | ||
| - | ===== Architecture et infrastructure ===== | + | |
| - | + | ||
| - | {{ : | + | |
| - | Wazuh est réparti sur 4 serveurs distincts pour optimiser les performances et la redondance. On retrouve 3 indexeurs ('' | + | |
| - | + | ||
| - | Les modules Serveur (OpenSearch et Filebeat) et Dashboard (OpenDashboard) sont sur le même serveur. Si un jour le besoin d’exposer le dashboard se présente, il faudra alors séparer le module Wazuh Dashboard sur son propre serveur. | + | |
| - | + | ||
| - | Les données des différentes sources sont envoyées au serveur, qui décode, puis génère les alertes et les transmet quotidiennement aux indexeurs. | + | |
| - | + | ||
| - | Côté matériel, tous les serveurs ont 16 Go de mémoire et 8 vCPUs. Les VM '' | + | |
| - | + | ||
| - | ===== Procédure de mise à jour ===== | + | |
| - | + | ||
| - | ==== Mise à jour des composants centraux ==== | + | |
| - | Lorsqu’une nouvelle mise à jour est disponible, une notification apparaît sur la page principale. Il est possible de vérifier à tout moment l’état de mise à jour dans **Menu -> Dashboard management -> Server APIs**. | + | |
| - | {{ : | + | |
| - | + | ||
| - | Il est recommandé de réaliser des snapshots des serveurs et des sauvegardes des configurations personnalisées avant d’effectuer les mises à jour. | + | |
| - | + | ||
| - | === Mise à jour via Ansible (recommandée) : === | + | |
| - | Il existe sur le serveur Ansible un playbook de mise à jour des composants centraux de Wazuh : '' | + | |
| - | Ce playbook prépare les serveurs pour l’installation puis applique la mise à jour sur les composants dans l’ordre correct automatiquement. | + | |
| - | + | ||
| - | **Avant l’exécution, | + | |
| - | [[https:// | + | |
| - | + | ||
| - | En exécutant la commande suivante, on lance la mise à jour (elle prend entre 5 et 10 minutes) : | + | |
| - | <code bash> | + | |
| - | **************************************** | + | |
| - | </ | + | |
| - | + | ||
| - | === Mise à jour manuelle : === | + | |
| - | Si vous souhaitez réaliser la mise à jour manuellement, | + | |
| - | Le détail de la méthode de mise à jour est disponible sur la documentation officielle de Wazuh : | + | |
| - | [[https:// | + | |
| - | + | ||
| - | ==== Mise à jour des agents ==== | + | |
| - | La mise à jour des agents est plus simple. Depuis la page de gestion des agents, on peut sélectionner la totalité des agents puis **More > Upgrade agents** pour mettre à jour la totalité des agents. | + | |
| - | {{ : | + | |
| - | + | ||
| - | ==== Problèmes courants : ==== | + | |
| - | Si, après une mise à jour du serveur, les agents apparaissent tous comme déconnectés, | + | |
| - | <code bash> | + | |
| - | cat / | + | |
| - | </ | + | |
| - | Si des erreurs de la forme : '' | + | |
| - | Pour cela, modifiez le fichier ''/ | + | |
| - | <code xml> | + | |
| - | < | + | |
| - | < | + | |
| - | </ | + | |
| - | Redémarrez le manager : | + | |
| - | <code bash> | + | |
| - | sudo systemctl restart wazuh-manager | + | |
| - | </ | + | |
| - | Après quelques secondes, les agents devraient se connecter. Il faut ensuite supprimer ces lignes par sécurité. | + | |
| - | + | ||
| - | //Merci d' | + | |
| - | + | ||
| - | ===== Ingestion de données ===== | + | |
| - | Il existe plusieurs sources de données ingérées dans Wazuh : | + | |
| - | + | ||
| - | ==== Agents ==== | + | |
| - | Les agents sont la source principale d’informations sur les serveurs. Ces programmes sont installés dans l’OS et permettent d’obtenir des informations sur les serveurs, les vulnérabilités et la configuration. Ils surveillent les logs de l’OS mais aussi les logs applicatifs. | + | |
| - | + | ||
| - | On peut ajouter une nouvelle source de logs sur un agent (pour une application par exemple) en l’ajoutant dans le fichier '' | + | |
| - | On ajoute une section '' | + | |
| - | <code xml> | + | |
| - | < | + | |
| - | < | + | |
| - | < | + | |
| - | </ | + | |
| - | </ | + | |
| - | Pour pousser la configuration, | + | |
| - | <code bash> | + | |
| - | sudo systemctl restart wazuh-manager | + | |
| - | sudo / | + | |
| - | </ | + | |
| - | On peut aussi utiliser cette méthode pour ingérer des informations plus personnalisées. Par exemple, Suricata (la sonde IDS mise en place sur le réseau) génère des alertes et les écrit dans un fichier JSON. Ce fichier est lu par l’agent Wazuh. Le même concept est utilisé pour Zabbix. | + | |
| - | + | ||
| - | **Installation de nouveaux agent** | + | |
| - | + | ||
| - | Pour installer un nouvel agent manuellement, | + | |
| - | [[https:// | + | |
| - | On sélectionne l’OS et les groupes, puis il suffit de copier les commandes sur l’agent. | + | |
| - | + | ||
| - | S'il y a une quantité importante d’agents à installer, un playbook Ansible est disponible. Il faudra penser à mettre à jour les paquets d’installation à la dernière version. | + | |
| - | + | ||
| - | ==== Syslog et API ==== | + | |
| - | En dehors des données obtenues des agents, Wazuh ingère aussi via syslog les informations de différents éléments. | + | |
| - | + | ||
| - | Le Pare-feu Palo Alto transmet les logs de trafic, d'URL, de menaces (threat), WildFire, d' | + | |
| - | + | ||
| - | Les switchs transmettent leurs alertes via logging: | + | |
| - | + | ||
| - | **Aruba: | + | |
| - | <code xml> | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | </ | + | |
| - | + | ||
| - | **Alcatel: | + | |
| - | <code xml> | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | </ | + | |
| - | + | ||
| - | Les syslog de Vcenter sont aussi transferé, configuré depuis la page https:// | + | |
| - | + | ||
| - | Les iDrac et iLO permettent aussi de transmettre le syslog vers Wazuh. | + | |
| - | + | ||
| - | Pour ajouter une nouvelle source syslog, la configuration côté source peut varier mais il faut toujours autoriser l’IP dans Wazuh. Dans le fichier ''/ | + | |
| - | <code xml> | + | |
| - | < | + | |
| - | </ | + | |
| - | en remplaçant avec l’IP de la machine source. Il est aussi possible d’ajouter des plages d' | + | |
| - | + | ||
| - | Il est aussi possible d’importer des données via requêtes API. Plusieurs méthodes sont possibles pour cela. Actuellement, | + | |
| - | <code xml> | + | |
| - | < | + | |
| - | < | + | |
| - | < | + | |
| - | </ | + | |
| - | </ | + | |
| - | + | ||
| - | ===== Paramétrage de la détection ===== | + | |
| - | + | ||
| - | ==== Décodeurs ==== | + | |
| - | Lors de l’ajout de nouvelles sources de données, si un décodeur n’est pas inclus dans Wazuh, il faut créer un décodeur personnalisé. | + | |
| - | Les décodeurs se trouvent dans le fichier ''/ | + | |
| - | + | ||
| - | Ils consistent à identifier un log reçu pour extraire les données importantes et le classer. Il faut donc identifier les éléments uniques à ce type de log et les noter pour l’identification, | + | |
| - | + | ||
| - | L’identification peut être réalisée par des mots-clés ou bien des patterns. Prenons pour exemple les décodeurs pour les switchs Aruba : | + | |
| - | <code xml> | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | </ | + | |
| - | Le premier décodeur sert à identifier le log reçu comme un log provenant d’un switch Aruba en détectant le pattern utilisé par ces switchs. | + | |
| - | Le deuxième est un décodeur enfant qui, pour tout log détecté comme provenant d’un switch Aruba, extrait les informations voulues (nom du switch, importance de l’événement, | + | |
| - | Le module de création d’alerte obtient donc des données lisibles pour pouvoir chercher le déclenchement d’une règle. | + | |
| - | + | ||
| - | ==== Règles ==== | + | |
| - | Pour tout décodeur personnalisé, | + | |
| - | + | ||
| - | Toutes les règles personnalisées sont présentes dans le fichier ''/ | + | |
| - | + | ||
| - | Prenons pour exemple les règles pour les switchs Aruba : | + | |
| - | <code xml> | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | </ | + | |
| - | Toutes les règles sont insérées dans un groupe spécifique, | + | |
| - | + | ||
| - | Pour chaque règle, il faut indiquer un **identifiant unique** et un niveau de sévérité. | + | |
| - | + | ||
| - | La première règle est très générale, tous les logs décodés par le décodeur des switchs la déclenchent (''< | + | |
| - | Les suivantes se basent sur l’identifiant de la première règle (''< | + | |
| - | + | ||
| - | ==== Faux positifs ==== | + | |
| - | Des faux positifs récurrents peuvent apparaître sur Wazuh, générant de la fatigue de log, du bruit et donc une perte de temps pour l’équipe. Pour faire disparaître ces faux positifs, il faut créer des règles précises les identifiant avec un niveau 0. La dernière section du fichier est dédiée à ces faux positifs. | + | |
| - | + | ||
| - | Par exemple, les switchs Alcatel créent des alertes lors d’une connexion SSH, ce qui est normal. Mais le serveur Ansible se connecte aux switchs automatiquement tous les jours pour son activité normale. On peut donc créer une règle enfant de celle générant l’alerte en question en filtrant pour le serveur Ansible afin de déclencher une alerte de niveau 0, qui écrit par-dessus l’alerte originale. Le faux positif a alors disparu. | + | |
| - | <code xml> | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | </ | + | |
| - | + | ||
| - | ==== Test des règles ==== | + | |
| - | Il est possible de tester si une règle fonctionne correctement, | + | |
| - | + | ||
| - | Le teste nous indique le résultat du décodage et de l' | + | |
| - | + | ||
| - | ===== Dashboard ===== | + | |
| - | Un dashboard est un regroupement de visualisations, | + | |
| - | + | ||
| - | Avant de débuter la création d’un dashboard, il faut commencer par se demander quel est son but et quelles informations vont être tirées de son observation. Après cela, il est temps de commencer les différentes visualisations. | + | |
| - | + | ||
| - | ==== Visualisations ==== | + | |
| - | Les visualisations sont le moyen le plus efficace de représenter une information voulue. Elles peuvent prendre de nombreuses formes, de la simple métrique à une frise chronologique ou une carte. | + | |
| - | {{ : | + | |
| - | Pour créer une visualisation, | + | |
| - | + | ||
| - | La source de l’information est un index ou bien une recherche personnalisée. Dans la majorité des cas, il s’agit de l’index d’alertes, | + | |
| - | {{ : | + | |
| - | Il y a énormément d’informations pouvant être extraites des alertes sur Wazuh, mais il est possible qu' | + | |
| - | + | ||
| - | Zabbix transmet les données de façon minime vers Wazuh. Donc, dans le cas où des données opérationnelles nécessaires pour la visualisation voulue ne sont pas transmises, il faut indiquer à Zabbix de les transmettre. Pour ce faire, il faut identifier la donnée voulue (clic droit sur un hôte -> Éléments), | + | |
| - | {{ : | + | |
| - | Attention, cela n’ajoutera que la donnée de cet hôte. Pour la donnée globale, il faut dans l’onglet **Éléments**, | + | |
| - | + | ||
| - | Après une sauvegarde, la donnée commencera à apparaître sous la forme d’alerte Wazuh et pourra donc être visualisée. | + | |
| - | + | ||
| - | Pour plus de détails sur le fonctionnement des différentes visualisations et le fonctionnement des différents champs, merci de consulter la documentation officielle : | + | |
| - | [[https:// | + | |
| - | + | ||
| - | + | ||
| - | ===== Monitoring et Alerting ===== | + | |
| - | Afin de surveiller des comportements ou patterns anormaux très spécifiques, | + | |
| - | + | ||
| - | Par exemple, Zabbix récupère constamment les températures ambiantes des serveurs physiques ; cette donnée est transférée vers Wazuh. On pourrait donc vouloir créer une alerte lorsque la température d’une salle dépasse un certain seuil. | + | |
| - | + | ||
| - | Pour cela, il faut créer un monitor via le menu : **Menu -> Explore -> Alerting -> Monitor**. | + | |
| - | {{ : | + | |
| - | + | ||
| - | On le nomme et on sélectionne la méthode de collecte de l’information. Dans ce cas, ce sera par requête. On indique aussi la fréquence à laquelle la requête est réalisée (ici, toutes les 5 minutes). | + | |
| - | + | ||
| - | {{ : | + | |
| - | On précise ensuite la source utilisée pour les requêtes. | + | |
| - | + | ||
| - | Il faut ensuite écrire une requête précise pour extraire l’information sur laquelle nous réaliserons le déclenchement. Ici, on récupère toutes les données de température ambiante envoyées par Zabbix lors des 3 dernières minutes, supérieures à 27°C et provenant des serveurs physiques. | + | |
| - | + | ||
| - | Une autre option aurait été de réaliser une requête plus vaste et d' | + | |
| - | + | ||
| - | <code json> | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | </ | + | |
| - | + | ||
| - | En temps normal, la requête devrait renvoyer que rien n’a été trouvé, la liste « hits » est donc vide : | + | |
| - | <code json> | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | </ | + | |
| - | + | ||
| - | Comme l’extraction est exacte, il n'y a pas besoin de règle de déclenchement complexe : on déclenche simplement s'il y a un résultat. Dans un autre cas, on pourrait complexifier le déclencheur (voir le monitor '' | + | |
| - | + | ||
| - | <code java> | + | |
| - | ctx.results[0].hits.total.value > 0 | + | |
| - | </ | + | |
| - | + | ||
| - | ==== Notifications ==== | + | |
| - | Une fois le déclencheur activé, il génère un message via l'un des canaux de communication mis en place. Wazuh permet d' | + | |
| - | * Email via '' | + | |
| - | * Tchap avec un Webhook Matrix via le compte Tchap '' | + | |
| - | + | ||
| - | On crée le webhook avec la commande suivante : | + | |
| - | <code bash> | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | </ | + | |
| - | + | ||
| - | Et on l' | + | |
| - | <code bash> | + | |
| - | sudo pm2 save --force | + | |
| - | </ | + | |
| - | + | ||
| - | Où '' | + | |
| - | <code bash> | + | |
| - | curl -X POST " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | " | + | |
| - | }, | + | |
| - | " | + | |
| - | " | + | |
| - | | + | |
| - | </ | + | |
| - | + | ||
| - | Et '' | + | |
| - | <code json> | + | |
| - | { | + | |
| - | " | + | |
| - | " | + | |
| - | } | + | |
| - | </ | + | |
| - | + | ||
| - | ********************IMAGE******************** | + | |
| - | + | ||
| - | Lors de la création du canal de communication dans Wazuh, on sélectionne **Custom Webhook** et on précise un envoi **POST**, le header JSON ('' | + | |
| - | < | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | </ | + | |
| - | + | ||
| - | + | ||
| - | Le code du salon ('' | + | |
| - | + | ||
| - | + | ||
| - | ===== Contrôle d’accès ===== | + | |
| - | Le contrôle d’accès au dashboard Wazuh (siem-indexer@uttop.fr) est basé sur du RBAC (Role-Based Access Control), c’est-à-dire que les accès d’un utilisateur dépendent de son rôle. Sur notre infrastructure Wazuh, l’authentification se fait en SSO via SAML. | + | |
| - | + | ||
| - | Il est possible de donner des accès à des utilisateurs ou des groupes, de créer des autorisations personnalisées et donc de lier des groupes LDAP à des groupes Wazuh. | + | |
| - | + | ||
| - | Cependant, il est obligatoire de configurer ce contrôle d’accès à deux endroits différents car Wazuh utilise deux moteurs de permissions distincts : l’un pour la gestion de l’accès aux données et l’autre pour la gestion de l’infrastructure. | + | |
| - | + | ||
| - | ==== Contrôle d’accès aux données : Wazuh Indexer ==== | + | |
| - | Le contrôle d’accès aux données est géré par le module OpenSearch Security présent sur les indexeurs. Les fichiers permettant de le configurer sont dans le dossier ''/ | + | |
| - | + | ||
| - | Il est aussi possible de réaliser cette configuration depuis le dashboard : **Menu -> Indexer management -> Security**. | + | |
| - | + | ||
| - | Le fichier '' | + | |
| - | + | ||
| - | <code yaml> | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | ******************** | + | |
| - | </ | + | |
| - | + | ||
| - | ==== Contrôle d’accès à la gestion de l’infrastructure : Wazuh Dashboard ==== | + | |
| - | Sur le dashboard, dans **Menu -> Server Management -> Security**, on retrouve le module de contrôle d’accès. La page **Roles** permet de créer des rôles personnalisés, | + | |
| - | + | ||
| - | Par exemple, ce mapping réalise la même chose que celui vu précédemment pour l’indexeur. Un accès sur le Dashboard permettra de se connecter et de modifier les paramètres du serveur, mais ne donnera l’accès à aucune donnée. | + | |
| - | + | ||
| - | ********************IMAGE******************** | + | |
| - | + | ||
| - | Pour plus d' | + | |
| - | [[https:// | + | |
playground/playground.1788344124.txt.gz · Dernière modification : de
