Contenu
Intro
Plateforme / Version outil
- Kubernetes 1.28
- Wazuh: Serveur & Agent 4.5.0
Plan d’attaque ⚔️
- Création d’un système SIEM Open-Source avec kustomize sur un cluster kubernetes (kubeadm)
- Tentative de brute-force avec l’outil hydra d’un des serveurs de mon cluster kube
- Être alerté de ces attaques sur un channel Mattermost spécifique
Installation Wazuh
Kustomize
Ayant déployé préalablement mon cluster Kubernetes, j’ai opté pour du Kustomize en utilisant le repo officiel Github de Wazuh: https://github.com/wazuh/wazuh-kubernetes.git
|
|
Dashboard
- Une fois déployé, je récupère l’EXTERNAL-IP du service dashboard pour rajouter une entrée locale dans mon /etc/hosts.
- Ainsi j’accède à la page d’accueil de Wazuh Server:
- Actuellement j’ai déployé 11 agents sur chacun de mes serveurs, qui me permettent de recueillir tous les fichiers de logs relatifs à des enjeux de sécurité.
- La vue d’ensemble d’un serveur en particulier:
Scénario
Brute-Force
- Pour tester de lever une alerte, il faut par exemple simuler une tentative d’attaque avec hydra
J’utilise Hydra afin de simuler des tentatives de connexion ssh avec un utilisateur non existant, avec une série de 20 mots de passe aléatoires, récupérés depuis le fichier rockyou.txt, sur un des serveurs en question
|
|
Observabilité
- En allant sur Security Events j’applique un rule.id à 5710 et je peux retrouver mes tentatives:
Alerting
-
Lever des alertes dans Wazuh est une chose, mais être notifié à l’extérieur en est une autre, et est primordial. J’ai choisi mattermost comme cible de réception d’alertes.
-
Process:
- Création d’un channel #wazuh-alerts dans mattermost
- Création d’un webhook dans mattermost. Liaison avec le channel #wazuh-alerts
- Configuration du fichier
wazuh/wazuh_managers/wazuh_conf/worker.conf
pour ajouter la section integration avec le webhook mattermost et la section localfile en précisant le/var/log/auth,log
des serveurs agents en question :
1 2 3 4 5 6
<integration> <name>slack</name> <hook_url>https://mattermost.example.com/hooks/your-webhook-token</hook_url> <rule_id>5710</rule_id> <alert_format>json</alert_format> </integration>
- Ici, je précise la rule_id 5710 qui concerne l’authentication_failed ssh:
- en me connectant à mon POD, je peux retrouver la liste des rules Wazuh:
1 2
root@wazuh-manager-worker-0:/var/ossec/ruleset/rules# ll | grep ssh -rw-r----- 1 root wazuh 19149 Aug 4 2023 0095-sshd_rules.xml
- à l’intérieur du fichier
0095-sshd_rules.xml
, je retrouve la 5710 que je veux matcher:
1 2 3 4 5 6 7 8 9 10 11
<rule id="5710" level="5"> <if_sid>5700</if_sid> <match>illegal user|invalid user</match> <description>sshd: Attempt to login using a non-existent user</description> <mitre> <id>T1110.001</id> <id>T1021.004</id> <id>T1078</id> </mitre> <group>authentication_failed,gdpr_IV_35.7.d,gdpr_IV_32.2,gpg13_7.1,hipaa_164.312.b,invalid_login,nist_800_53_AU.14,nist_800_53_AC.7,nist_800_53_AU.6,pci_dss_10.2.4,pci_dss_10.2.5,pci_dss_10.6.1,tsc_CC6.1,tsc_CC6.8,tsc_CC7.2,tsc_CC7.3,</group> </rule>
- En relancant un coup de hydra je reçois bien mes alertes sur Mattermost:
Conclusion
Wazuh fait bien évidemment bien plus que des analyses de tentatives de connexions SSH, mais c’était le but recherché dans ce post court et concis. Étant toujours en train de découvrir l’outil, suites à venir dans d’autres posts.
Liens utiles
- Voici le github de Wazuh: https://github.com/wazuh/wazuh-kubernetes.git
- La documentation: https://documentation.wazuh.com/current/index.html