« LINUX:Wazuh-WUI » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
(12 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 51 : | Ligne 51 : | ||
Anciennement on devait le télécharger sur le site de Wazuh via les commandes suivantes: | Anciennement on devait le télécharger sur le site de Wazuh via les commandes suivantes: | ||
curl -sO <nowiki>https://packages.wazuh.com/4. | curl -sO <nowiki>https://packages.wazuh.com/4.8/wazuh-certs-tool.sh</nowiki> | ||
curl -sO <nowiki>https://packages.wazuh.com/4. | curl -sO <nowiki>https://packages.wazuh.com/4.8/config.yml</nowiki> | ||
Actuellement on est à la version 4. | Actuellement on est à la version 4.8 de Wazuh. | ||
On le rend exécutable: | On le rend exécutable: | ||
Ligne 156 : | Ligne 156 : | ||
Ce module ne vient pas préconfiguré pour Wazuh. Il faut télécharger plusieurs fichiers et vérifier leurs droits d'accès. | Ce module ne vient pas préconfiguré pour Wazuh. Il faut télécharger plusieurs fichiers et vérifier leurs droits d'accès. | ||
Les commandes suivantes téléchargent deux fichiers de configuration dans le répertoire: "/etc/filebeat". Ces téléchargements sont pour la version 4. | Les commandes suivantes téléchargent deux fichiers de configuration dans le répertoire: "/etc/filebeat". Ces téléchargements sont pour la version 4.8 actuelle de Wazuh: | ||
curl -so /etc/filebeat/wazuh-template.json <nowiki>https://raw.githubusercontent.com/wazuh/wazuh/ | curl -so /etc/filebeat/wazuh-template.json <nowiki>https://raw.githubusercontent.com/wazuh/wazuh/v4.8.0/extensions/elasticsearch/7.x/wazuh-template.json</nowiki> | ||
curl -so /etc/filebeat/filebeat.yml <nowiki>https://packages.wazuh.com/4. | curl -so /etc/filebeat/filebeat.yml <nowiki>https://packages.wazuh.com/4.8/tpl/wazuh/filebeat/filebeat.yml</nowiki> | ||
chmod 644 /etc/filebeat/wazuh-template.json | chmod 644 /etc/filebeat/wazuh-template.json | ||
chmod 644 /etc/filebeat/filebeat.yml | chmod 644 /etc/filebeat/filebeat.yml | ||
Ligne 169 : | Ligne 169 : | ||
La commande qui suit, télécharge toute une arborescence qui ajoute les informations nécessaires pour l'envoi des alertes au service "wazuh-indexer.service": | La commande qui suit, télécharge toute une arborescence qui ajoute les informations nécessaires pour l'envoi des alertes au service "wazuh-indexer.service": | ||
---- | ---- | ||
curl -s <nowiki>https://packages.wazuh.com/4.x/filebeat/wazuh-filebeat-0. | curl -s <nowiki>https://packages.wazuh.com/4.x/filebeat/wazuh-filebeat-0.4.tar.gz</nowiki> | tar -xvz -C /usr/share/filebeat/module | ||
---- | ---- | ||
Dans cette partie ajoutée, j'ai ajouté une ligne au fichier '''"/usr/share/filebeat/module/wazuh/alerts/ manifest.yml"'''. Il défini quel fichier, ce service doit traiter. Par défaut, c'est le fichier des alertes "/var/ossec/logs/alerts/alerts.json". J'ai ajouté le fichier '''"/var/ossec/logs/alerts/alertsold.json"'''. | Dans cette partie ajoutée, j'ai ajouté une ligne au fichier '''"/usr/share/filebeat/module/wazuh/alerts/manifest.yml"'''. Il défini quel fichier, ce service doit traiter. Par défaut, c'est le fichier des alertes "/var/ossec/logs/alerts/alerts.json". J'ai ajouté le fichier '''"/var/ossec/logs/alerts/alertsold.json"'''. | ||
Voici le contenu de ce fichier de configuration: | Voici le contenu de ce fichier de configuration: | ||
Ligne 200 : | Ligne 200 : | ||
'''Attention''', ne chargez pas trop de mois, 6 par exemple. Par défaut, Wazuh-Indexer ne peut prendre en compte que 1000 segments d'indexations ("shards"). Nous verrons ce problème lors de la maintenance. | '''Attention''', ne chargez pas trop de mois, 6 par exemple. Par défaut, Wazuh-Indexer ne peut prendre en compte que 1000 segments d'indexations ("shards"). Nous verrons ce problème lors de la maintenance. | ||
Autre précaution importante: Si vous | Autre précaution importante: Si vous chargez des anciennes données par ce moyen, ce fichier alternatif ne doit pas contenir de données déjà chargées; elles seront en double. | ||
Ligne 246 : | Ligne 246 : | ||
= | ==Wazuh-Manager== | ||
Une section a été récemment modifiée. Dans le fichier "/var/ossec/etc/ossec.conf", la balise "<vulnerability-detector>" a été modifiée et fortement réduite. | |||
Elle se limite aux lignes suivante: | |||
Dans le fichier | |||
---- | ---- | ||
<vulnerability-detection> | |||
<enabled>yes</enabled> | |||
<index-status>yes</index-status> | |||
<feed-update-interval>60m</feed-update-interval> | |||
</vulnerability-detection> | |||
---- | ---- | ||
Une autre section est venue récemment s'ajouter en relation avec Wazuh-Indexer et FileBeat: | |||
---- | ---- | ||
<indexer> | |||
<enabled>yes</enabled> | |||
<hosts> | |||
<nowiki><host>https://</nowiki>'''127.0.0.1:9200'''<nowiki></host></nowiki> | |||
</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> | |||
---- | ---- | ||
On y a modifié la référence d'accès au service Wazuh-Indexer vers l'adresse IP "127.0.0.1". | |||
On doit ensuite enregistrer le nom d'utilisateur et le mot de passe d'accès à Wazuh-Indexer dans des fichiers sécurisé de Wazuh-Manager. Par défaut ils sont respectivement "admin" et "admin". Il est préférable que le mot de passe "admin" soit changé. On le verra par la suite. | |||
/var/ossec/bin/wazuh-keystore -f indexer -k username -v admin | |||
/var/ossec/bin/wazuh-keystore -f indexer -k password -v admin | |||
---- | |||
=Configurer le mur de feu ou FireWall= | =Configurer le mur de feu ou FireWall= | ||
La majorité du trafic réseau se fait en local et donc ne pose pas de problème avec le Firewall de la machine qui héberge tous ces services. Seul le port TCP 444 a besoin d'être ouvert pour que nous puissions l'utiliser. | La majorité du trafic réseau se fait en local et donc ne pose pas de problème avec le Firewall de la machine qui héberge tous ces services. Seul le port TCP 444 a besoin d'être ouvert pour que nous puissions l'utiliser. | ||
Ligne 441 : | Ligne 426 : | ||
<nowiki>https://192.168.1.110:444</nowiki> | <nowiki>https://192.168.1.110:444</nowiki> | ||
Dans l'écran de connexion, le nom d'utilisateur est "admin" et son mot de passe est "admin". | Dans l'écran de connexion, le nom d'utilisateur est "admin" et son mot de passe est "admin". | ||
=Configurations avancées de Wazuh-Dashboard= | |||
Nous présentons ici quelques configurations alternatives de Wazuh-Dashboard. | |||
==Certificats personnalisés== | |||
Dans le fichier '''"/etc/wazuh-dashboard/opensearch_dashboards.yml"''', les trois lignes suivantes définissent le nécessaire pour une connexion sécurisée via le port TCP 444 entre le serveur Wazuh-Dashboard et le browser de votre PC. Ce sont une clé privée et un certificat publique auto signé au nom de la société Wazuh: | |||
---- | |||
server.ssl.enabled: true | |||
server.ssl.key: "/etc/wazuh-dashboard/certs/dashboard-key.pem" | |||
server.ssl.certificate: "/etc/wazuh-dashboard/certs/dashboard.pem" | |||
---- | |||
Il peut être intéressant que ce certificat soit au nom de votre serveur ou de votre société. Pour cela je vous renvoie aux articles traitant des [[LINUX:Certificats|Certificats]]. | |||
Le point [[LINUX:Certificat auto signé|Certificat auto signé]] est semblable à celui existant. Mais nous avons un certificat publique au nom du serveur, "serverdb.home.dom" selon l'exemple. | |||
Selon l'exemple de ce chapitre, les trois lignes deviennent: | |||
---- | |||
server.ssl.enabled: true | |||
server.ssl.key: '''"/etc/pki/tls/private/localhost.key"''' | |||
server.ssl.certificate: '''"/etc/pki/tls/certs/localhost.crt"''' | |||
---- | |||
* Le fichier "localhost.key" est la clé privée du serveur. | |||
* Le fichier "localhost.crt" est le certificat publique auto signé. | |||
Si nous voulons un certificat publique non auto signé au nom du serveur, nous nous reportons au point [[LINUX:Création d'une CA privée (V1)|Création d'une CA privée (V1)]]. Dans ce cas, le certificat publique est validé par notre propre autorité de certification (CA) au nom de notre serveur. | |||
Selon l'exemple de ce chapitre, les trois lignes deviennent: | |||
---- | |||
server.ssl.enabled: true | |||
server.ssl.key: '''"/etc/pki/home/private/localhost.key"''' | |||
server.ssl.certificate: '''"/etc/pki/home/certs/serverdb.home.pem"''' | |||
---- | |||
* Le fichier "localhost.key" est la clé privée du serveur. | |||
* Le fichier "serverdb.home.pem" est une chaine contenant deux certificats publiques: le certificat publique de notre autorité de certification (CA) et le certificat publique du serveur validé par notre autorité de certificat. | |||
Ces fichiers sont les mêmes que l'on doit utiliser pour le serveur Web Apache: variables "SSLCertificateKeyFile" et "SSLCertificateFile". | |||
Pour une question de sécurité, je ne recommande pas que ce serveur soit accessible à partir d'Internet. Mais le principe est le même. | |||
Si on utilise des certificats officiels Let's Encrypt, nous utilisons: | |||
* la clé privée du serveur "/etc/letsencrypt/live/<DNS publique de votre serveur>/privkey.pem" | |||
* la chaîne de certificats publiques "/etc/letsencrypt/live/<DNS publique de votre serveur>/fullchain.pem" contenant trois certificats publiques (celui du serveur, celui de la CA et l'intermédiaire). | |||
Note: Soyez attentif aux privilèges. Le service "wazuh-dashboard.service" est lancé sous la responsabilité de l'utilisateur Unix "wazuh-dashboard". Il doit avoir accès en lecture à ces clé et certificats. | |||
==Wazuh-Dashboard derrière le proxy d'Apache== | |||
Dans notre configuration de Wazuh-Dashboad, nous sommes obligés de spécifier le port TCP 444 dans l'URL d'accès car le port TCP 443 classique pour le protocole HTTPS est utilisé par le service Apache. | |||
Nous allons intercepter le trafic du port TCP 444 pour le récupérer dans Apache et le transmettre au client via le port TCP 443 (HTTPS). Le changement de configuration se fait dans Wazuh-Dashboard et dans Apache. | |||
Du côté de Wazuh-Dashboard, les changements se font dans le fichier de configuration '''"/etc/wazuh-dashboard/opensearch_dashboards.yml"''': | |||
---- | |||
'''server.host: 127.0.0.1''' | |||
'''server.port: 444''' | |||
opensearch.hosts: <nowiki>https://localhost:9200</nowiki> | |||
opensearch.ssl.verificationMode: certificate | |||
#opensearch.username: | |||
#opensearch.password: | |||
opensearch.requestHeadersWhitelist: ["securitytenant","Authorization"] | |||
opensearch_security.multitenancy.enabled: false | |||
opensearch_security.readonly_mode.roles: ["kibana_read_only"] | |||
'''server.ssl.enabled: false''' | |||
'''server.basePath: "/wazuh"''' | |||
'''server.rewriteBasePath: true''' | |||
opensearch.ssl.certificateAuthorities: ["/etc/wazuh-dashboard/certs/root-ca.pem"] | |||
uiSettings.overrides.defaultRoute: /app/wazuh | |||
---- | |||
On garde le port TCP 444 ("server.port: 444") mais comme le traffic se fait entre Wazuh-Dashboard et Apache sur la même machine, on limite l'interface au "localhost" ("server.host: 127.0.0.1"). Ce transit interne se fera non crypté ("server.ssl.enabled: false") et donc on n'a pas besoin des clé et certificats. Le cryptage se fera sous Apache avec les certificats du serveur. | |||
Sous Apache, nous avons déjà une arborescence et une racine; il faut donc réécrire la sortie vers un dossier non existant autre que la racine ("server.rewriteBasePath: true"). Nous l'avons nommé "wazuh" ("server.basePath: "/wazuh" "). L'URL d'accès devient dès lors: <nowiki>http://localhost:444/wazuh</nowiki> | |||
Après le lancement du service "wazuh-dashboard.service", le port d'écoute sera ouvert mais aura changé. Quand on lancera la commande: | |||
netstat -ntl | |||
Nous aurons la ligne qui nous concerne, suivante: | |||
---- | |||
tcp 0 127 0.0.0.1:444 0.0.0.0:* LISTEN | |||
---- | |||
Evidemment il n'est plus nécessaire d'ouvrir ce port dans le FireWall. | |||
Du côté d'Apache, il faut s'assurer que les modules "proxy" sont actifs; sous Fedora, c'est le cas par défaut. Il faut repérer le fichier lié au cryptage SSL. Ce fichier est par défaut '''"/etc/httpd/conf.d/ssl.conf"'''. Voici un extrait, le plus important pour notre cas: | |||
---- | |||
Listen 443 https | |||
<VirtualHost _default_:443> | |||
SSLEngine on | |||
SSLCertificateKeyFile /etc/pki/home/private/localhost.key | |||
SSLCertificateFile /etc/pki/home/certs/serverdb.home.pem | |||
| |||
'''ProxyPreserveHost on''' | |||
'''ProxyRequests on''' | |||
'''ProxyPass /wazuh <nowiki>http://localhost:444/wazuh</nowiki>''' | |||
'''ProxyPassReverse /wazuh <nowiki>http://localhost:444/wazuh</nowiki>''' | |||
</VirtualHost> | |||
---- | |||
On retrouve les clé et certificats utilisés dans le chapitre précédent. Le texte en gras concerne la configuration Proxy. On retrouve l'URL d'accès à Wazuh-Dashboard qui renvoie vers le dossier "/wazuh" d'Apache. L'URL d'Apache pour accéder au WUI de Wazuh devient: <nowiki>https://serverdb.home.dom/wazuh</nowiki> pour le serveur portant le nom de "serverdb.home.dom". Bien sûr l'URL <nowiki>https://serverdb.home.dom:444/</nowiki> n'est plus d'actualité. | |||
=Utilisateurs= | =Utilisateurs= | ||
Lors de l'installation, de nombreux utilisateurs sont créés pour Wazuh-Indexer. Nous en avons rencontré un, le plus connu et utilisé par le logiciel Filebeat: "admin. | Lors de l'installation, de nombreux utilisateurs sont créés pour Wazuh-Indexer. Nous en avons rencontré un, le plus connu et utilisé par le logiciel Filebeat: "admin". | ||