Wazuh HIDS Présentation & Installation

By | June 10, 2018

Bonjour à tous,

Aujourd’hui je vais vous présenter Wazuh qui est un HIDS (Host Intrusion Detected System), ce logiciel Open Source est un Fork du célèbre logiciel du même type OSSEC, il est même entièrement basé sur ce dernier.

Wazuh en plus du HIDS peut également faire du FIM (File Integrity Monitoring) et IPS (Intrusion Prevention System), comme OSSEC il est basé sur le modèle client – serveur, c’est-à-dire que cet outil a besoin d’un serveur central pour fonctionner.

Tout d’abord les avantages que je lui trouve comparé à OSSEC :

  • Une meilleure gestion des agents (Agent AIX, Linux, Windows).
    • En effet il permet d’ajouter très simplement des agents Windows avec son fichier msi exécutable via PowerShell et il propose aussi un agent AIX fonctionnel
  • Intégration de base des règles PCI DSS
  • Possibilité de mise en place de la suite ELK (ElasticSearch Logstash Kibana) très facile

Tout d’abord qu’est qu’un HIDS ? C’est un logiciel qui va surveiller les différents agents qui lui sont connectés et remonter des alertes de sécurité en se basant sur les informations qu’il analyse, dans notre cas des hashs de fichier, des clés de registres et des logs.

Concrètement que va donc faire Wazuh :

  • Analyser les logs des différents agents
  • Remonter des alertes avec différents niveaux de criticité (0 à 15)
  • Vérifier l’intégrité des fichiers systèmes
  • Détection de rootkits
  • IPS (lancement de script en cas d’alerte pour bloquer des attaques comme du bruteforce, etc.)

Avant d’installer notre serveur Wazuh Manager (qui dans mon cas sera un Centos7), nous allons voir ensemble son fonctionnement.

La communication entre le serveur et les agents se fait sur le port 1514 UDP dans les deux sens et nécessite un échange de clé pour assurer l’intégrité et la sécurité des données, cet échange de clé peut se faire de plusieurs façons comme nous le verrons un peu plus tard. Par défaut le port 1515 TCP est utilisé pour les échanges de clé automatiquement.

Une fois les échanges de clés effectués, les agents et le serveur ne communiquent plus que par le port 1514 en UDP.

Voici un schéma du fonctionnement du manager avec un agent :

On peut y retrouver les différentes étapes, notamment sur l’agent avec :

  • Log collector qui est un service de collecte de log
  • Syscheck qui est le service chargé de la vérification de l’intégrité des fichiers systèmes
  • Rootcheck qui lui est chargé de la détection des rootkits

Et sur le serveur avec les différents décodeurs de log et les différentes règles de détection, de base Wazuh intègre un grand nombre de règles et décodeurs (Cisco, WordPress, Nginx, Apache, Windows, etc.)

Voyons maintenant comment installer Wazuh Manager sur un serveur Centos 7.

Pour installer le serveur ou les agents Linux il y a 2 solutions, la première (celle que je vais montrer) qui est d’ajouter les repos de Wazuh sur nos machines et de lancer l’installation avec Yum, ou la seconde qui est de récupérer l’archive directement sur leur site et d’exécuter le script install.sh qui est le même pour le serveur ou les agents. Avec ce script vous aurez besoin d’un compilateur C, concernant Windows comme dit un peu plus haut un fichier msi est fourni et pour AIX une archive pré-compilée est également fournies.

Attention le serveur Manager peut être installé seulement sur une machine Linux.

Installation du serveur

Ajout des repos sur le serveur Manager :

# cat > /etc/yum.repos.d/wazuh.repo <<\EOF
[wazuh_repo]
gpgcheck=1
gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH
enabled=1
name=Wazuh repository
baseurl=https://packages.wazuh.com/3.x/yum/
protect=1
EOF

Une fois le repo ajouté il ne reste qu’à lancer l’installation de Wazuh Manager :

yum install wazuh-manager

Notre logiciel serveur dans sa dernière version est donc installé.

De base il s’installe dans /var/ossec/, voici son architecture :

La plupart des noms de dossiser sont parlants pour vous j’imagine, je vais présenter les principaux dossiers :

  • active-response : Ce dossier contient les scripts à exécuter en cas d’alerte (à configurer dans la partie HIDS
  • agentless : Ce dossier contient les fichiers pour se connecter et assurer des machines ou des agents ne peuvent pas être installé
  • api : Il contient les fichiers de configuration de l’API de Wazuh (API Rest en NodeJS qui n’est pas installée de base)
  • etc : Qui va contenir les fichiers de configuration principaux de l’ensemble de l’application
  • ruleset : Contient toutes les règles de déclenchement ainsi que les décodeurs de log
  • bin : Ce dossier contient l’ensemble des scripts nécessaires aux tests et aux fonctionnalités de Wazuh (ajout d’agent, test de configuration, etc.)

Ce sont les dossiers que nous allons principalement utiliser pour la configuration de notre outil.

Installation d’un agent Linux

Je vais maintenant ajouter un agent sur une machine Ubuntu, comme tout à l’heure, il faut ajouter les repos :

# apt-get install curl apt-transport-https lsb-release
# curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | apt-key add –
# echo “deb https://packages.wazuh.com/3.x/apt/ stable main” | tee /etc/apt/sources.list.d/wazuh.list
# apt-get update
# apt-get install wazuh-agent

Il suffit de remplacer agent par manager si vous voulez réaliser une installation sous Debian ou Ubuntu.

Une fois l’installation effectuée, comme sur le manager les fichiers de notre agent sont dans le dossier /var/ossec :

L’architecture est sensiblement la même sur les agents Linux/AIX. Les configurations de l’agent se feront donc aussi dans le dossier /var/ossec/etc, et plus principalement dans le fichier /var/ossec/etc/ossec.conf.

L’agent est maintenant installé mais il n’est pas ajouté sur notre serveur, aucun échange n’a lieu. Il existe 2 manières de faire pour ajouter un agent :

1ère méthode

Sur le serveur Manager, se rendre dans /var/ossec/bin et lancer le script manage_agents :

Une fois ce script, choisissez l’option A :

Une fois l’agent ajouté sur le serveur, une clé a été automatiquement créée, il est donc nécessaire de la récupérer et de l’ajouter sur notre agent, toujours dans le script manage_agents de notre serveur, choisissez l’option E :

Il reste plus qu’à copier notre clé et à l’ajouter sur notre agent.

Sur notre agent Ubuntu, il faut se rendre dans le même script afin d’insérer notre clé :

L’option I a été sélectionnée et la clé a été copié, l’agent est maintenant ajouté correctement à Wazuh.

2ème méthode

Cette 2nd façon de faire est sensiblement plus simple, elle consiste à automatiser le déploiement des clés sur les agents.

Sur le serveur manager de Wazuh il est nécessaire une nouvelle fois de se rendre /var/ossec/bin et d’exécuter la commande suivante :

./ossec-authd -a

Cette commande va lancer le processus authd de Wazuh et commencer à écouter sur le port 1515 en TCP, dans l’attente de connexion d’agent pour un échange de clé (l’option -a est présente pour régler des problèmes de compatibilité sous Windows).

Sur notre agent Ubuntu il faut maintenant lancer la commande suivante (dans /var/ossec/bin toujours) :

./agent-auth -m <IP de votre serveur Manager>

Exemple :

Cette méthode est pour moi beaucoup plus rapide et c’est celle que j’utilise le plus souvent.

L’agent est maintenant installé avec l’échange de clé effectué mais il ne peut toujours pas fonctionner, tout simplement car dans son fichier de configuration principal qui est /var/ossec/etc/ossec.conf, l’IP du serveur Manager n’est pas renseignée. Il faut donc ce rendre dans se fichier sur l’ensemble des agents et ajouter cette IP :

Il suffit de remplacer MANAGER_IP par l’IP de votre serveur manager et de relancer votre agent avec la commande suivante :

systemctl restart wazuh-agent

Il est aussi à noter que si vous avez choisi l’installation directement depuis l’archive proposée par Wazuh pour vos agents, il n’est pas nécessaire d’ajouter l’IP dans vos fichiers de configuration, cela est réalisé automatiquement lors de l’installation.

On peut maintenant vérifier depuis notre manager que l’agent est bien connecté avec la commande suivante qui affiche seulement les agents connectés actifs :

Et même avoir plus d’informations sur l’agent avec une option différente (004 correspond à l’ID de l’agent) :

On sait maintenant ajouter des agents Linux à notre serveur Wazuh, passons maintenant aux agents Windows.

Installation d’un agent Windows

Sur Windows l’ajout d’un agent est très simple, il suffit de récupérer le fichier d’installation msi sur le site de Wazuh : https://packages.wazuh.com/3.x/windows/wazuh-agent-3.2.4-1.msi

Une fois le fichier téléchargé, je le place à la racine de ma partition C: et je lance la commande suivante :

cd C:
.\wazuh-agent-3.2.4-1.msi /q APPLICATIONFOLDER=”C:\ossec\” ADDRESS=”192.168.1.56″ AUTHD_SERVER=”192.168.1.56″

La 1ère option correspond au dossier d’installation, la 2nd et la 3ème correspondent à notre serveur Wazuh qui est à la fois manager et serveur d’authentification.

Avec le fichier msi, tout est automatisé, l’installation de l’agent, l’échange de clé et la modification du fichier ossec.conf pour l’ajout de l’IP du manager, cela peut être vérifié directement sur notre manager comme pour le agents précédents.

Au niveau de l’architecture, elle est similaire à celle de l’agent Linux, on remarque juste l’absence du dossier etc et l’ajout de win32ui.exe qui est une petite interface graphique pour vérifier rapidement l’agent et interagir avec lui :

Nous avons donc maintenant un notre serveur Wazuh Manager avec un agent Linux (Ubuntu) et un agent Windows (10 Entreprise). Au niveau de la configuration, cela va se dérouler en 2 articles, le 1er sur la configuration du FIM et un second sur la configuration de la partie HIDS.

J’espère que cet article vous aura plu, si vous avez des questions ou des remarques sur ce que j’ai pu écrire n’hésitez pas à réagir avec moi par mail ou en commentaire !

Merci pour votre lecture et à bientôt !

MRigonnaux

4 thoughts on “Wazuh HIDS Présentation & Installation

  1. bbreton

    Bonjour, merci pour la présentation, l’outil semble vraiment puissant.
    J’ai testé rapidement avec l’Appliance dispo sur le site de l’éditeur. Par contre de base, pas d’authentification sur la page Kibana.
    Une idée pour sécuriser tout ça ? J’ai trouvé dans la doc quelques pistes a base d’un proxy nginx mais peux etre que c’est possible directement dans Kibana ? Si vous avez des infos.

    Vivement la suite des articles.

    Reply
    1. Mickael Rigonnaux

      Bonjour,

      Tout d’abord merci pour ton retour ! Concernant l’authentification, je ne me suis pas encore vraiment penché dessus, j’ai trouvé ce lien qui parle de l’authentification LDAP sur la suite ELK je ne sais pas si ça peut t’aider :
      https://www.elastic.co/guide/en/x-pack/current/ldap-realm.html

      Je vais essayer d’avancer un peu sur ce point pour le proposer dans un prochain article !

      Bonne soirée !

      Reply
  2. apavone

    Une deuxième article sur Wazuh avec Docker et ELK ? Pourquoi pas présenter la prise en main et quelques fonctionnalités. Impatient de te lire à nouveau.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *