From 75cdbb62879385baed44727da60796dd8b2616ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laurent=20Gourv=C3=A9nec?= Date: Tue, 8 Apr 2025 13:52:47 +0200 Subject: [PATCH] rt --- wazuh.md | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 wazuh.md diff --git a/wazuh.md b/wazuh.md new file mode 100644 index 0000000..f4cd9cb --- /dev/null +++ b/wazuh.md @@ -0,0 +1,100 @@ +# Wazuh + +## But + +Il y a 2 sources de logs qui nous intéressent : +- les logs des conteneurs des pods ; +- l'audit de l'apiserver. + +Malheureusement (?) il n'est pas possible de récupérer les logs des pods à travers l'audit de l'apiserver (à part de façon bancale en interrogeant l'endpoint /logs mais ce n'est pas viable). + +L'audit des logs de conteneurs de pods a plusieurs objectifs : +- l'aide au débogage des applications tournant dans le cluster (ex: portail) +- l'aide au débogage des applications "système" tournant dans le cluster (ex: coredns) +- la rétention d'informations légales (tentatives de connexion par exemple) + +L'audit de l'apiserveur a plusieurs objectifs : +- la détection de comportement suspicieux (accès/modifications/tentatives d'accès aux ressources) +- l'aide au débogage en cas de grave disfonctionnement du cluster + + + +Piste 1 : installer sur chaque noeud le client wazuh et créer un objet k8s de type audit policy. +-> le client wazuh n'est pas fait pour. Après recherches et discussion sur le slack de Wazuh, il semblerait qu'aucun agent wazuh ne supporte un environnement k8s. + +Piste 2 : installer sur le serveur wazuh un listener et créer un objet k8s de type audit policy. + +Piste 3 : https://kubernetes.io/docs/concepts/cluster-administration/logging/ : daemonSet avec un agent Wazuh et /var/log/pods monté + +## Lab local pour la piste 2 + +Pour un test local, suivre les docs suivantes : + +- https://documentation.wazuh.com/4.11/deployment-options/docker/wazuh-container.html#single-node-deployment +- https://wazuh.com/blog/auditing-kubernetes-with-wazuh/ + +Avec quelques modifications cependant pour ajouter un listener sur le port 1580 dans le conteneur de wazuh, ainsi qu'un script pour écouter sur ce port et envoyer les logs à la socket unix de wazuh. + +### Installation du serveur wazuh + +Dans le docker compose.yml, ajouter : +- le mapping de port "1580:1580" au wazuh.manager +- le mapping ./custom-webhook.py:/var/ossec/integrations/custom-webhook.py +- le mapping ./local_rules.xml:/var/ossec/etc/rules/local_rules.xml +Se connecter au conteneur pour installer flask : +``` +docker exec single-node-wazuh.manager-1 /var/ossec/framework/python/bin/pip3 install flask +``` +puis le serveur : +``` +docker exec single-node-wazuh.manager-1 /var/ossec/framework/python/bin/python3 /var/ossec/integrations/custom-webhook.py +``` + +### Configuration du cluster kind + +Pour lier le cluster et le serveur wazuh, on peut utiliser +``` +ssh -L 0.0.0.0:1581:172.21.0.3:1580 127.0.0.1 +``` + +### Création du cluster k8s "kind" + +On va créer un cluster kind nommé "wazuh" avec 1 CP et 1 Worker. On ajoute 2 fichiers de conf pour kubeapi-server : audit-policy.yaml et audit-webhook.yaml + +... + +``` +kind create cluster --config wazuh.yaml +``` + +### Piste 3 : daemonSet + /var/log/pods + +Première étape : créer un pod qui fait ls "/var/log/" pour voir + +## ?? + +### Filtres et dashboards Wazuh + +Filtrer tout ce qui vient de cluster k8s : data.apiVersion=audit.k8s.io/v1 +Filter par cluster : ??? étudier la possibilité d'utiliser agent.name=mon_cluster (default semble être "wazuh.manager") + + + +Attention: +> The audit logging feature increases the memory consumption of the API server because some context required for auditing is stored for each request. Memory consumption depends on the audit logging configuration. + +Coté serveur, docker compose fait le taf pour du test. +cd work/wazuh/wazuh-docker/single-node +sudo docker compose up +Ajout d'un agent : https://documentation.wazuh.com/4.11/installation-guide/wazuh-agent/index.html + +Package Linux ou source ? +Installation sur noeud semble compromis +CRD Audit inexistante + +Coté kubernetes : tester de logger les URIs * + +Demander : +- version du wazuh manager (la version de l'agent doit être inférieure ou égale) +- certificats ? +- nom/addresse du manager wazuh ou endpoint \ No newline at end of file