« LINUX:Wazuh: HIDS » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 120 : | Ligne 120 : | ||
</localfile> | </localfile> | ||
---- | ---- | ||
Remarquons que cette configuration concerne le serveur (les deux premiers blocs de modifications le concerne) mais également l'agent local (dernier bloc). | |||
On ne touche pas au reste. Sur le site Web de Wazuh, la documentation vous aidera pour aller plus loin. De nombreuses sections peuvent être éliminées, activées ou désactivées en fonction de votre configuration. | |||
Un autre fichier de configuration est central: "/var/ossec/etc/internal_options.conf". Ce fichier comporte des paramètres importants liés aux fonctionnement de Wazuh. Ces options sont à manipuler avec précautions. On ne le change pas. Tout paramètre que l'on veut modifier, est à faire dans le fichier local "/var/ossec/etc/local_internal_options.conf". | Un autre fichier de configuration est central: "/var/ossec/etc/internal_options.conf". Ce fichier comporte des paramètres importants liés aux fonctionnement de Wazuh. Ces options sont à manipuler avec précautions. On ne le change pas. Tout paramètre que l'on veut modifier, est à faire dans le fichier local "/var/ossec/etc/local_internal_options.conf". | ||
Ligne 126 : | Ligne 129 : | ||
maild.full_subject=1 | maild.full_subject=1 | ||
---- | ---- | ||
Nous avons une bonne base | Nous avons une bonne base pour démarrer le serveur. | ||
=Activer et lancer le service du serveur= | =Activer et lancer le service du serveur= | ||
Le service à lancer est Wazuh-manager. La première commande active le service pour qu'à chaque démarrage du serveur, le service se lance. La seconde lance directement le service. La troisième relance le service. | Le service à lancer est Wazuh-manager. La première commande active le service pour qu'à chaque démarrage du serveur, le service se lance. La seconde lance directement le service. La troisième relance le service. | ||
systemctl enable wazuh-manager | |||
systemctl enable wazuh-manager | systemctl start wazuh-manager | ||
systemctl start wazuh-manager | systemctl restart wazuh-manager | ||
systemctl restart wazuh-manager | |||
=Configuration de base de l'agent= | =Configuration de base de l'agent= | ||
Comme sur le serveur, le logiciel est installé dans le répertoire "/var/ossec". | Comme sur le serveur, le logiciel est installé dans le répertoire "/var/ossec". Le fichier de configuration se trouve dans le sous-répertoire "/var/ossec/etc" et se nomme "ossec.conf". | ||
La section "client" est fondamentale. Cette section doit être présente. Nous y adaptons l'adresse IP du serveur. | |||
---- | |||
<client> | |||
<server> | |||
<address>'''192.168.1.110'''</address> | |||
</server> | |||
</client> | |||
---- | |||
Pour le moment, on ne touche pas au reste. Sur le site Web de Wazuh, la documentation vous aidera pour aller plus loin. De nombreuses sections peuvent être éliminées, activées ou désactivées en fonction de votre configuration. | |||
=Activer et lancer le service de l'agent= | =Activer et lancer le service de l'agent= | ||
Le service à lancer est Wazuh-agent. La première commande active le service pour qu'à chaque démarrage du serveur, le service se lance. La seconde lance directement le service. La troisième relance le service. | Le service à lancer est Wazuh-agent. La première commande active le service pour qu'à chaque démarrage du serveur, le service se lance. La seconde lance directement le service. La troisième relance le service. | ||
systemctl enable wazuh-agent | |||
systemctl start wazuh-agent | |||
systemctl restart wazuh-agent | |||
Dès que l'agent est lancé, il essaye de se connecter au serveur et si c'est la première fois, il y a échange de clés entre eux via le port TCP 1515 afin que l'agent soit reconnu par la suite. | |||
Version du 5 février 2021 à 19:44
But
Wazuh est un HIDS. Un HIDS (Host Intrusion Detection Systems) est une application qui analyse ce qui se passe sur une machine et sur ses interfaces réseaux. Quand elle repère une activité anormale, elle active une action. Autrement dit elle tache de repérer ceux qui effectuent une activité malveillante à son encontre.
Au contraire les NIDS (Network Intrusion Detection Systems) analysent le trafic réseau qui veut traverser une machine et de repérer les activités anormales pour les contrecarrer. Il sera donc placé sur un noeud du réseau (router, bridge,...).
Notons que l'attaque peut aussi arriver de l'intérieur.
Wazuh est basé à l'origine sur le logiciel OSSEC. Il corrige beaucoup de fonctionnalités et va plus loin.
La documentation se trouve à l'URL suivante (version 4): https://documentation.wazuh.com/4.0/user-manual/overview.html
Schéma fonctionnel
Dans sa configuration de base, Wazuh est constitué de deux composants: le serveur (Wazuh-manager) et de l'agent (Wazuh-agent). L'ensemble du logiciel Wazuh a des extensions permettant une visualisation des résultats et des conseils. Nous n'aborderons par ce second aspect.
- Wazuh-manager le serveur: Le serveur est l'élément central qui rassemble tous les éléments, les analyse et entame des actions éventuelles. On choisit une machine (A) sur laquelle on installe le serveur; mais en même temps un client local sera installé. Cet agent local portera le n° "000"; les échanges avec le serveur se feront via un socket Unix. La partie serveur n'existe que pour Linux.
- Wazuh-agent le client: Sur la machine du serveur (A), on a déjà un agent local. Cette première machine est surveillée. A côté, il faut aussi surveiller d'autres machines. Sur celles-ci, on installe l'agent distant. Les échanges avec le serveur se font via le port TCP 1514 par défaut. Dans le schéma ci-dessous, la pointe de la flèche désigne le serveur au sens service réseau.
A côté un autre service est présent via le port TCP 1515. Ce service est utile lors de la première connexion de l'agent distant au serveur; il récupère auprès du serveur une clé unique qui servira par la suite aux échanges sécurisés entre des deux. Dès ce premier échange fait, il ne sert plus. Par défaut, le n° s'incrémente au fur et à mesure pour chaque agent ("001", "002",...). Le groupe par défaut est "default". La partie agent existe pour divers Unix, Linux et MacOS compris, et Windows.
L'agent est chargé de rassembler les informations locales: journaux, analyse des fichiers, repérage de fonctions malfaisantes (Trojans, Rootkits,...), de problèmes de configurations,... Il envoie ces informations au serveur.
Le serveur décode, analyse ces éléments en suivant un ensemble de règles. En fonction des résultats, des actions sont effectuées: la journalisation, l'envoi de mails et enfin l'exécution d'une action spécifique sur l'agent émetteur (ou autres). Tous ces échanges se font via le port TCP 1514 par défaut entre le serveur et les agents distants.
Recommandation: Le serveur doit être une machine à part, protégée et non celle qui subira de plein fouet les attaques. Car si l'agent est compromis, il aura normalement eu le temps d'envoyer quelques informations au serveur qui aura eu tout le temps de traiter.
Remarque: Nous n'abordons pas la récupération de journaux via le port 514 (UDP ou TCP) suivant la fonctionnalité "Syslog". De même un port TCP 55000 est activé sur le serveur pour l'utilisation des APIs. Il est utile si on ajoute les paquets "elasticsearch", "filebeat", "opendistroforelasticsearch-kibana" qui ajoutent des interfaces Web d'analyses des résultats. Cette facette ne sera également pas abordée. Notons que ce dernier point demande pas mal de ressources.
Installation
Dépôt
Avant l'installation, il faut pouvoir accéder au dépôt. On procède par la création d'un fichier "wazuh.repo" dans le répertoire "/etc/yum.repos.d". Ce fichier est à créer sur le serveur et sur chaque agent distant.
Voici son contenu:
[wazuh] gpgcheck=1 gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH enabled=1 name=EL-$releasever - Wazuh baseurl=https://packages.wazuh.com/4.x/yum/ protect=1
Il est préférable ensuite de procéder à un nettoyage:
dnf clean all
Installation sur le serveur
On installe le paquet suivant sur le serveur:
dnf install wazuh-manager
Installation sur chaque agent distant
On installe le paquet suivant sur l'agent:
dnf install wazuh-agent
Configurer le mur de feu ou FireWall
Comme des échanges se font via le réseau entre le serveur et les agents, il faut ajouter deux règles au FireWall.
- Voici ces règles pour IPTABLES à mettre sur le serveur:
-A INPUT -p tcp -m tcp --dport 1514 -s 192.168.1.0/24 -j ACCEPT -A INPUT -p tcp -m tcp --dport 1515 -s 192.168.1.0/24 -j ACCEPT
Ici on ouvre l'accès à tous le LAN local. On peux être plus restrictif:
- En activant la seconde règle que quand on veut ajouter une nouvelle machine agent.
- En nommant explicitement les adresses IP des agents plutôt que de l'ouvrir à tout le réseau local.
- Voici ces règles pour IPTABLES à mettre sur les agents en supposant que l'adresse IP du serveur est 192.168.1.110:
-A OUTPUT -p tcp -m tcp --dport 1514 -d 192.168.1.110 -j ACCEPT -A OUTPUT -p tcp -m tcp --dport 1515 -d 192.168.1.110 -j ACCEPT
On peut faire la même remarque pour la seconde règle que pour le serveur. Dès que l'agent est reconnu par le serveur, elle peut être éliminée.
Configuration de base du serveur
Le logiciel est installé dans le répertoire "/var/ossec". Le fichier de configuration se trouve dans le sous-répertoire "/var/ossec/etc" et se nomme "ossec.conf".
Nous allons modifier quelques sections.
La première étape est d'être averti par mail si une alerte de déclenche. On définit les paramètres de messagerie. On utilise le serveur de messagerie Postfix local ("smtp_server") et on envoie le message à l'utilisateur "root" local ("email_to"). On nomme l'adresse mail de l'émetteur selon les contraintes du serveur de messagerie ("email_from").
<global> <email_notification>yes</email_notification> <smtp_server>localhost</smtp_server> <email_from>'ossecm@home.dom'</email_from> <email_to>'root@home.dom</email_to> </global>
Ensuite on définit le niveau à partir duquel l'alerte est envoyée dans les journaux ("log_alert_level") et par mail ("email_alert_level"). Chaque alerte possède un niveau qui va de 1 à 16. Ces niveaux sont à adapter progressivement en fonction des besoins. Au début, il faut observer ce qui se passe. On adapte les niveaux en fonction.
<alerts> <log_alert_level>4</log_alert_level> <email_alert_level>5</email_alert_level> </alerts>
Ensuite il faut vérifier les fichiers journaux que vous voulez surveiller. Par exemple, les fichiers journaux liés au serveur WEB Apache sont normalement inclus; il n'y a rien à faire de ce côté sauf si vous avez changé leurs noms. Dans mon cas, le FireWall a son journal particulier ("/var/log/iptables"); nous l'ajoutons. s'il y en a d'autres, on les ajoute.
<localfile> <log_format>syslog</log_format> <location>/var/log/iptables</location> </localfile> <localfile> <log_format>syslog</log_format> <location>/var/log/dnf.rpm.log</location> </localfile>
Remarquons que cette configuration concerne le serveur (les deux premiers blocs de modifications le concerne) mais également l'agent local (dernier bloc).
On ne touche pas au reste. Sur le site Web de Wazuh, la documentation vous aidera pour aller plus loin. De nombreuses sections peuvent être éliminées, activées ou désactivées en fonction de votre configuration.
Un autre fichier de configuration est central: "/var/ossec/etc/internal_options.conf". Ce fichier comporte des paramètres importants liés aux fonctionnement de Wazuh. Ces options sont à manipuler avec précautions. On ne le change pas. Tout paramètre que l'on veut modifier, est à faire dans le fichier local "/var/ossec/etc/local_internal_options.conf". Nous avons modifié un de ces paramètres afin que le sujet de l'email soit plus explicite. Ceci me facilite la vie en me permettant de classer automatiquement certains mail d'alerte.
maild.full_subject=1
Nous avons une bonne base pour démarrer le serveur.
Activer et lancer le service du serveur
Le service à lancer est Wazuh-manager. La première commande active le service pour qu'à chaque démarrage du serveur, le service se lance. La seconde lance directement le service. La troisième relance le service.
systemctl enable wazuh-manager systemctl start wazuh-manager systemctl restart wazuh-manager
Configuration de base de l'agent
Comme sur le serveur, le logiciel est installé dans le répertoire "/var/ossec". Le fichier de configuration se trouve dans le sous-répertoire "/var/ossec/etc" et se nomme "ossec.conf".
La section "client" est fondamentale. Cette section doit être présente. Nous y adaptons l'adresse IP du serveur.
<client> <server> <address>192.168.1.110</address> </server> </client>
Pour le moment, on ne touche pas au reste. Sur le site Web de Wazuh, la documentation vous aidera pour aller plus loin. De nombreuses sections peuvent être éliminées, activées ou désactivées en fonction de votre configuration.
Activer et lancer le service de l'agent
Le service à lancer est Wazuh-agent. La première commande active le service pour qu'à chaque démarrage du serveur, le service se lance. La seconde lance directement le service. La troisième relance le service.
systemctl enable wazuh-agent systemctl start wazuh-agent systemctl restart wazuh-agent
Dès que l'agent est lancé, il essaye de se connecter au serveur et si c'est la première fois, il y a échange de clés entre eux via le port TCP 1515 afin que l'agent soit reconnu par la suite.
test configuration
test regle