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 :
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
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 :
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 !!