« LINUX:Wazuh-Actions préventives » : différence entre les versions

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
 
(16 versions intermédiaires par le même utilisateur non affichées)
Ligne 4 : Ligne 4 :
----
----
=But=
=But=
Jusqu'ici nous avons traité de l'aspect des actions immédiates à toute attaque. Wazuh dispose de divers autres modules ayant une action préventives. Ils tentent à repérer des problèmes potentiels de sécurité afin que nous puissions combler ces trous de sécurité.  
Jusqu'ici nous avons traité de l'aspect des actions immédiates à toute attaque. Wazuh dispose de divers autres modules ayant une action préventive. Ils tentent de repérer des problèmes potentiels de sécurité afin que nous puissions combler ces trous de sécurité.  




=SCA=
=[[LINUX:Wazuh-ROOTCHECK|ROOTCHECK]]=
Ce module a pour but d'analyser la configuration du système et de divers services au terme duquel un rapport est généré. Il se base sur des fichiers de tests. On peut en créer soi-même mais quelques uns sont fournis pour divers systèmes ou logiciels phares. Il joue un rôle semblable au logiciel "[[LINUX:Lynis|Lynis]]" vu dans un autre article.
Le module a pour tâche de repérer divers malwares. Il joue un rôle semblable au logiciel "[[LINUX:Rkhunter|Rkhunter]]" vu dans un autre article.




==Configuration==
=[[LINUX:Wazuh-SYSCHECK|SYSCHECK]]=
Cette configuration est incluse dans le fichier "/var/ossec/etc/ossec.conf".  
Ce module repère tout changement de taille et de contenu d'une vaste sélection de fichiers du système. Il joue un rôle semblable au logiciel "[[LINUX:Rkhunter|Rkhunter]]" vu dans un autre article.


Sur la machine où le service "wazuh-manager" s'exécute, cette configuration est placée dans ce fichier.


Sur les machines hébergeant l'agent distant, la configuration peut être contenue dans le fichier du même nom mais il est plus pratique de transmettre cette configuration via le système de partage vu précédemment. Dans le cas du partage par défaut, sur la machine Manager, ce fichier se nomme '''"/var/ossec/etc/shared/default/agent.conf"''' et sur l'agent distant, il se trouve sous le nom '''"/var/ossec/etc/default/agent.conf"'''.
=[[LINUX:Wazuh-SCA|SCA]]=
Ce module a pour but d'analyser la configuration du système et de divers services au terme duquel un rapport est généré. Il se base sur des fichiers de contrôles en se basant sur diverses règles. On peut en créer soi-même mais quelques uns sont fournis pour divers systèmes ou logiciels phares. Il joue un rôle semblable au logiciel "[[LINUX:Lynis|Lynis]]" vu dans un autre article.


De plus dans le cas de partage de configuration "SCA", il est requit d'ajouter sur l'agent distant une option qui permet d'activer ce module. Celle-ci est à mettre dans le fichier ''''"/var/ossec/etc/local_internal_options.conf"''' comme conseillé précédemment.
----
sca.remote_commands=1
----
La configuration est comprise entre les balises '''<nowiki><sca></nowiki>''' et '''<nowiki></sca></nowiki>'''.
Voici une configuration de base:
----
  <sca>
    <enabled>yes</enabled>
    <scan_on_start>no</scan_on_start>
    <interval>12h</interval>
    <skip_nfs>yes</skip_nfs>
  </sca>
----
Explication des options:
* enabled: active le module
* scan_on_start: lance le traitement dès le lancement du service
* interval: définit l'intervalle entre le lancement de deux traitements; ici 12h
* skip_nfs: le traitement évite les partitions NFS
==Policies==
L'ensemble des règles de contrôles des configurations sur système globalement sont reprises sous format YAML dans des fichiers ayant l'extension "yml".
Un ensemble de fichiers de ces règles toutes faites se retrouvent dans le répertoire "/var/ossec/ruleset/sca". Chaque fichier reprend les règles pour un thème donné. Par exemple le fichier "cis_apache_24.yml" est dédié au service WEB Apache de version 2.4 et le fichier "cis_rhel8_linux.yml" est dédié au système Linux de la distribution RedHat Entreprise version 8. Par défaut, tous les fichiers de ce répertoire ayant l'extension "yml" seront traités. Sous Fedora, tous les fichiers sont désactivés car ils portent l'extension "yml.disabled" sauf un, le fichier "cis_rhel8_linux.yml".


=[[LINUX:Wazuh-SYSCOLLECTOR|SYSCOLLECTOR]]=
Ce module récolte les informations globales du système comme les logiciels installés, le matériel présent, les interfaces réseaux, les ports réseaux, les processus. Il est actif sur tous les agents local et distants. Ces informations sont centralisées auprès de la machine manager. Elles y seront analysées par le module VULNERABILITY-DETECTOR.


Malheureusement à chaque mise à jour, le contenu de ce répertoire est réinitialisé. Or il faudra d'une part renommer les fichiers désirés, adapter un peu leur contenu et d'autre part ils devront être transférés vers les agents distants.


Pour pallier à ces limitations, nous avons opté pour l'utilisation du système de partage. Nous allons mettre les fichiers retenus dans le répertoire '''"/var/ossec/etc/shared/default"''' sur la machine manager après les avoir renommés avec l'extension "yml". Ces fichiers seront transférés automatiquement dans le répertoire '''"/var/ossec/etc/default"'''. Mais il faut ensuite signaler au module "SCA" où les trouver.  
=[[LINUX:Wazuh-VULNERABILITY-DETECTEUR|VULNERABILITY-DETECTEUR]]=
Sur la machine manager, les informations récoltées récoltées et reçues par le module SYSCOLLECTOR, sont analysées afin d'y repérer des risques d'attaques.


Nous avons retenu les fichiers:
* cis_apache_24.yml
* cis_mysql5-6_community.yml
* cis_rhel8_linux.yml
* cis_rhel9_linux.yml
* sca_unix_audit.yml
* web_vulnerabilities.yml
Les noms des fichiers sont assez explicites pour devoir les expliquer.


Sur la machine manager, la configuration est amendée comme suit:
=[[LINUX:Wazuh-VULNERABILITY-DETECTOR|VULNERABILITY-DETECTOR]]=
----
Dans la nouvelle version, cette option a été revue et renommée [[LINUX:Wazuh-VULNERABILITY-DETECTEUR|VULNERABILITY-DETECTEUR]] et n'est donc plus disponible sous ce nom.
  <sca>
    <enabled>yes</enabled>
    <scan_on_start>no</scan_on_start>
    <interval>12h</interval>
    <skip_nfs>yes</skip_nfs>
    '''<policies>'''
    '''<policy>etc/shared/default/cis_apache_24.yml</policy>'''
    '''<policy>etc/shared/default/cis_mysql5-6_community.yml</policy>'''
    '''<policy>etc/shared/default/cis_rhel8_linux.yml</policy>'''
    '''<policy>etc/shared/default/cis_rhel9_linux.yml</policy>'''
    '''<policy>etc/shared/default/sca_unix_audit.yml</policy>'''
    '''<policy>etc/shared/default/web_vulnerabilities.yml</policy>'''
    '''<policy enabled="no">ruleset/sca/cis_rhel8_linux.yml</policy>'''
    '''</policies>'''
  </sca>
----
On remarque que le fichier "/var/ossec/ruleset/sca/cis_rhel8_linux.yml" est désactivé car son homologue "/var/ossec/etc/shared/default/cis_rhel8_linux.yml" devra être adapté pour être opérationnel et que le n° des règles seront en double et par ce fait, elles entreront en conflit entre elles.  


Remarquons que le chemin de ces fichiers est relatif; en effet le chemin de base pour Wazuh est "/var/ossec".


=OSQUERY=
Ce module est désactivé par défaut sur le manager et sur les agents distants. Il fait appel à un logiciel tiers.


Dans le fichier de partage pour les agents '''"/var/ossec/etc/shared/default/agent.conf"''' sur la machine manager, la configuration devient:
Voici la configuration du manager dans le fichier "/var/ossec/etc/ossec.conf" et du fichier "/var/ossec/etc/shared/default/agent.conf" transmis aux agents distants:
----
----
   <sca>
   <wodle name="osquery">
     <enabled>yes</enabled>
     <disabled>yes</disabled>
    <scan_on_start>no</scan_on_start>
  </wodle>
    <interval>12h</interval>
    <skip_nfs>yes</skip_nfs>
    '''<policies>'''
    '''<policy>etc/shared/cis_apache_24.yml</policy>'''
    '''<policy>etc/shared/cis_mysql5-6_community.yml</policy>'''
    '''<policy>etc/shared/cis_rhel8_linux.yml</policy>'''
    '''<policy>etc/shared/cis_rhel9_linux.yml</policy>'''
    '''<policy>etc/shared/sca_unix_audit.yml</policy>'''
    '''<policy>etc/shared/web_vulnerabilities.yml</policy>'''
    '''<policy enabled="no">ruleset/sca/cis_rhel8_linux.yml</policy>'''
    '''</policies>'''
  </sca>
----
----
Dans ce cas le chemin sera celui de la machine de l'agent distant "/var/ossec/etc/shared".
Dans notre cas, du côté des agents, ce sont toutes des machines Linux. Il est évident que si nous sommes en présence aussi de machines Windows, il faut ajouter un profil autre que le défaut adapté à Windows et lier les agents de ces machines à ce profil.


==Adaptation des policies==
Les principales modifications à effectuer concerne le nom des fichiers de configuration à analyser. La syntaxe YAML est facilement compréhensible. Les modifications sont faciles.


=CIS-CAT=
Ce module est désactivé par défaut sur le manager et sur les agents distants. Il fait appel à un logiciel propriétaire tiers.


Quelques exemples:
Voici la configuration du manager dans le fichier "/var/ossec/etc/ossec.conf" et du fichier "/var/ossec/etc/shared/default/agent.conf" transmis aux agents distants:
* Le fichier "cis_mysql5-6_community.yml" est adapté à MySql or nous utilisons MariaDB. Les fichiers de configuration sont similaires mais leurs noms et le répertoire sont différents.
* Nous avons ajouté un second service SSH spécial pour les sauvegardes avec un fichier de configuration spécifique; ce second fichier doit être ajouté.
* Les fichiers de configurations du service WEB Apache, on été découpés et organisés dans des répertoires par nom de domaine et protocoles pour une question de lisibilité. Le dossier contenant les sources des sites WEB a été déplacé pour une question de place et n'est plus dans le répertoire "/var/www".
 
 
Enfin les fichiers de règles concernant un OS et une distribution spécifique contiennent des vérifications sur ces deux informations. Nous utilisons la distribution de Linux Fedora (versions 36 et 37) appartenant à l'ensemble des distributions sous l'égide de RedHat. Or les fichiers "cis_rhel8_linux.yml" et "cis_rhel9_linux.yml" n'acceptent pas Fedora. Nous allons donc ajouter deux règles.
 
Sous la section "requirements" et la sous-section "rules" du fichier "cis_rhel8_linux.yml", nous avons quelques règles qui nous serviront de base.
 
Voici le contenu de cette section:
----
----
requirements:
   <wodle name="cis-cat">
   title: "Check RHEL8 family platform"
     <disabled>yes</disabled>
  description: "Requirements for running the policy against RHEL 8 family."
  </wodle>
  condition: any
  rules:
    - 'f:/etc/redhat-release -> r:^Red Hat Enterprise Linux && r:release 8'
    - 'f:/etc/redhat-release -> r:^Cloud && r:release 8'
     - 'f:/etc/redhat-release -> r:^Oracle && r:release 8'
    - 'f:/etc/redhat-release -> r:^Better && r:release 8'
    - 'f:/etc/redhat-release -> r:^OpenVZ && r:release 8'
----
----
Nous ajoutons vers la ligne 31, les deux lignes suivantes précédées d'une ligne de commentaire pour repérer facilement les modifications apportées:
----
# ADB
    - 'f:/etc/redhat-release -> r:^Fedora && r:release 36'
    - 'f:/etc/redhat-release -> r:^Fedora && r:release 37'
----
Ces règles analysent le fichier ("f") "/etc/redhat-release".
Par exemple, le contenu de ce fichier sous Fedora 37 est:
----
Fedora release 37 (Thirty Seven)
----
Ce fichier doit commencer par le mot "Fedora" relatif à la distribution et doit contenir "release 36" ou "release 37" pour les versions actuellement présentes. Les autres règles peuvent être mises en commentaire.
==Vérification==
Pour une exécution rapide pour test, modifiez dans le fichier de configuration la ligne "<scan_on_start>yes</scan_on_start>" et redémarrons le service.
En premier lieu, suivez l'exécution du module "SCA" dans le fichier journal "/var/ossec/logs/ossec.log". Repérez toute erreur et y remédier. Voici un extrait du journal:
----
2022/11/21 16:35:39 sca: INFO: Module started.
2022/11/21 16:35:39 sca: INFO: Policy '/var/ossec/ruleset/sca/cis_rhel8_linux.yml' disabled by configuration.
2022/11/21 16:35:39 sca: INFO: Loaded policy '/var/ossec/etc/shared/cis_apache_24.yml'
2022/11/21 16:35:39 sca: INFO: Loaded policy '/var/ossec/etc/shared/sca_unix_audit.yml'
2022/11/21 16:35:39 sca: INFO: Loaded policy '/var/ossec/etc/shared/cis_rhel8_linux.yml'
2022/11/21 16:35:39 sca: INFO: Loaded policy '/var/ossec/etc/shared/cis_rhel9_linux.yml'
2022/11/21 16:35:39 sca: INFO: Loaded policy '/var/ossec/etc/shared/cis_mysql5-6_community.yml'
2022/11/21 16:35:39 sca: INFO: Loaded policy '/var/ossec/etc/shared/web_vulnerabilities.yml'
2022/11/22 04:35:39 sca: INFO: Starting Security Configuration Assessment scan.
2022/11/22 04:35:39 sca: INFO: Starting evaluation of policy: '/var/ossec/etc/shared/cis_apache_24.yml'
2022/11/22 04:35:43 sca: INFO: Evaluation finished for policy '/var/ossec/etc/shared/cis_apache_24.yml'
2022/11/22 04:35:43 sca: INFO: Starting evaluation of policy: '/var/ossec/etc/shared/sca_unix_audit.yml'
2022/11/22 04:35:46 sca: INFO: Evaluation finished for policy '/var/ossec/etc/shared/sca_unix_audit.yml'
2022/11/22 04:35:46 sca: INFO: Starting evaluation of policy: '/var/ossec/etc/shared/cis_rhel8_linux.yml'
2022/11/22 04:38:26 sca: INFO: Evaluation finished for policy '/var/ossec/etc/shared/cis_rhel8_linux.yml'
2022/11/22 04:38:27 sca: INFO: Starting evaluation of policy: '/var/ossec/etc/shared/cis_rhel9_linux.yml'
2022/11/22 04:39:53 sca: INFO: Evaluation finished for policy '/var/ossec/etc/shared/cis_rhel9_linux.yml'
2022/11/22 04:40:02 sca: INFO: Starting evaluation of policy: '/var/ossec/etc/shared/cis_mysql5-6_community.yml'
2022/11/22 04:40:05 sca: INFO: Evaluation finished for policy '/var/ossec/etc/shared/cis_mysql5-6_community.yml'
2022/11/22 04:40:05 sca: INFO: Starting evaluation of policy: '/var/ossec/etc/shared/web_vulnerabilities.yml'
2022/11/22 04:40:30 sca: INFO: Evaluation finished for policy '/var/ossec/etc/shared/web_vulnerabilities.yml'
2022/11/22 04:40:30 sca: INFO: Security Configuration Assessment scan finished. Duration: 291 seconds.
----
==Résultats==
Ensuite si vous avez activé la réception de mails, vous devrez recevoir un rapport succinct par analyse au format JSON.
Ces rapports sont aussi centralisés sur la machine manager dans les journaux d'alertes. Le fichier courant est "/var/ossec/logs/alerts/alerts.json". Ceci pour autant que les niveaux d'alerte soient supérieurs ou égaux à ceux définis dans le fichier de configuration entre les balises <alerts> et </alerts> comme vu précédemment.
Si vous avez installé le module WUI de Wazuh que nous verrons dans un autre article, vous pouvez y voir le détail. Il faut choisir un agent. Dans le menu en haut à gauche, on clique sur "WAZUH" et en dessous sur "Agents". On clique ensuite sur l'agent désiré dans la liste qui apparaît. Enfin dans l'écran qui s'ouvre, on clique sur "SCA" dans le menu du haut pour avoir une vue d'ensemble des résultats. Le résultat détaillé de chaque analyse est disponible en cliquant sur l'analyse souhaitée.
Malheureusement cet interface WEB ne reprend que les agents distants et non l'agent local de la machine manager.
Il est possible d'avoir ces détails pour l'agent local de la machine manager en effectuant une requête à l'API de WAZUH sur la machine manager; on obtient une sortie au format JSON. Nous verrons l'utilisation de l'API dans un autre article.
Voici un script qui récupère au format JSON le résultat de l'analyse de l'audit Unix (fichier "sca_unix_audit.yml"). Le nom de l'entrée se retrouve dans ce fichier sous la section "policy", c'est la valeur de la variable "id". Ici "unix_audit".
----
#!/bin/bash
TOKEN=$(curl -u wazuh:wazuh -k -X GET <nowiki>"https://localhost:55000/security/user/authenticate?raw=true"</nowiki>)
curl -k -X GET <nowiki>"https://localhost:55000/sca/000/checks/unix_audit"</nowiki> -H "Authorization: Bearer $TOKEN" | python -m json.tool
curl -k -X GET <nowiki>"https://localhost:55000/sca/001/checks/unix_audit?result=failed"</nowiki> -H "Authorization: Bearer $TOKEN" | python -m json.tool
----
Pour rappel, la seconde ligne sert à s'authentifier à l'API via le paramètre "-u" en donnant le couple nom d'utilisateur suivi du mot de passe séparés par un double point. A l'installation cet utilisateur est "wazuh" et son mot de passe est "wazuh"; il est crucial et évident de changer ce mot de passe pour une question de sécurité basique. On récupère un jeton pour cette session dans la variable "TOKEN" qui est utilisé pour les requêtes qui suivent.
La requête suivante demande tous les résultats pour l'agent locale qui porte toujours le n° "000". La dernière ne sélectionne que les résultats qui ne sont pas passés ("result=failed") pour l'agent distant ayant le n° "001". Le résultat s'affiche sur une ligne; on le fait passer dans une fonction de "python" afin d'obtenir une version incrémentée, plus lisible.
Notons qu'il faut regarder ces résultats avec prudence. Fedora installe les versions des logiciels les plus récents et certains paramètres analysés sont obsolètes. En outre certains logiciels sont des forks qui ont évolués plus rapidement et dont certains paramètres ont disparu.





Dernière version du 14 juillet 2024 à 11:51


retour à Wazuh: HIDS


But

Jusqu'ici nous avons traité de l'aspect des actions immédiates à toute attaque. Wazuh dispose de divers autres modules ayant une action préventive. Ils tentent de repérer des problèmes potentiels de sécurité afin que nous puissions combler ces trous de sécurité.


ROOTCHECK

Le module a pour tâche de repérer divers malwares. Il joue un rôle semblable au logiciel "Rkhunter" vu dans un autre article.


SYSCHECK

Ce module repère tout changement de taille et de contenu d'une vaste sélection de fichiers du système. Il joue un rôle semblable au logiciel "Rkhunter" vu dans un autre article.


SCA

Ce module a pour but d'analyser la configuration du système et de divers services au terme duquel un rapport est généré. Il se base sur des fichiers de contrôles en se basant sur diverses règles. On peut en créer soi-même mais quelques uns sont fournis pour divers systèmes ou logiciels phares. Il joue un rôle semblable au logiciel "Lynis" vu dans un autre article.


SYSCOLLECTOR

Ce module récolte les informations globales du système comme les logiciels installés, le matériel présent, les interfaces réseaux, les ports réseaux, les processus. Il est actif sur tous les agents local et distants. Ces informations sont centralisées auprès de la machine manager. Elles y seront analysées par le module VULNERABILITY-DETECTOR.


VULNERABILITY-DETECTEUR

Sur la machine manager, les informations récoltées récoltées et reçues par le module SYSCOLLECTOR, sont analysées afin d'y repérer des risques d'attaques.


VULNERABILITY-DETECTOR

Dans la nouvelle version, cette option a été revue et renommée VULNERABILITY-DETECTEUR et n'est donc plus disponible sous ce nom.


OSQUERY

Ce module est désactivé par défaut sur le manager et sur les agents distants. Il fait appel à un logiciel tiers.

Voici la configuration du manager dans le fichier "/var/ossec/etc/ossec.conf" et du fichier "/var/ossec/etc/shared/default/agent.conf" transmis aux agents distants:


 <wodle name="osquery">
   <disabled>yes</disabled>
 </wodle>


CIS-CAT

Ce module est désactivé par défaut sur le manager et sur les agents distants. Il fait appel à un logiciel propriétaire tiers.

Voici la configuration du manager dans le fichier "/var/ossec/etc/ossec.conf" et du fichier "/var/ossec/etc/shared/default/agent.conf" transmis aux agents distants:


 <wodle name="cis-cat">
   <disabled>yes</disabled>
 </wodle>




retour à Wazuh: HIDS