Table des matières

Introduction

Wazuh est un projet open source de détection de faille de sécurité, de visibilité et de conformité. Née comme un FORK d'OSSEC HIDS, il a ensuite été intégrée à Elastic Stack et à OpenSCAP pour devenir une solution plus complète. Vous trouverez ci-dessous une brève description de ces outils et de ce qu’ils font :

OSSEC HIDS

OSSEC HIDS est un système de détection d'intrusion basé sur l'hôte (HIDS) utilisé pour la détection de faille de sécurité, la visibilité et la surveillance de la conformité. Il est basé sur un agent multiplateforme qui transmet les données système (par exemple, les messages, les hachages de fichiers et les anomalies détectées) à un gestionnaire central, où elles sont ensuite analysées et traitées, ce qui génère des alertes de sécurité. Les agents transmettent les données d'événement au gestionnaire central pour analyse via un canal sécurisé et authentifié.

En outre, OSSEC HIDS fournit un serveur syslog centralisé et un système de surveillance de la configuration sans agent qui fournit des informations de sécurité sur les événements et les modifications sur les périphériques sans agent tels que les pare-feu, les commutateurs, les routeurs, les points d'accès, les équipements réseau, etc.

OpenSCAP

OpenSCAP est un interpréteur OVAL (Open Vulnerability Assessment Language) et XCCDF (Format de la liste de contrôle de configuration extensible) utilisé pour vérifier les configurations du système et détecter les applications vulnérables.

C’est un outil bien connu, conçu pour vérifier la conformité de la sécurité et le renforcement des systèmes à l’aide des bases de sécurité standard du secteur pour les environnements d’entreprise.

Elastic Stack

Elastic Stack est une suite logicielle (Filebeat, Elasticsearch, Kibana) utilisée pour collecter, analyser, indexer, stocker, rechercher et présenter des données de journal. Il fournit une interface Web qui fournit un tableau de bord de haut niveau des événements qui permet une analyse avancée et l'exploration de données en profondeur dans votre magasin de données d'événements.

Composants

Les principaux composants de Wazuh sont l'agent qui s'exécute sur chaque hôte surveillé et le serveur qui analyse les données reçues des agents et des sources sans agent telles que syslog. En outre, le serveur transmet les données d'événement à un cluster Elasticsearch où les informations sont indexées et stockées.

Wazuh agent

L'agent Wazuh s'exécute sur les systèmes d'exploitation Windows, Linux, Solaris, BSD et Mac. Il est utilisé pour collecter différents types de données système et d'application qu'il transmet au serveur Wazuh via un canal chiffré et authentifié. Afin d'établir ce canal sécurisé, un processus d'enregistrement utilisant des clés pré-partagées uniques est utilisé.

Les agents peuvent être utilisés pour surveiller des serveurs physiques, des machines virtuelles et des instances cloud (par exemple, Amazon AWS, Azure ou Google Cloud). Des packages d'installation d'agent précompilés sont disponibles pour Linux, HP-UX, AIX, Solaris, Windows et Darwin (Mac OS X).

Sur les systèmes d'exploitation Unix, l'agent exécute plusieurs processus qui communiquent entre eux via un socket de domaine Unix local. L'un de ces processus est responsable de la communication et de l'envoi des données au serveur Wazuh. Sur les systèmes Windows, un seul processus d'agent exécute plusieurs tâches à l'aide de mutex.

Différents processus ou tâches d'agent sont utilisés pour surveiller le système de différentes manières (surveillance de l'intégrité des fichiers, lecture des messages du journal du système et analyse des configurations du système, par exemple).

Le diagramme ci-dessous représente les tâches et processus internes exécutés au niveau de l'agent:

Tous les processus d'agent ont des objectifs et des paramètres différents. Voici une brève description de ce que chacun d’entre eux fait:

Rootcheck : Ce processus effectue plusieurs tâches liées à la détection des rootkits, des logiciels malveillants et des anomalies du système. Il exécute également certaines vérifications de sécurité de base par rapport aux fichiers de configuration du système.

Log Collector : Cet agent sert à lire les messages du journal du système d'exploitation et des applications, y compris les fichiers journaux à plat, les journaux d'événements Windows standard et même les canaux d'événements Windows. Il peut également être configuré pour exécuter et capturer périodiquement la sortie de commandes spécifiques.

Syscheck : Ce processus effectue une surveillance de l'intégrité des fichiers (FIM) et peut également surveiller les clés de registre sur les systèmes Windows. Il est capable de détecter les modifications du contenu, de la propriété et d’autres attributs d’un fichier, ainsi que de noter la création et la suppression de fichiers. Bien qu'il effectue des analyses FIM périodiques par défaut, il peut également être configuré pour communiquer avec le noyau du système d'exploitation afin de détecter en temps réel les modifications de fichiers et de générer un rapport de modification détaillé (diffs) des fichiers texte.

OpenSCAP : Ce module utilise les profils de sécurité de base publiés OVAL (Open Vulnerability Assessment Language) et XCCDF (Extensible Configuration Checklist Description Format). En analysant périodiquement un système, il peut détecter des applications ou des configurations vulnérables ne respectant pas les normes reconnues, telles que celles définies dans les tests de performances CIS (Center for Internet Security).

Agent Daemon : Il s'agit du processus qui reçoit les données générées ou collectées par tous les autres composants de l'agent. Il compresse, chiffre et transmet les données au serveur via un canal authentifié. Ce processus s'exécute dans un environnement isolé «chroot», ce qui signifie qu'il dispose d'un accès limité au système surveillé. Cela améliore la sécurité globale de l'agent car il s'agit du seul processus qui se connecte au réseau.

Wazuh server

Le composant serveur est chargé d'analyser les données reçues des agents et de déclencher des alertes lorsqu'un événement correspond à une règle (par exemple, une intrusion détectée, un fichier modifié, une configuration non conforme à la stratégie, un éventuel rootkit, etc.).

Le serveur s'exécute généralement sur une machine physique autonome, une machine virtuelle ou une instance de cloud et exécute des composants d'agent dans le but de se surveiller.

Vous trouverez ci-dessous une liste des principaux composants du serveur:

Registration service : Il sert à enregistrer de nouveaux agents en fournissant et en distribuant des clés d'authentification pré-partagées propres à chaque agent. Ce processus s'exécute en tant que service réseau et prend en charge l'authentification via TLS / SSL et / ou par un mot de passe fixe.

Remote daemon service : Il s'agit du service qui reçoit les données des agents. Il utilise les clés pré-partagées pour valider l'identité de chaque agent et chiffrer les communications entre l'agent et le gestionnaire.

Analysis daemon : Il s'agit du processus d'analyse des données. Il utilise des décodeurs pour identifier le type d'informations en cours de traitement (événements Windows, journaux SSHD, journaux de serveur Web, etc.), puis extrait les éléments de données pertinents des messages de journal (par exemple, adresse IP source, identificateur d'événement, utilisateur, etc.). Ensuite, en utilisant des règles, il peut identifier des modèles spécifiques dans les enregistrements de journal décodés qui pourraient déclencher des alertes et éventuellement même faire appel à des contre-mesures automatisées (réponses actives), comme une interdiction IP sur le pare-feu.

API RESTful : Fournit une interface permettant de gérer et de surveiller l'état de la configuration et du déploiement des agents. Il est également utilisé par l'interface Web Wazuh, qui est une application Kibana.

Elastic Stack

Elastic Stack est une suite unifiée de projets Open Source populaires pour la gestion des journaux, notamment Elasticsearch, Kibana, Filebeat et autres.

Les projets particulièrement pertinents pour la solution Wazuh sont:

Elasticsearch: Un moteur d'analyse et de recherche en texte intégral hautement évolutif. Elasticsearch est distribué, ce qui signifie que les données (index) sont divisées en fragments et que chaque fragment peut avoir zéro réplicas ou plus.

Kibana: Une interface Web flexible et intuitive pour extraire, analyser et visualiser des données. Il fonctionne par-dessus le contenu indexé sur un cluster Elasticsearch.

Filebeat: Un transitaire léger utilisé pour transporter les journaux sur un réseau, généralement vers Elasticsearch.

Wazuh s'intègre à Elastic Stack pour fournir un flux de messages de journal déjà décodés à indexer par Elasticsearch, ainsi qu'une console Web en temps réel pour l'analyse des alertes et des données de journal. De plus, l'interface utilisateur Wazuh (fonctionnant au-dessus de Kibana) peut être utilisée pour la gestion et la surveillance de votre infrastructure Wazuh.

Un index Elasticsearch est un ensemble de documents présentant des caractéristiques similaires (comme certains champs communs et les exigences de conservation des données partagées). Wazuh utilise jusqu'à trois index différents, créés quotidiennement, pour stocker différents types d'événements:

wazuh-alerts: index les alertes générées par le serveur Wazuh chaque fois qu'un événement déclenche une règle.

wazuh-events: index de tous les événements (données d'archive) reçus des agents, qu'ils déclenchent ou non une règle.

wazuh-monitoring: index des données relatives au statut de l'agent dans le temps. Il est utilisé par l'interface Web pour représenter le moment où des agents individuels sont ou ont été «Actifs», «Déconnectés» ou «Jamais connectés».

Un index est composé de documents. Pour les index ci-dessus, les documents sont des alertes individuelles, des événements archivés ou des événements d'état.

Un index Elasticsearch est divisé en un ou plusieurs fragments et chaque fragment peut éventuellement avoir un ou plusieurs réplicas. Chaque fragment primaire et réplique est un index Lucene individuel. Ainsi, un index Elasticsearch est composé de nombreux index Lucene. Lorsqu'une recherche est exécutée sur un index Elasticsearch, elle est exécutée sur tous les fragments en parallèle et les résultats sont fusionnés.

La division des index Elasticsearch en plusieurs partitions et répliques est utilisée dans les clusters Elasticsearch à plusieurs noeuds dans le but de réduire les recherches et d'assurer la haute disponibilité. Les clusters Elasticsearch à noeud unique ne comportent normalement qu'un seul fragment par index et aucun réplica.

Architecture

L'architecture Wazuh repose sur des agents s'exécutant sur des hôtes surveillés qui transmettent les données de journal à un serveur central. En outre, les périphériques sans agent (tels que les pare-feu, les commutateurs, les routeurs, les points d'accès, etc.) sont pris en charge et peuvent activement soumettre des données de journal via syslog et/ou une analyse périodique de leurs modifications de configuration pour transmettre ultérieurement les données au serveur central. Le serveur central décode et analyse les informations entrantes et transmet les résultats à un cluster Elasticsearch pour l'indexation et le stockage.

Un cluster Elasticsearch est un ensemble d'un ou de plusieurs nœuds (serveurs) qui communiquent entre eux pour effectuer des opérations de lecture et d'écriture sur les index. De petits déploiements Wazuh (<50 agents) peuvent être facilement gérés par un cluster à un seul nœud. Les clusters à plusieurs nœuds sont recommandés lorsqu'il existe un grand nombre de systèmes surveillés, lorsqu'un volume important de données est anticipé et/ou lorsqu'une haute disponibilité est requise.

Lorsque le serveur Wazuh et le cluster Elasticsearch se trouvent sur des hôtes différents, Filebeat est utilisé pour transférer de manière sécurisée les alertes Wazuh et/ou les événements archivés au (x) serveur (s) Elasticsearch à l'aide du chiffrement TLS.

Le diagramme ci-dessous illustre la répartition des composants lorsque le serveur Wazuh et le cluster Elasticsearch sont exécutés sur des hôtes différents.

Note:

Avec les clusters à plusieurs nœuds, il y aura plusieurs serveurs Elastic Stack sur lesquels Filebeat est capable de transférer des données:

Dans les déploiements de plateforme Wazuh plus petites, Wazuh et Elastic Stack sont sur une instance.

Communications et flux de données

Communication agent-serveur

Les agents Wazuh utilisent le protocole de messagerie OSSEC pour envoyer les événements collectés au serveur Wazuh via le port 1514 (UDP ou TCP). Le serveur Wazuh décode ensuite et vérifie par règle les événements reçus avec le moteur d'analyse. Les événements qui déclenchent une règle sont complétés par des données d'alerte telles que l'ID et le nom de la règle.

Les événements peuvent être spoolés dans l'un des fichiers suivants, ou dans les deux, selon qu'une règle est déclenchée ou non :

Note:

Les alertes seront dupliquées si vous utilisez ces deux fichiers. Notez également que les deux fichiers reçoivent des données d'événement entièrement décodées.

Le protocole de messagerie Wazuh utilise un cryptage Blowfish de 192 bits, ou un cryptage AES avec 128 bits par bloc et des clés de 256 bits.

Note:

Lisez les avantages d'utiliser AES dans le document de communication Wazuh pour plus d'informations.

Communication Wazuh-elastic

Le serveur Wazuh utilise Filebeat pour envoyer des données d'alerte et d'événement au serveur Elasticsearch à l'aide du chriffrement TLS.

Filebeat formate les données entrantes et les enrichit éventuellement avec des informations GeoIP avant de les envoyer à Elasticsearch (port 9200/TCP). Une fois les données indexées dans Elasticsearch, Kibana (port 5601/TCP) est utilisé pour extraire et visualiser les informations.

L'application Wazuh fonctionne dans Kibana en interrogeant en permanence l'API RESTful (port 55000/TCP sur le gestionnaire Wazuh) afin d'afficher les informations relatives à la configuration et à l'état du serveur et des agents, ainsi que pour redémarrer les agents à volonté. Cette communication est chiffrée avec TLS et authentifiée avec un nom d'utilisateur et un mot de passe.

Ports requis

Pour une installation de Wazuh et d’Elastic Stack, plusieurs ports réseau doivent être disponibles et ouverts afin que les différents composants puissent communiquer correctement entre eux.

Wazuh

Component Port Protocol Purpose
Wazuh manager 1514 TCP Send collected events from agents (when configured for TCP)
1514 UDP Send collected events from agents (when configured for UDP) - Default
1515 TCP Agents registration service
1516 TCP Wazuh cluster communications
514 TCP Send collected events from syslog (when configured for TCP)
514 UDP Send collected events from syslog (when configured for UDP) - Default
Wazuh API 55000 TCP Incoming HTTP requests

Elastic Stack

Component Port Protocol Purpose
Elasticsearch 9200 TCP Elasticsearch RESTful API
9300-9400 TCP Elasticsearch cluster communications
Kibana 5601 TCP Kibana web interface

Installation

La configuration de Wazuh implique l’installation de deux composants centraux: le serveur Wazuh et Elastic Stack. De plus, les agents Wazuh sont déployés sur les hôtes surveillés de votre environnement:

Serveur Wazuh : Exécute le gestionnaire et l'API Wazuh. Il collecte et analyse les données des agents déployés.

Elastic Stack : Exécute le moteur Elasticsearch, Filebeat et Kibana (y compris l'application Wazuh). Il lit, analyse, indexe et stocke les données d'alerte générées par le serveur Wazuh.

Agent Wazuh : S'exécute sur l'hôte surveillé, collecte le journal système et les données de configuration et détecte les intrusions et les anomalies. Il discute avec le serveur Wazuh auquel il transmet les données collectées pour une analyse plus approfondie.

Les architectures distribuées exécutent le serveur Wazuh et le cluster Elastic Stack (un ou plusieurs serveurs) sur différents hôtes.

Les architectures à hôte unique exécutent le serveur Wazuh et Elastic Stack sur le même système.

Installation Elastic Stack

Voir la page : Installation de la stack Elastic Stack

Installation Wazuh Server

Voir la page : Installation de la stack Wazuh Server

Installation Kibana

Voir la page : Installation de la stack Kibana

Installation Wazuh Agent

Voir la page : Installation de la stack Wazuh Agents

Annexe

https://wazuh.com

https://documentation.wazuh.com/4.0/installation-guide/index.html

https://documentation.wazuh.com/4.0/installation-guide/open-distro/distributed-deployment/step-by-step-installation/index.html

https://documentation.wazuh.com/3.x/getting-started/components.html

https://documentation.wazuh.com/3.9/installation-guide/installing-wazuh-server/wazuh_server_deb.html

https://documentation.wazuh.com/3.9/installation-guide/installing-elastic-stack/elastic_server_deb.html

https://documentation.wazuh.com/3.9/installation-guide/installing-wazuh-agent/wazuh_agent_linux_deb.html

https://documentation.wazuh.com/3.9/user-manual/agents/remove-agents/index.html

https://documentation.wazuh.com/4.0/user-manual/elasticsearch/elastic_tuning.html#change-elastic-pass