Open Distro for Elasticsearch est une distribution open source d'Elasticsearch, un moteur de recherche plein texte très évolutif. Il offre une sécurité avancée, des alertes, une gestion d'index, une analyse approfondie des performances et plusieurs autres fonctionnalités supplémentaires.

Nous allons voir comment installer Elasticsearch dans un cluster à plusieurs nœuds. Pour assurer la résilience en cas d'indisponibilité des nœuds Elasticsearch, il est recommandé d'avoir un nombre impair de nœuds maîtres éligibles.

Nous allons en tenir compte lorsque nous déciderons de la configuration de notre cluster Elasticsearch.

Note:

Les privilèges root sont nécessaires pour exécuter toutes les commandes décrites ci-dessous.

Le processus d'installation d'un cluster sera expliqué en trois parties.

  • La première concerne la configuration du nœud initial, dans laquelle sont générés les certificats SSL qui seront déployés sur les nœuds suivants.
  • La deuxième partie expliquera comment configurer les autres nœuds de la grappe.
  • Enfin, la troisième partie fournit des instructions pour initialiser le cluster Elasticsearch et vérifier que tout fonctionne correctement.

Les instructions suivantes sont destinées à être exécutées sur le premier nœud Elasticsearch à être configuré.

Open Distro for Elasticsearch nécessite l'installation du kit de développement Java et d'autres paquets, dont wget, curl et unzip, qui seront utilisés dans les étapes suivantes.

Installez tous les paquets nécessaires à l'installation :

# export JAVA_HOME=/usr/ && yum install curl unzip wget && yum install java-11-openjdk-devel

Si le JDK 11 n'est pas disponible pour le système d'exploitation utilisé, installez le paquet adoptopenjdk-11-hotspot en utilisant Adopt Open JDK.

Importer la clé GPG

# rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH

Ajout du repository “Wazuh”

# cat > /etc/yum.repos.d/wazuh.repo << EOF
[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
EOF

Installer la version Open Distro for Elasticsearch

# yum install opendistroforelasticsearch

Pour configurer Elasticsearch, téléchargez le fichier suivant /etc/elasticsearch/elasticsearch.yml :

# curl -so /etc/elasticsearch/elasticsearch.yml https://raw.githubusercontent.com/wazuh/wazuh-documentation/4.0/resources/open-distro/elasticsearch/7.x/elasticsearch_cluster_initial_node.yml

Éditez le fichier /etc/elasticsearch/elasticsearch.yml. Par défaut, le modèle pré-configuré comprend 3 nœuds, dans le cas où le nombre de nœuds est différent, des lignes doivent être ajoutées ou supprimées en conséquence :

network.host: <elasticsearch_ip>
node.name: node-1
cluster.name: <elastic_cluster>
cluster.initial_master_nodes:
        - node-1
        - node-2
        - node-3
discovery.seed_hosts:
        - <elasticsearch_ip_node1>
        - <elasticsearch_ip_node2>
        - <elasticsearch_ip_node3>

Selon le type de nœud, certains paramètres peuvent varier d'un nœud à l'autre. Le cluster.initial_master_nodes et le discovery.seed_hosts sont des listes de tous les nœuds maîtres éligibles dans le cluster. Le paramètre node.master : false doit être inclus dans chaque nœud Elasticsearch qui ne sera pas configuré comme maître.

Note:

Les valeurs à remplacer :

  • <elasticsearch_ip> : l'IP de l'hôte. Par exemple : 10.0.0.2.
  • <elastic_cluster> : nom du cluster Elasticsearch. Ex. : production du cluster élastique.
  • <elasticsearch_ip_nodeX> : IP du nœud maître éligible du cluster Elasticsearch. Ex : 10.0.0.3.
  • Les certificats de chaque nœud doivent être spécifiés dans la section opendistro_security.nodes_dn.
  opendistro_security.nodes_dn :
      - CN=node-1,OU=Docu,O=Wazuh,L=Californie,C=US
      - CN=node-2,OU=Docu,O=Wazuh,L=Californie,C=US
      - CN=node-3,OU=Docu,O=Wazuh,L=Californie,C=US
      - CN=<nom_commun>,OU=<unité_opérationnelle>,O=<nom_de_l'organisation>,L=<localité>,C=<code_du_pays></bootnote>

Afin d'utiliser correctement le plugin Wazuh Kibana, il est nécessaire d'ajouter les rôles et les utilisateurs supplémentaires :

# curl -so /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/roles.yml https://raw.githubusercontent.com/wazuh/wazuh-documentation/4.0/resources/open-distro/elasticsearch/roles/roles.yml
 
# curl -so /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/roles_mapping.yml https://raw.githubusercontent.com/wazuh/wazuh-documentation/4.0/resources/open-distro/elasticsearch/roles/roles_mapping.yml
 
# curl -so /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml https://raw.githubusercontent.com/wazuh/wazuh-documentation/4.0/resources/open-distro/elasticsearch/roles/internal_users.yml

Les commandes ci-dessus ajoutent les utilisateurs Wazuh suivants dans Kibana :

Utilisateurs Définition
wazuh_user Est créé pour les utilisateurs qui ont seulement besoin d'un accès en lecture au plugin Wazuh Kibana.
wazuh_admin Est l'utilisateur recommandé pour les utilisateurs qui ont besoin de privilèges administratifs.

Deux rôles supplémentaires sont ajoutés, ces rôles sont chargés de donner les bonnes autorisations aux utilisateurs :

Utilisateurs Définition
wazuh_ui_user Ce rôle permet à wazuh_user de lire les index de Wazuh.
wazuh_ui_admin Ce rôle permet à wazuh_admin d'effectuer des tâches de lecture, d'écriture, de gestion et d'indexation sur les indices Wazuh.

Ces utilisateurs et ces rôles sont conçus pour fonctionner avec le plugin Wazuh Kibana et ils sont protégés de manière à ne pas pouvoir être modifiés à partir de l'interface de Kibana. Pour les modifier ou ajouter de nouveaux utilisateurs ou rôles, le script securityadmin doit être exécuté.

Supprimer les certificats de démonstration.

# rm /etc/elasticsearch/esnode-key.pem /etc/elasticsearch/esnode.pem /etc/elasticsearch/kirk-key.pem /etc/elasticsearch/kirk.pem /etc/elasticsearch/root-ca.pem -f

Générer et déployer les certificats. Déplacez-vous à l'emplacement d'installation et créez le répertoire des certificats.

# mkdir /etc/elasticsearch/certs
# cd /etc/elasticsearch/certs

Téléchargez l'outil TLS hors ligne Search Guard pour créer les certificats :

# curl -so ~/search-guard-tlstool-1.8.zip https://maven.search-guard.com/search-guard-tlstool/1.8/search-guard-tlstool-1.8.zip

Extraire le fichier téléchargé. On suppose qu'il a été téléchargé dans ~/ (home directory) :

# unzip ~/search-guard-tlstool-1.8.zip -d ~/searchguard

Téléchargez le fichier de configuration search-guard.yml.

# curl -so ~/searchguard/search-guard.yml https://raw.githubusercontent.com/wazuh/wazuh-documentation/4.0/resources/open-distro/searchguard/multi-node/search-guard-multi-node.yml

Après avoir téléchargé le fichier de configuration, remplacez les valeurs <elasticsearch_X_IP> et <kibana_ip> par les adresses IP correspondantes dans le fichier ~/searchguard/search-guard.yml.

Il est possible de spécifier plusieurs IP (une entrée par ligne) :

# Nodes certificates
nodes:
  - name: node-1
    dn: CN=node-1,OU=Docu,O=Wazuh,L=California,C=US
    ip:
      - <elasticsearch_1_IP>
  - name: node-2
    dn: CN=node-2,OU=Docu,O=Wazuh,L=California,C=US
    ip:
      - <elasticsearch_2_IP>
  - name: node-3
    dn: CN=node-3,OU=Docu,O=Wazuh,L=California,C=US
    ip:
      - <elasticsearch_3_IP>
  - name: kibana
    dn: CN=kibana,OU=Docu,O=Wazuh,L=California,C=US
    ip:
      - <kibana_ip>

Il devrait y avoir autant de sections filebeat-X que de serveurs Wazuh dans l'installation :

- name: filebeat-1
  dn: CN=filebeat-1,OU=Docu,O=Wazuh,L=California,C=US
- name: filebeat-2
  dn: CN=filebeat-2,OU=Docu,O=Wazuh,L=California,C=US

Exécutez le script Search Guard pour créer les certificats :

~/searchguard/tools/sgtlstool.sh -c ~/searchguard/search-guard.yml -ca -crt -t /etc/elasticsearch/certs/
mv /etc/elasticsearch/certs/node-1.pem /etc/elasticsearch/certs/elasticsearch.pem
mv /etc/elasticsearch/certs/node-1.key /etc/elasticsearch/certs/elasticsearch.key
mv /etc/elasticsearch/certs/node-1_http.pem /etc/elasticsearch/certs/elasticsearch_http.pem
mv /etc/elasticsearch/certs/node-1_http.key /etc/elasticsearch/certs/elasticsearch_http.key

<bootnote warning>

En cas de déploiement ultérieur de certificats, il est fortement recommandé de conserver l'outil TLS de Search Guard et son fichier de configuration search-guard.yml sur le nœud maître.

Compressez tous les fichiers nécessaires pour être déployés sur tous les serveurs du cluster :

# tar -cf /etc/elasticsearch/certs/certs.tar *

Copiez certs.tar dans tous les instances du cluster. Cela peut être fait en utilisant, par exemple, scp.

Supprimez les fichiers inutiles :

# rm /etc/elasticsearch/certs/client-certificates.readme /etc/elasticsearch/certs/elasticsearch_elasticsearch_config_snippet.yml search-guard-tlstool-1.7.zip filebeat* node-* -f

Si Kibana doit être installé dans ce nœud, conservez le fichier des certificats. Sinon, si le fichier a déjà été copié dans toutes les instances du déploiement distribué, supprimez-le pour augmenter la sécurité rm -f certs.tar.

Activez et démarrez le service Elasticsearch :

# systemctl daemon-reload
# systemctl enable elasticsearch
# systemctl start elasticsearch

Les étapes suivantes doivent être exécutées dans chacun des nœuds suivants du cluster Elasticsearch.

Open Distro for Elasticsearch nécessite l'installation du kit de développement Java et d'autres paquets, dont wget, curl et unzip, qui seront utilisés dans les étapes suivantes.

Installez tous les paquets nécessaires à l'installation :

# export JAVA_HOME=/usr/ && yum install curl unzip wget && yum install java-11-openjdk-devel

Si le JDK 11 n'est pas disponible pour le système d'exploitation utilisé, installez le paquet adoptopenjdk-11-hotspot en utilisant Adopt Open JDK.

Importer la clé GPG

# rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH

Ajout du repository “Wazuh”

# cat > /etc/yum.repos.d/wazuh.repo << EOF
[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
EOF

Installer la version Open Distro for Elasticsearch

# yum install opendistroforelasticsearch

Pour configurer Elasticsearch, téléchargez le fichier suivant /etc/elasticsearch/elasticsearch.yml :

# curl -so /etc/elasticsearch/elasticsearch.yml https://raw.githubusercontent.com/wazuh/wazuh-documentation/4.0/resources/open-distro/elasticsearch/7.x/elasticsearch_cluster_initial_node.yml

Éditez le fichier /etc/elasticsearch/elasticsearch.yml. Par défaut, le modèle pré-configuré comprend 3 nœuds, dans le cas où le nombre de nœuds est différent, des lignes doivent être ajoutées ou supprimées en conséquence :

network.host: <elasticsearch_ip>
node.name: node-1
cluster.name: <elastic_cluster>
cluster.initial_master_nodes:
        - node-1
        - node-2
        - node-3
discovery.seed_hosts:
        - <elasticsearch_ip_node1>
        - <elasticsearch_ip_node2>
        - <elasticsearch_ip_node3>

Selon le type de nœud, certains paramètres peuvent varier d'un nœud à l'autre. Le cluster.initial_master_nodes et le discovery.seed_hosts sont des listes de tous les nœuds maîtres éligibles dans le cluster. Le paramètre node.master : false doit être inclus dans chaque nœud Elasticsearch qui ne sera pas configuré comme maître.

Note:

Les valeurs à remplacer :

  • <elasticsearch_ip> : l'IP de l'hôte. Par exemple : 10.0.0.2.
  • <elastic_cluster> : nom du cluster Elasticsearch. Ex. : production du cluster élastique.
  • <elasticsearch_ip_nodeX> : IP du nœud maître éligible du cluster Elasticsearch. Ex : 10.0.0.3.
  • Les certificats de chaque nœud doivent être spécifiés dans la section opendistro_security.nodes_dn.
  opendistro_security.nodes_dn :
      - CN=node-1,OU=Docu,O=Wazuh,L=Californie,C=US
      - CN=node-2,OU=Docu,O=Wazuh,L=Californie,C=US
      - CN=node-3,OU=Docu,O=Wazuh,L=Californie,C=US
      - CN=<nom_commun>,OU=<unité_opérationnelle>,O=<nom_de_l'organisation>,L=<localité>,C=<code_du_pays></bootnote>

Supprimer les certificats de démonstration.

# rm /etc/elasticsearch/esnode-key.pem /etc/elasticsearch/esnode.pem /etc/elasticsearch/kirk-key.pem /etc/elasticsearch/kirk.pem /etc/elasticsearch/root-ca.pem -f

Configurez les certificats Elasticsearch. L'étape suivante est le placement des certificats des nœud correspondant et exécutez les commandes suivantes. Ce guide suppose que le fichier certs.tar est placé dans ~/ (home directory 'root').

mkdir /etc/elasticsearch/certs
mv ~/certs.tar /etc/elasticsearch/certs/
cd /etc/elasticsearch/certs/
tar -xf certs.tar node-X.pem node-X.key node-X_http.pem node-X_http.key root-ca.pem
mv /etc/elasticsearch/certs/node-X.pem /etc/elasticsearch/certs/elasticsearch.pem
mv /etc/elasticsearch/certs/node-X.key /etc/elasticsearch/certs/elasticsearch.key
mv /etc/elasticsearch/certs/node-X_http.pem /etc/elasticsearch/certs/elasticsearch_http.pem
mv /etc/elasticsearch/certs/node-X_http.key /etc/elasticsearch/certs/elasticsearch_http.key

Supprimer les fichiers inutiles.

# rm /etc/elasticsearch/certs/client-certificates.readme /etc/elasticsearch/certs/elasticsearch_elasticsearch_config_snippet.yml search-guard-tlstool-1.7.zip filebeat* node-* -f

Si Kibana doit être installé dans ce nœud, conservez le fichier des certificats. Sinon, si le fichier a déjà été copié dans toutes les instances du déploiement distribué, supprimez-le pour augmenter la sécurité rm -f certs.tar.

Activez et démarrez le service Elasticsearch :

# systemctl daemon-reload
# systemctl enable elasticsearch
# systemctl start elasticsearch

Une fois le processus d'installation terminé sur tous les serveurs du cluster Elasticsearch, lancez le script d'administration de sécurité sur le nœud initial :

Exécutez le script securityadmin d'Elasticsearch pour charger les informations relatives aux nouveaux certificats et démarrer le cluster. Pour exécuter cette commande, la valeur <elasticsearch_IP> doit être remplacée par l'adresse IP d'installation d'Elasticsearch :

# /usr/share/elasticsearch/plugins/opendistro_security/tools/securityadmin.sh -cd /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/ -icl -nhnv -cacert /etc/elasticsearch/certs/root-ca.pem -cert /etc/elasticsearch/certs/admin.pem -key /etc/elasticsearch/certs/admin.key -h <elasticsearch_IP>

Remplacez la valeur <elasticsearch_IP> par l'IP d'installation d'Elasticsearch et exécutez la commande suivante pour vous assurer que l'installation a réussi.

# curl -XGET https://<elasticsearch_ip>:9200 -u admin:admin -k

Pour vérifier les nœuds qui sont connectés au cluster, remplacez <elasticsearch_ip> et exécutez la commande suivante :

# curl -XGET https://<elasticsearch_ip>:9200/_cat/nodes -u admin:admin -k

<bootnote warning>

Il est fortement recommandé de modifier les mots de passe par défaut d'Elasticsearch pour les utilisateurs déclarés dans le fichier /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml.

Vous trouverez plus d'informations sur ce processus ici.

Note:

Il est également recommandé de personnaliser le fichier /etc/elasticsearch/jvm.options afin d'améliorer les performances d'Elasticsearch.

Ce site web utilise des cookies. En utilisant le site Web, vous acceptez le stockage de cookies sur votre ordinateur. Vous reconnaissez également que vous avez lu et compris notre politique de confidentialité. Si vous n'êtes pas d'accord, quittez le site.En savoir plus