Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
procedure_d_installation_d_elk [2025/03/25 18:28] superadminprocedure_d_installation_d_elk [2025/05/22 15:44] (Version actuelle) – [Introduction] superadmin
Ligne 4: Ligne 4:
  
 Cette procédure permet de mettre en place un SIEM grâce à la suite ELK : le combo d'ElasticSearch, LogStash, Kibana et les beats. Cette procédure permet de mettre en place un SIEM grâce à la suite ELK : le combo d'ElasticSearch, LogStash, Kibana et les beats.
 +Pour installer la suite ELK sous forme de conteneur docker, voire [[deployer_la_suite_elk_grace_a_docker_compose|cette page]]
  
 ===== Topologie du LAB ===== ===== Topologie du LAB =====
Ligne 28: Ligne 29:
   * Puis ajouter la clé :   * Puis ajouter la clé :
  
-<code>wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -</code>+<code>wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg</code>
  
   * Sous RedHat/CentOS/Fedora, c'est différent :   * Sous RedHat/CentOS/Fedora, c'est différent :
Ligne 36: Ligne 37:
  
   * Pour Debian/Ubuntu, entrer la commande suivante :   * Pour Debian/Ubuntu, entrer la commande suivante :
-<code>echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list</code>+<code>echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-8.x.list</code>
  
   * __Pour les systèmes RedHat/CentOS/Fedora,__ créer un fichier nommé ''elastic.repo'' dans le répertoire ''/etc/yum.repos.d'' contenant :   * __Pour les systèmes RedHat/CentOS/Fedora,__ créer un fichier nommé ''elastic.repo'' dans le répertoire ''/etc/yum.repos.d'' contenant :
Ligne 81: Ligne 82:
 La sécurité est configurée par défaut dans Elasticsearch. Néanmoins, on va devoir adapter la configuration à notre cas d'usage. La sécurité est configurée par défaut dans Elasticsearch. Néanmoins, on va devoir adapter la configuration à notre cas d'usage.
  
-Commencer par réinitialiser le mot de passe du compte ''elastic'' (l'administrateur par défaut) et le noter dans un coin :+Si besoin, commencer par réinitialiser le mot de passe du compte ''elastic'' (l'administrateur par défaut) et le noter dans un coin :
 <code>/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic </code> <code>/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic </code>
- 
-<del>__Ensuite on va générer 3 certificats SSL :__ 
-  * Un pour la CA : <code>/usr/share/elasticsearch/bin/elasticsearch-certutil ca</code> 
-  * Un pour le noeud : <code>/usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12</code> 
-  * Un pour l'accès HTTPS : <code>/usr/share/elasticsearch/bin/elasticsearch-certutil http</code> (:!: Attention celui-ci demande beaucoup d'informations) 
- 
-Une fois les certificats générés, il faut les copier dans ''/etc/elasticsearch'' et s'assurer que l'utilisateur elasticsearch en soit le propriétaire. Le certificat HTTP est par défaut livré dans une archive .zip, il faut donc la décompresser pour pouvoir récupérer le certificat. 
- 
-Puis, on va enregistrer les mots de passes des certificats dans la keystore (coffre-fort) d'elastic : 
- 
-  * Pour le certificat de la CA : <code>/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password</code> 
- 
-  * Pour le certificat du noeud : <code>/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password</code> 
- 
-  * Pour le certificat HTTP : <code>/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password</code> 
- 
-Enfin, ouvrir le fichier ''/etc/elasticsearch/elasticsearch.yml'' et ajouter/décommenter les lignes suivantes : 
- 
-<code>cluster.name: project-one #nom du cluster (facultatif) 
-node.name: master-node-1.lab #nom du noeud (facultatif) 
-cluster.initial_master_nodes: ["master-node-1.lab"] #liste des master nœuds du cluster (facultatif) 
- 
-xpack.security.enabled: true #Activer les fonctionnalités de sécurité 
-xpack.security.enrollment.enabled: true #Activer l'enrôlement via tokens 
-xpack.security.transport.ssl: 
-  enabled: true #activer la communication SSL entre les nœuds  
-  verification_mode: certificate #mode de vérification SSL par certificat 
-  keystore.path: certs/transport.p12 #emplacement du certificat du nœud 
-  truststore.path: certs/transport.p12 #emplacement du certificat du nœud 
-xpack.security.http.ssl:  
-  enabled: true #activer HTTPS 
-  keystore.path: certs/http.p12 #emplacement du certificat HTTPS 
-</code> 
-</del> 
  
 Ouvrir la configuration d'Elasticsearch et remplir/décommenter les paramètres suivants : Ouvrir la configuration d'Elasticsearch et remplir/décommenter les paramètres suivants :
Ligne 128: Ligne 95:
  
 <code> <code>
-# ---------------------------------- Cluster ----------------------------------- 
-# 
 # Use a descriptive name for your cluster: # Use a descriptive name for your cluster:
-# 
 cluster.name: project-one cluster.name: project-one
-+
-# ------------------------------------ Node ------------------------------------ +
-#+
 # Use a descriptive name for the node: # Use a descriptive name for the node:
-# 
 node.name: master-node-1.lab node.name: master-node-1.lab
-+ 
-# Add custom attributes to the node: +
-+
-#node.attr.rack: r1 +
-+
-# ----------------------------------- Paths ------------------------------------ +
-#+
 # Path to directory where to store the data (separate multiple locations by comma): # Path to directory where to store the data (separate multiple locations by comma):
-# 
 path.data: /var/lib/elasticsearch path.data: /var/lib/elasticsearch
-#+
 # Path to log files: # Path to log files:
-# 
 path.logs: /var/log/elasticsearch path.logs: /var/log/elasticsearch
-#+
 # By default Elasticsearch is only accessible on localhost. Set a different # By default Elasticsearch is only accessible on localhost. Set a different
 # address here to expose this node on the network: # address here to expose this node on the network:
-# 
 network.host: 172.16.10.1 network.host: 172.16.10.1
-#+
 # By default Elasticsearch listens for HTTP traffic on the first free port it # By default Elasticsearch listens for HTTP traffic on the first free port it
 # finds starting at 9200. Set a specific HTTP port here: # finds starting at 9200. Set a specific HTTP port here:
-# 
 http.port: 9200 http.port: 9200
-#+
 # Enable security features # Enable security features
 xpack.security.enabled: true xpack.security.enabled: true
- 
 xpack.security.enrollment.enabled: true xpack.security.enrollment.enabled: true
  
Ligne 180: Ligne 130:
   keystore.path: certs/transport.p12   keystore.path: certs/transport.p12
   truststore.path: certs/transport.p12   truststore.path: certs/transport.p12
 +  
 # Create a new cluster with the current node only # Create a new cluster with the current node only
 # Additional nodes can still join the cluster later # Additional nodes can still join the cluster later
Ligne 187: Ligne 138:
 # Connections are encrypted and require user authentication # Connections are encrypted and require user authentication
 http.host: 0.0.0.0 http.host: 0.0.0.0
 +</code>
 +
 +Redémarrer le service elasticsearch, la connexion HTTPS à elasticsearch doit être fonctionnelle.
 +
 +==== Ajout de nœuds au cluster (facultatif) ====
 +
 +Pour ajouter des nœuds au cluster, on doit d'abord générer un token pour le nœud principal :
 +<code> /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node</code>
 +
 +Copier le token et le convertir en texte pour vérifier que l'adresse IP et la version d'elasticsearch sont corrects :
 +<code>echo 'token' | base64 -d</code>
 +Si ce n'est pas le cas, désactiver l'interface réseau problématique, redémarrer ES et regénérer le token en ajoutant un ''-f'' à la commande précédente.
 +
 +Installer Elasticsearch sur le nouveau nœud et configurer les paramètres suivants dans ''/etc/elasticsearch/elasticsearch.yml'' :
 +  * cluster.name : nom du cluster (le même que sur le 1er nœud)
 +  * node.name : nom du nœud
 +  * network.host : adresse IP du nœud
 +  * http.port : port 9200 par défaut (décommenter la ligne)
 +
 +Puis, utiliser la commande suivante pour associer le nœud au cluster en lui indiquant le token du premier nœud :
 +<code>/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token token </code>
  
 +Répondre ''y''pour confirmer puis démarrer Elasticsearch à la suite de l'opération. Le nœud est ajouté au cluster. 
  
-Pour terminer, relancer le service elasticsearchLa connexion à elasticsearch en HTTPS doit être fonctionnelle.+On peut lancer les requêtes curl suivantes sur le nouveau nœud avec le compte admin du premier pour valider que l'opération a réussi : 
 +<code>curl -k -u elastic:smKNdSN1Fp8H=F0y8Heh https://172.16.10.2:9200/_cluster/health?pretty </code> 
 +<code>curl -k -u elastic:smKNdSN1Fp8H=F0y8Heh https://172.16.10.2:9200/_cat/nodes</code>
  
 ==== Installation et configuration de Kibana ==== ==== Installation et configuration de Kibana ====