Introduction

Dans le dernier post, nous avons installé Wazuh-Indexer dans notre VM. Comme promis, je vais vous montrer comment mettre en place quelques optimisations sur notre Wazuh-Indexer, puis dans la suite de ce post, nous allons voir comment installer et configurer le Wazuh-Manager et le Wazuh-Dashboard.

Optimisations

On va s’attaquer dans cette partie à l’optimisation de notre nœud Wazuh-Indexer. Il faut noter que les optimisations que je vais vous montrer sont très basiques, et que si jamais vous avez un très grand cluster avec beaucoup de IO, il faudra ajouter à cela des étapes supplémentaires. Mais pour ne pas allonger ce post, nous allons nous arrêter là.

Tout d’abord, dans le fichier /etc/wazuh-indexer/opensearch.yml

On ajoute la directive suivante :

bootstrap.memory_lock: true

Cette directive permet de verrouiller la mémoire de la JVM, ce qui signifie que la mémoire allouée à la JVM ne sera pas échangée sur le disque. Cela peut améliorer les performances, mais cela signifie également que si la JVM a besoin de plus de mémoire que ce qui est disponible, elle peut planter, donc faites bien attention à la quantité de RAM que vous allouez à votre JVM.

Ensuite, on suit les étapes suivantes :

nano /usr/lib/systemd/system/wazuh-indexer.service

[Service]
LimitMEMLOCK=infinity

Cela permet de définir la limite de verrouillage de la mémoire (en octets) pour le processus. Cette directive permet de contrôler combien de mémoire un processus peut verrouiller dans la RAM, empêchant ainsi cette mémoire d’être échangée (swappée) sur le disque.

Ensuite, une des étapes les plus importantes est de modifier le fichier :

/etc/wazuh-indexer/jvm.options

Ici, on va le modifier pour permettre au runner Java d’utiliser la MOITIÉ de la RAM de notre serveur ! (exemple avec une VM de 8 Go de RAM)

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms4g
-Xmx4g

Enfin, pour appliquer les changements, on redémarre le service :

systemctl daemon-reload
systemctl restart wazuh-indexer

Maintenant que notre Wazuh-Indexer est bien optimisé, on va passer à l’installation du Wazuh-Manager et du Wazuh-Dashboard.

Wazuh-Dashboard

Nous allons maintenant installer le Wazuh-Dashboard, mais je pense que vous connaissez déjà mon style d’écriture de mes documentations (j’espère). Avant d’installer, je vais vous mettre l’eau à la bouche en vous montrant à quoi ressemble un dashboard fait avec Wazuh-Dashboard :

Exemple de Dashboard

C’est pas beau ça ?

Bon, fini de rigoler, on retourne à notre session SSH et on commence par l’installation du paquet Wazuh-Dashboard.

Je continue en supposant que tout est fait sur la même VM, mais si jamais vous voulez le faire sur différents nœuds, il faudra bien entendu ré-importer tous les certificats et dépôts !

apt-get -y install wazuh-dashboard

Une fois que l’installation de Wazuh-Dashboard est terminée, nous allons modifier ce fichier /etc/wazuh-dashboard/opensearch_dashboards.yml

server.host: 192.168.222.145
server.port: 443
opensearch.hosts: https://192.168.222.145:9200
opensearch.ssl.verificationMode: certificate

Ici, rien de compliqué. On indique quelle est l’adresse IP de notre serveur Wazuh-Dashboard, et ensuite on met l’adresse IP du nœud Wazuh-Indexer.

Et vu qu’on est toujours sur la même VM, on n’a pas besoin de ré-importer les certificats, donc :

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

Et voilà, rien de compliqué, on a fini d’installer notre Wazuh-Dashboard. Il faut maintenant activer et démarrer le service :

systemctl daemon-reload
systemctl enable wazuh-dashboard
systemctl start wazuh-dashboard

Maintenant qu’on a installé notre Wazuh-Dashboard, il faut lui indiquer où sera situé notre futur nœud Wazuh-Manager. Pour cela :

On ouvre ce fichier et on modifie les paramètres suivants :

/usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml
hosts:
  - default:
    url: https://10.40.120.172
    port: 55000
    username: wazuh-wui
    password: wazuh-wui
    run_as: false

Le nom d’utilisateur et le mot de passe peuvent être laissés ainsi, mais dans un environnement de production, il faudra bien entendu changer tous les mots de passe par défaut ;)

Wazuh-Server

Maintenant qu’on a tous les prérequis pour notre SOC maison, nous allons installer maintenant le cerveau des opérations, c’est-à-dire le Wazuh-Server. Pour ce faire :

Vu qu’on est toujours sur la même VM, pas la peine de ré-importer les dépôts :)

apt-get -y install wazuh-manager

Et on le démarre avec systemctl :

systemctl daemon-reload
systemctl enable wazuh-manager
systemctl start wazuh-manager

Et voilà !! Ce n’est pas compliqué, n’est-ce pas ?

Mais nous n’avons pas fini encore…

Tout d’abord, nous devons installer quelques dépendances supplémentaires :

apt-get install gnupg apt-transport-https

Puis, nous devons installer Filebeat, c’est le logiciel qui va nous permettre de rediriger les alertes émises par notre Wazuh-Server vers notre indexer :

apt-get -y install filebeat

Ensuite, nous allons télécharger et modifier le fichier de configuration, déjà pré-rempli par l’équipe Wazuh :

curl -so /etc/filebeat/filebeat.yml https://packages.wazuh.com/4.8/tpl/wazuh/filebeat/filebeat.yml
# Wazuh - Filebeat configuration file
output.elasticsearch:
hosts: ["10.0.0.1:9200"] 
protocol: https
username: ${username}
password: ${password}

À l’étape ci-dessous, si jamais vous avez changé les mots de passe de votre Wazuh-Indexer, il faudra les saisir à la place de admin.

Ici, nous allons créer des emplacements pour stocker de manière sécurisée nos mots de passe :

filebeat keystore create

echo admin | filebeat keystore add username --stdin --force
echo admin | filebeat keystore add password --stdin --force

Une fois cela fait, on télécharge le template des alertes Wazuh déjà pré-remplies. Ce sont des alertes déjà faites qui vont nous faciliter la vie, car l’équipe de Wazuh aura déjà fait une grande partie du travail, il faudra simplement adapter ces alertes à notre environnement DOC :

curl -so /etc/filebeat/wazuh-template.json https://raw.githubusercontent.com/wazuh/wazuh/v4.8.1/extensions/elasticsearch/7.x/wazuh-template.json
chmod go+r /etc/filebeat/wazuh-template.json
curl -s https://packages.wazuh.com/4.x/filebeat/wazuh-filebeat-0.4.tar.gz | tar -xvz -C /usr/share/filebeat/module

Maintenant, nous allons déployer les certificats, comme fait avant :

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

Maintenant, nous allons connecter notre Wazuh-Server à notre indexer. Pour ce faire, voici les étapes :

/var/ossec/bin/wazuh-keystore -f indexer -k username -v <INDEXER_USERNAME>
/var/ossec/bin/wazuh-keystore -f indexer -k password -v <INDEXER_PASSWORD>

Le mot de passe par défaut est admin:admin

On édite le fichier : /var/ossec/etc/ossec.conf

<indexer>
  <enabled>yes</enabled>
  <hosts>
    <host>https://0.0.0.0:9200</host>
  </hosts>
  <ssl>
    <certificate_authorities>
      <ca>/etc/filebeat/certs/root-ca.pem</ca>
    </certificate_authorities>
    <certificate>/etc/filebeat/certs/filebeat.pem</certificate>
    <key>/etc/filebeat/certs/filebeat-key.pem</key>
  </ssl>
</indexer>

Ici, la seule valeur qu’il faudra modifier est le <host> où l’on va devoir saisir l’adresse IP de notre nœud.

Une fois tout cela fait, on redémarre les services :

systemctl daemon-reload
systemctl enable wazuh-manager
systemctl start wazuh-manager
systemctl daemon-reload
systemctl enable filebeat
systemctl start filebeat

Et voilà !! Maintenant, c’est pour de vrai, on a fini. Si on se dirige maintenant vers l’interface web de notre Wazuh-Dashboard :

  • https://adresseIP

Exemple de Dashboard 2

On est accueilli par cette magnifique interface.

Le mot de passe pour y accéder est toujours admin:admin

Lorsque l’on entre, un petit check se fait pour voir si tout est en ordre, et si tout est bon, on a cette encore plus incroyable interface :

Exemple de Dashboard 3

Le seul bémol avec cette interface est le grand avertissement qui nous dit que nous n’avons pas encore d’agents, mais nous allons corriger cela dans le prochain post, où l’on ajoutera notre premier hôte, tant Windows que Linux, et on va faire nos premières démos avec Wazuh !!

À bientôt !!