Table of contents
Wazuh est une plateforme open-source qui offre des moyens de détecter des menaces, de répondre aux incidents, de surveiller l'intégrité des fichiers et de fournir une visibilité sur l'ensemble de l'infrastructure. Wazuh est essentiellement un SIEM, utilisé par de nombreuses organisations en matière de sécurité.
Composants
Tout d'abord, voici les 4 principaux composants de Wazuh :
Le serveur Wazuh analyse les données collectées par les différents agents. Il détecte les menaces, génère des alertes et propose des solutions aux incidents. Les informations sont centralisées au niveau du serveur Wazuh pour fournir une vue d'ensemble de la sécurité de l'infrastructure.
L'indexeur Wazuh agit comme une base de données en répertoriant les alertes et incidents générés par le serveur Wazuh. Il permet de stocker et d'analyser les données de sécurité collectées, facilitant ainsi la détection des menaces et la réponse aux incidents.
L'agent Wazuh est installé directement sur les terminaux à surveiller (poste de travail, serveur, machine virtuelle, etc.). L'agent collecte tous les événements de sécurité, les données du système, les logs et bien plus encore, puis envoie les informations au serveur Wazuh.
Le dashboard (tableau de bord) fournit une interface utilisateur graphique pour analyser et gérer les alertes.
Voici une image provenant de Linode qui illustre le fonctionnement de Wazuh.
Il est important de noter que l'agent Wazuh peut être installé sur macOS, Windows et Linux. Pour les systèmes Linux, il est recommandé d'utiliser une version 64 bits pour une meilleure compatibilité.
Installation
La documentation détaillée est disponible sur le site officiel de Wazuh.
Dans notre article, l'installation se fera sur Debian du système d'exploitation Linux.
À partir de là, il suffit de suivre les étapes décrites dans la documentation.
***Si les pacakges curl ne sont pas encore installés, faire la commande sudo apt install curl gpg
si la commande curl est introuvable.
Ajouter la clé GPG
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg --import && chmod 644 /usr/share/keyrings/wazuh.gpg
Ajouter le dépot Wazuh
echo "deb [signed-by=/usr/share/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/ stable main" | tee -a /etc/apt/sources.list.d/wazuh.list
Mettre à jour les informations des paquets
sudo apt update && sudo apt upgrade && sudo apt-get install debconf adduser procps curl gnupg apt-transport-https filebeat debhelper libcap2-bin
Télécharger le script
wazuh-certs-tool.sh
et le fichierconfig.yml
. Cela permettra d'ajouter les addresses IP du/des serveur/s, de l'indexeur et du dashboard.curl -sO https://packages.wazuh.com/4.8/wazuh-certs-tool.sh && curl -sO https://packages.wazuh.com/4.8/config.yml
Vérifier que les deux fichiers ont bien été créés avec la commande
dir
Modifier le fichier config.yml avec la commande
nano /config.yml
Ajouter l'adresse IP de la machine Debian pour l'indexeur, le serveur et le tableau de bord. Cette approche utilise le mode "single node" où un seul serveur gère toutes les fonctions. Une autre approche serait la configuration en mode "multinode", où plusieurs serveurs sont impliqués, avec une machine dédiée au tableau de bord et une autre servant d'indexeur. La configuration "single node" simplifie la gestion et les déploiements.
Notez qu'il est important à ce niveau de conserver les noms des indexer , server et dashboard
Exécuter le script suivant pour générer les certificats et compresser les fichiers
bash ./wazuh-certs-tool.sh -A tar -cvf ./wazuh-certificates.tar -C ./wazuh-certificates/ . rm -rf ./wazuh-certificates
Installer le paquet wazuh-indexer , wazuh-manager et wazuh-dashboard
"Wazuh-indexer" installe Elasticsearch, qui est utilisé pour l'indexation et la recherche des logs collectés par Wazuh.
"wazuh-manager" installe le serveur Wazuh
"wazuh-dashboard" installe Kibana, qui est l'interface web utilisée pour visualiser les alertes et les données dans Wazuh
sudo apt install wazuh-indexer wazuh-manager wazuh-dashboard -y
À noter que cette installation peut durer quelques minutes 😉
Configurer le "wazuh-indexer"
nano /etc/wazuh-indexer/opensearch.yml
À ce niveau il faut mettre l'adresse IP du serveur au "network.host".
Déployer les certificats de l'indexer
Exécuter les commandes suivantes en remplacant le nom du nœud d’indexeur Wazuh si il a été modifé à l'étape 6 et 9. Si vous ne l'avez pas modifié, il devrait être "node-1".
NODE_NAME=node-1
Les commandes pour déployer les certificats
mkdir /etc/wazuh-indexer/certs tar -xf ./wazuh-certificates.tar -C /etc/wazuh-indexer/certs/ ./$NODE_NAME.pem ./$NODE_NAME-key.pem ./admin.pem ./admin-key.pem ./root-ca.pem mv -n /etc/wazuh-indexer/certs/$NODE_NAME.pem /etc/wazuh-indexer/certs/indexer.pem mv -n /etc/wazuh-indexer/certs/$NODE_NAME-key.pem /etc/wazuh-indexer/certs/indexer-key.pem chmod 500 /etc/wazuh-indexer/certs chmod 400 /etc/wazuh-indexer/certs/* chown -R wazuh-indexer:wazuh-indexer /etc/wazuh-indexer/certs
Activer et démarrer le service wazuh-indexer
sudo systemctl daemon-reload sudo systemctl enable wazuh-indexer sudo systemctl start wazuh-indexer
Initialisation du cluster
/usr/share/wazuh-indexer/bin/indexer-security-init.sh
Tester l'installation du cluster
Remplacer <WAZUH_INDEXER_IP_ADDRESS> par l'adresse IP de l'indexer
sudo curl -k -u admin:admin https://<WAZUH_INDEXER_IP_ADRESS>:9200
La sortie devrait ressembler à ceci, indiquant que l'installation a été réussie.
curl -k -u admin:admin https://<WAZUH_INDEXER_IP_ADRESS>:9200/_cat/nodes?v
Installation du Wazuh manager
sudo systemctl daemon-reload sudo systemctl enable wazuh-manager sudo systemctl start wazuh-manager sudo systemctl status wazuh-manager
Après quelques minutes, le service wazuh-manager devrait être installé.
Démarrer le service filebeat
apt install filebeat
Télécharger et configurer le fichier de confuguration filebeat
curl -so /etc/filebeat/filebeat.yml https://packages.wazuh.com/4.8/tpl/wazuh/filebeat/filebeat.yml
nano /etc/filebeat/filebeat.yml
Modifier l'adresse IP localhost par celui de l'indexer (la même adresse IP depuis l'étape 6)
Créer le fichier filebeat keystore pour stocker en toute sécurité les informations d’authentification.
filebeat keystore create
Ajouter le nom d'utilisateur et le mot de passe par défaut au keystore
echo admin | filebeat keystore add username --stdin --force echo admin | filebeat keystore add password --stdin --force
Le nom d'utilisateur et le mot de passe sont tous deux spécifiés à "admin".
Télécharhger le template d'alertes pour le wazuh indexer
curl -so /etc/filebeat/wazuh-template.json https://raw.githubusercontent.com/wazuh/wazuh/v4.8.2/extensions/elasticsearch/7.x/wazuh-template.json chmod go+r /etc/filebeat/wazuh-template.json
Installer le module wazuh pour filebeat
curl -s https://packages.wazuh.com/4.x/filebeat/wazuh-filebeat-0.4.tar.gz | tar -xvz -C /usr/share/filebeat/module
Déployer les certificats
Ici encore une fois, remplacer le nom du certificat <SERVER_NODE_NAME> par le nom utilisé lors de la création des certificats. Si vous n'avez rien modifié, il restera "wazuh-1"
NODE_NAME=wazuh-1
mkdir /etc/filebeat/certs tar -xf ./wazuh-certificates.tar -C /etc/filebeat/certs/ ./$NODE_NAME.pem ./$NODE_NAME-key.pem ./root-ca.pem mv -n /etc/filebeat/certs/$NODE_NAME.pem /etc/filebeat/certs/filebeat.pem mv -n /etc/filebeat/certs/$NODE_NAME-key.pem /etc/filebeat/certs/filebeat-key.pem chmod 500 /etc/filebeat/certs chmod 400 /etc/filebeat/certs/* chown -R root:root /etc/filebeat/certs
Redémarrer le service filebeat
sudo systemctl daemon-reload sudo systemctl enable filebeat sudo systemctl start filebeat
Vérifier que filebeat est installé avec succès
filebeat test output
Vous devriez obtenir la sortie suivante, avec l'adresse IP de votre serveur.
Configurer le wazuh dashboard
nano /etc/wazuh-dashboard/opensearch_dashboards.yml
Modifier l'adresse IP "opensearch.hosts" et mettre celui de l'indexer
Déployer les certificats pour le wazuh-dashboard
Remplacez le <DASHBOARD_NODE_NAME> par le nom utilisé lors de la configuration du fichier config.yml à l'étape 6 au niveau du tableau de bord. Si vous n'avez rien modifié, il restera "dashboard".
NODE_NAME=dashboard
mkdir /etc/wazuh-dashboard/certs tar -xf ./wazuh-certificates.tar -C /etc/wazuh-dashboard/certs/ ./$NODE_NAME.pem ./$NODE_NAME-key.pem ./root-ca.pem mv -n /etc/wazuh-dashboard/certs/$NODE_NAME.pem /etc/wazuh-dashboard/certs/dashboard.pem mv -n /etc/wazuh-dashboard/certs/$NODE_NAME-key.pem /etc/wazuh-dashboard/certs/dashboard-key.pem chmod 500 /etc/wazuh-dashboard/certs chmod 400 /etc/wazuh-dashboard/certs/* chown -R wazuh-dashboard:wazuh-dashboard /etc/wazuh-dashboard/certs
Pour vérifier le nom du nœud de votre tableau de bord Wazuh, faire la commande
cat config.yml
ounano config.yml
Démarrer le service wazuh-dashboard
sudo systemctl daemon-reload sudo systemctl enable wazuh-dashboard sudo systemctl start wazuh-dashboard
Vous pouvez vérifier l'état des services avec les commandes suivantes:
sudo systemctl status wazuh-dashboard sudo systemctl status wazuh-manager sudo systemctl status wazuh-indexer
On voit que les services sont actifs.
Interface Wazuh
Une fois l'installation terminée, il faut se connecter avec https://<adresseIP_server>
.
Conclusion
Pour conclure, Wazuh est une solution open-source solide et flexible de gestion des informations et des événements de sécurité (SIEM). Grâce à ses composants principaux — le serveur, l'indexeur, l'agent et le tableau de bord — Wazuh offre une surveillance complète de l'infrastructure, la détection des menaces, la réponse aux incidents et la gestion de l'intégrité des fichiers. Son installation, bien que détaillée, est facilitée par une documentation complète sur le site officiel. La prochaine étape est le déploiement des agents sur les terminaux suivie de la configuration des alertes.