Clone
2
wazuh
Laurent Gourvénec edited this page 2025-07-09 15:42:07 +02:00

Wazuh

Étude

L'étude se trouve dans un autre document.

Composants Wazuh

L'éco-système Wazuh peut être découpé en 4 éléments :

  • l'indexer Wazuh qui s'exécute coté serveur
  • le manager Wazuh qui s'exécute coté serveur
  • le dashboard Wazuh qui s'exécute coté serveur
  • l'agent Wazuh qui s'exécute sur la machine à surveiller

Dans ce document, lorsque l'on parle de "serveur Wazuh", on parle des 3 composants coté serveur confondus.

Wazuh server

NUO mets à disposition 1 serveur Wazuh de préprod pour des tests : wazuh-pp.in.nuonet.fr. Cadoles a la main complète sur le serveur. Cadoles a installé un serveur Wazuh complet (indexer+server+dashboard) avec docker sur ce serveur.

NUO mets à disposition un service Wazuh de production découpé en 3 serveurs :

  • xdr-dashboard.in.nuonet.fr pour la partie graphique, accessible en https
  • xdr-server.in.nuonet.fr pour la communication avec les agents entre autre (API + remontées de logs)
  • xdr-indexer.in.nuonet.fr pour l'inexdation (aucune interaction notable)

Ports

Les ports à ouvrir sont décrits dans la doc de Wazuh : https://documentation.wazuh.com/current/getting-started/architecture.html#required-ports

Le port 55000/tcp pour l'API et le port 1514/tcp pour l'envoie de logs sont les 2 ports à ouvrir pour les agents.

Le port 443/tcp pour l'accès à l'interface web est à ouvrir pour les utilisateurs.

Wazuh server PP

Pour faire des tests, le serveur de PP a été configuré. Tout est dans le dossier ~cadoles/wazuh-docker/single-node (git diff pour voir les changements) ou dans le conteneur docker directement dans /var/ossec/etc/ossec.conf. La documentation suivie est ici : https://documentation.wazuh.com/current/deployment-options/docker/wazuh-container.html

Une fois up, il est possible d'entrer dans le conteneur single-node-wazuh.manager-1 pour modifier des configs. Il est possible de voir ce que le serveur reçoit de la part des agents (dans /var/ossec/logs/archives/archives.json) si les options

<ossec_config>
  <global>
    <logall>yes</logall>
    <logall_json>yes</logall_json>
  </global>
</ossec_config>

ont bien été ajoutées au fichier de configuration /var/ossec/etc/ossec.conf.

/var/ossec/bin/wazuh-logtest permet entre autre de tester les decoders et les rules (aussi utilisable depuis l'interface web).

Règles actuelles

Les règles, décodeurs, dashboards coté serveur sont mis en place par NUO avec l'assistance de Wazuh. Au 03 juillet 2025, il n'y a qu'une détection de comportement malicieux :

  • détection de multiple création de comptes depuis une même IP

Ajout de règles

Cadoles n'a pas à créer de règles/decoder/dashboard. Cependant, NUO peut demander à Cadoles de produire des logs pour identifier des comportements suspects. Par exemple, il a été demandé des logs pour :

  • création de compte
  • tentative de connexion

Accès à l'interface web

Les accès sont nominatifs et contôlés par NUO (Nomena).

Wazuh agent

Sur les 2 clusters k8s (prod et PP) ont été déployé 1 DaemonSet avec l'agent Wazuh en conteneur.

L'intégration de l'agent Wazuh dans kubernetes se présente sous la forme de projets maintenus par Cadoles :

L'enregistrement de chaque agent Wazuh se fait par l'API avec un compte de service créé par NUO et partagé entre les 2 clusters k8s.

Configuration

Au 26 mai 2025, le fichier de configuration de l'agent, /var/ossec/etc/ossec.conf est la suivante :

<ossec_config>
  <client>
    <server>
      <address>{{ getenv "WAZUH_MANAGER_HOST" }}</address>
      <port>{{ getenv "WAZUH_MANAGER_PORT" "1514" }}</port>
    </server>
  </client>

  <localfile>
    <location>/var/log/pods/*/*/*.log</location>
    <log_format>syslog</log_format>
  </localfile>
</ossec_config>

Les parties variables sont remplacées grâce à gomplate.

Ce fichier se trouve sur la forge. Pour modifier la conf sur les clusters k8s de prod et de PP, il faut donc modifier ce fichier template et suivre le workflow (voir partie "Workflow")

Workflow

En cas de changement de conf pour l'agent Wazuh ou d'upgrade de l'agent Wazuh, suivre la procédure suivante :

  1. Faire les changements dans le dépôt wazuh-agent-k8s-autoadd
  2. Commit et pousser ces changements
  3. Build et pousser une image Docker avec make build-image et docker push
  4. Changer la ref dans le DaemonSet
  5. Faire une release (git tag, git push --tags)
  6. Changer la ref dans les dépôts git liés aux clusters ( k8s-deploy et k8s-pp-deploy ), fichier kustomize/wazuh-agent/kustomization.yaml
  7. Commit et pousser ces changements
  8. Déployer les changements sur les clusters de la même manière que les ont été mis en place (voir partie "Mise en place / déploiement"
  9. Commit et pousser ces changements

Mise en place / déploiement

Dans les projet k8s-deploy et k8s-pp-deploy :

kustomize build --load-restrictor LoadRestrictionsNone kustomize/trust-manager/ --enable-helm
kustomize build --load-restrictor LoadRestrictionsNone kustomize/wazuh-agent

Ajout d'un agent

Une fois l'agent déployé, il faut demander à NUO (Nomena) d'ajouter le serveur dans le bon groupe (MSE-PP ou MSE-PROD) afin de le voir sur l'interface web du serveur Wazuh.

Mise à jour de l'agent Wazuh

Il est en théorie possible d'upgrade l'agent Wazuh depuis le serveur Wazuh. Cependant, dans le cadre de kubernetes, Cadoles ne recommande pas l'upgrade d'agent Wazuh depuis le serveur Wazuh car même si la mise-à-jour fonctionne (peu probable à cause de l'environnement conteneurisé), si le pod redémarre, il retournera à la version précédente. Il vaut mieux mettre à jour le Dockerfile du projet https://forge.cadoles.com/CadolesKube/wazuh-agent-kustom puis déployer sur les 2 clusters k8s. Attention à la compatibilité entre l'agent et le serveur Wazuh.

L'agent ne doit jamais être plus récent que le serveur.

Changement de CA

La CA utilisée pour signer le certificat du serveur Wazuh de NUO est dans le fichier kustomize/trust-manager/resources/wazuh-manager-ca.yaml dans les dépôts git k8s-deploy et k8s-pp-deploy. Pour changer de CA, il suffit d'éditer le fichier puis de déployer le changement en suivant les dernières étapes du Workflow.