Installation Wazuh sur Debian

 

Mettre à jour la machine et installer les paquets : curl, gnupg, apt-transport-https et net-tools

apt update && apt upgrade -y && apt install curl gnupg apt-transport-https net-tools -y

Récupérer la clé GPG pour accéder aux dépôts Wazuh

curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | gpg --no-default-keyring --keyring gnupg-ring:/usr/share/keyrings/wazuh.gpg --import && chmod 644 /usr/share/keyrings/wazuh.gpg

Ajout du dépôt Wazuh

echo "deb [signed-by=/usr/share/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/ stable main" | tee -a /etc/apt/sources.list.d/wazuh.list

Téléchargement du script wazuh-certs-tool.sh et du fichier de configuration config.yml

curl -sO https://packages.wazuh.com/4.10/wazuh-certs-tool.sh && curl -sO https://packages.wazuh.com/4.10/config.yml

Modification du fichier ./config.yml

PS: Nous pouvons laisser par défaut les « name » mais il faut obligatoirement changer les « ip »

nodes :
  # Wazuh indexer nodes
  indexer:
    - name: node-1
      ip: "<indexer-node-ip>"
    #- name: node-2
    #  ip: "<indexer-node-ip>"
    #- name: node-3
    #  ip: "<indexer-node-ip>"
    
# Wazuh server nodes
# If there is more than one Wazuh server
# node, each one must have a node_type
server:
  - name: wazuh-1
    ip: "<wazuh-manager-ip>"
  #  node_type: master
  #- name: wazuh-1
  #  ip: "<wazuh-manager-ip>"
  #  node_type: worker
  #- name: wazuh-1
  #  ip: "<wazuh-manager-ip>"
  #  node_type: worker
  
  # Wazuh dashboard nodes
  dashboard:
    - name: dashboard
      ip: "<dashboard-node-ip>"

Exécuter le script wazuh-certs-tool.sh pour créer un dossier wazuh-certificates dans le répertoire courant et les certificats par défaut (admin.pem, admin-key.pem, root-ca.pem, etc…) (clé de chiffrement)

bash ./wazuh-certs-tool.sh -A
tar -cvf ./wazuh-certificates.tar -C ./wazuh-certificates/ .
rm -rf ./wazuh-certificates

Installation des paquets, Wazuh-indexer, Wazuh-manager et Wazuh-dashboard

apt install wazuh-indexer wazuh-manager wazuh-dashboard
Wazuh-Indexer

Modifier le fichier de configuration /etc/wazuh-indexer/opensearch.yml pour paramétrer l’indexer

network.host: "{Indexer IP}"
node.name: "node-1"
cluster.initial_master_nodes:
- "node-1"
#- "node-2"
#- "node-3"
cluster.name: "wazuh-cluster"
#discovery.seed_hosts:
#  - "node-1-ip"
#  - "node-2-ip"
#  - "node-3-ip"
node.max_local_storage_nodes: "3"
path.data: /var/lib/wazuh-indexer
path.logs: /var/log/wazuh-indexer

plugins.security.ssl.http.pemcert_filepath: /etc/wazuh-indexer/certs/indexer.pem
plugins.security.ssl.http.pemkey_filepath: /etc/wazuh-indexer/certs/indexer-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: /etc/wazuh-indexer/certs/root-ca.pem
plugins.security.ssl.transport.pemcert_filepath: /etc/wazuh-indexer/certs/indexer.pem
plugins.security.ssl.transport.pemkey_filepath: /etc/wazuh-indexer/certs/indexer-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: /etc/wazuh-indexer/certs/root-ca.pem
plugins.security.ssl.http.enabled: true
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.ssl.transport.resolve_hostname: false

plugins.security.authcz.admin_dn:
- "CN=admin,OU=Wazuh,O=Wazuh,L=California,C=US"
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.nodes_dn:
- "CN=node-1,OU=Wazuh,O=Wazuh,L=California,C=US"
#- "CN=node-2,OU=Wazuh,O=Wazuh,L=California,C=US"
#- "CN=node-3,OU=Wazuh,O=Wazuh,L=California,C=US"
plugins.security.restapi.roles_enabled:
- "all_access"
- "security_rest_api_access"

plugins.security.system_indices.enabled: true
plugins.security.system_indices.indices: [".plugins-ml-model", ".plugins-ml-task", ".opendistro-alerting-config", ".opendistro-alerting-alert*",

### Option to allow Filebeat-oss 7.10.2 to work ###
compatibility.override_main_response_version: true

PS : Changer l’IP de l’indexer et si le name de l’indexer est différent dans ./config.yml, alors changer à tous les endroits où est mentionné « node-1 » par le nom donné

À changer :

Tous les endroits où est mentionné node-1 (si vous avez changé le name de l’Indexer dans ./config.yml):

  • node.name
  • cluster.initial_master_nodes
  • plugins.security.nodes_dn

L’adresse IP

  • Network.host

Déployez les certificats de l’Indexer

NODE_NAME=node-1
mkdir /etc/wazuh-indexer/certs
tar -xf ./wazuh-certificates.tar -C /etc/wazuh-indexer/certs/ ./$NODE_NAME.pem ./$NODE_NAME-key.pem ./admin.pem ./admin-key.pem ./root-ca.pem
mv -n /etc/wazuh-indexer/certs/$NODE_NAME.pem /etc/wazuh-indexer/certs/indexer.pem
mv -n /etc/wazuh-indexer/certs/$NODE_NAME-key.pem /etc/wazuh-indexer/certs/indexer-key.pem
chmod 500 /etc/wazuh-indexer/certs
chmod 400 /etc/wazuh-indexer/certs/*
chown -R wazuh-indexer:wazuh-indexer /etc/wazuh-indexer/certs

PS: Remplacer node-1 par le nom de votre Indexer si vous l’avez changé dans ./config.yml

Activation et démarrage du service wazuh-indexer

systemctl daemon-reload
systemctl enable wazuh-indexer
systemctl start wazuh-indexer

Initiation du cluster et des certificats SSL/TLS

/usr/share/wazuh-indexer/bin/indexer-security-init.sh

Ce script configure les paramètres de sécurité de l’indexer Wazuh, notamment en activant l’authentification et le contrôle d’accès :

  • Génération de certificats
  • Configuration de l’authentification
  • Mise en place du contrôle d’accès
  • Démarrage des services

Pour tester le cluster, on peut utiliser cette commande :

curl -k -u admin:admin https://192.168.1.1:9200

ou celle-ci

curl -k -u admin:admin https://192.168.1.1:9200/_cat/nodes?v
Wazuh-Manager

Modification de /var/ossec/etc/ossec.conf

<!--
Wazuh - Manager - Default configuration for debian 12
More info at: https://documentation.wazuh.com
Mailing list: https://groups.google.com/forum/#!forum/wazuh
-->

<ossec_config>
  <global>
    <jsonout_output>yes</jsonout_output>
    <alerts_log>yes</alerts_log>
    <logall>yes</logall>
    <logall_json>yes</logall_json>
    <email_notification>no</email_notification>
    <smtp_server>smtp.example.wazuh.com</smtp_server>
    <email_from>wazuh@example.wazuh.com</email_from>
    <email_to>recipient@example.wazuh.com</email_to>
    <email_maxperhour>12</email_maxperhour>
    <email_log_source>alerts.log</email_log_source>
    <agents_disconnection_time>10m</agents_disconnection_time>
    <agents_disconnection_alert_time>0</agents_disconnection_alert_time>
    <update_check>yes</update_check>
  </global>

Comme moi, activer ses paramètres en y mettant « yes« , cela permettra de recevoir plusieurs autres types de logs, compatibles syslog:

  • jsonout_output (yes)
  • alerts_log (yes)
  • logall (yes)
  • logalljson (yes)
<remote>
  <connection>secure</connection>
  <port>1514</port>
  <protocol>tcp</protocol>
  <queue_size>131072</queue_size>
</remote>
<!-- Configuration des inputs TCP et UDP -->
<remote>
  <connection>syslog</connection>
  <port>514</port>
  <protocol>tcp</protocol>
  <allowed-ips>0.0.0.0/0</allowed-ips>
  <local_ip>"{Indexer IP}"</local_ip>
</remote>

<remote>
  <connection>syslog</connection>
  <port>514</port>
  <protocol>udp</protocol>
  <allowed-ips>0.0.0.0/0</allowed-ips>
  <local_ip>"{Indexer IP}"</local_ip>
</remote>

<!-- Configuration des logs -->
<logging>
  <log_format>syslog</log_format>
  <prefix>$(hostname) </prefix>
</logging>

Mettre ceci à la suite de la balise <remote> (premier block de code), permet d’activer la réception des données syslog depuis des appareils réseaux

<indexer>
  <enabled>yes</enabled>
  <hosts>
    <host>https://{Indexer IP}:9200</host>
  </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>

Activation et démarrage du service wazuh-manager

systemctl daemon-reload
systemctl enable wazuh-manager
systemctl start wazuh-manager
systemctl status wazuh-manager
Filebeat

Installation du paquet Filebeat

apt install filebeat -y

Téléchargement du fichier de configuration par défaut de Filebeat pour fonctionner avec Wazuh

curl -so /etc/filebeat/filebeat.yml https://packages.wazuh.com/4.10/tpl/wazuh/filebeat/filebeat.yml
# Wazuh - Filebeat configuration file
output.elasticsearch:
  hosts: ["{Mettre l'IP de l'Indexer}:9200"]
  protocol: https
  username: ${username}
  password: ${password}
  ssl.certificate_authorities:
  - /etc/filebeat/certs/root-ca.pem
  ssl.certificate: "/etc/filebeat/certs/filebeat.pem"
  ssl.key: "/etc/filebeat/certs/filebeat-key.pem"
setup.template.json.enabled: true
setup.template.json.path: '/etc/filebeat/wazuh-template.json'
setup.template.json.name: 'wazuh'
setup.ilm.overwrite: true
setup.ilm.enabled: false

filebeat.modules:
  - module: wazuh
    alerts:
      enabled: true
    archives:
      enabled: true

logging.level: info
logging.to_files: true
logging.files:
  path: /var/log/filebeat
  name: filebeat
  keepfiles: 7
  permissions: 0644

logging.metrics.enabled: false

seccomp:
  default_action: allow
  syscalls:
  - action: allow
    names:
    - rseq

PS: Ici  j’active les archives, ainsi j’active la possibilité d’afficher les archives et d’afficher les logs venant d’appareils compatibles au syslog, sur mon dashboard Wazuh (Optionnel). Et enfin, je change l’IP de l’hosts dans output.elasticsearch. Enlever les crochets ({})

Créer un filebeat keystore (pour stocker les identifiants de connexion)

filebeat keystore create

Renseigner un nom d’utilisateur et un mot de passe (qui te servira à te connecter au dashboard plus tard)

Ajout d’un utilisateur et d’un mot de passe (pour l’exemple l’utilisateur sera admin et le mot de passe sera admin)

echo admin | filebeat keystore add username --stdin --force
echo admin | filebeat keystore add password --stdin --force

Téléchargement d’un template d’alerte pour Wazuh et lui attribuer les droits de lecture

curl -so /etc/filebeat/wazuh-template.json https://raw.githubusercontent.com/wazuh/wazuh/v4.10.0/extensions/elasticsearch/7.x/wazuh-template.json
chmod go+r /etc/filebeat/wazuh-template.json

Installation des modules supplémentaires Filebeat + Extraction de l’archive avec tar

curl -s https://packages.wazuh.com/4.x/filebeat/wazuh-filebeat-0.4.tar.gz | tar -xvz -C /usr/share/filebeat/module

Déploiement des certificats pour Filebeat

NODE_NAME=node-1
mkdir /etc/filebeat/certs
tar -xf ./wazuh-certificates.tar -C /etc/filebeat/certs/ ./$NODE_NAME.pem ./$NODE_NAME-key.pem ./root-ca.pem
mv -n /etc/filebeat/certs/$NODE_NAME.pem /etc/filebeat/certs/filebeat.pem
mv -n /etc/filebeat/certs/$NODE_NAME-key.pem /etc/filebeat/certs/filebeat-key.pem
chmod 500 /etc/filebeat/certs
chmod 400 /etc/filebeat/certs/*
chown -R root:root /etc/filebeat/certs

PS: Renseigner le nom de l’indexer à la place de « node-1« 

Activation et démarrage du service Filebeat

systemctl daemon-reload
systemctl enable filebeat
systemctl start filebeat

Test de la configuration Filebeat

filebeat test output
Wazuh-dashboard

Modification du fichier de configuration du wazuh-dashboard

server.host: 0.0.0.0
server.port: 443
opensearch.hosts: https://{Indexer IP}:9200
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"]
opensearch.ssl.enabled: true
server.ssl.key: "/etc/wazuh-dashboard/certs/dashboard-key.pem"
server.ssl.certificate: "/etc/wazuh-dashboard/certs/dashboard.pem"
server.ssl.certificateAuthorities: ["/etc/wazuh-dashboard/certs/root-ca.pem"]
uiSettings.overrides.defaultRoute: /app/wz-home

Déploiement des certificats du dashboard Wazuh

NODE_NAME=node-1
mkdir /etc/wazuh-dashboard/certs
tar -xf ./wazuh-certificates.tar -C /etc/wazuh-dashboard/certs/ ./$NODE_NAME.pem ./$NODE_NAME-key.pem ./root-ca.pem
mv -n /etc/wazuh-dashboard/certs/$NODE_NAME.pem /etc/wazuh-dashboard/certs/dashboard.pem
mv -n /etc/wazuh-dashboard/certs/$NODE_NAME-key.pem /etc/wazuh-dashboard/certs/dashboard-key.pem
chmod 500 /etc/wazuh-dashboard/certs
chmod 400 /etc/wazuh-dashboard/certs/*
chown -R wazuh-dashboard:wazuh-dashboard /etc/wazuh-dashboard/certs

PS: Renseigner le nom de l’indexer à la place de « node-1« 

Activation et démarrage du service wazuh-dashboard

systemctl daemon-reload
systemctl enable wazuh-dashboard
systemctl start wazuh-dashboard

Modification du fichier /usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml

hosts:
  - default:
      url: https://{Dashboard IP}
      port: 55000
      username: wazuh-wui
      password: wazuh-wui
      run_as: false

SUIVEZ MOI

Retour en haut