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/21 16:08] 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 77: Ligne 78:
 <code>systemctl enable elasticsearch</code> <code>systemctl enable elasticsearch</code>
  
-==== Configuration et sécurisation d'Elasticsearch ====+==== Configuration d'Elasticsearch ====
  
-Dans l'état actuel, Elasticsearch n'est pas sécurisé, n'importe qui sur le réseau peut y accèderDe plussi on veut créer un cluster il va falloir ajouter des paramètres supplémentaires. Cette étape est facultative si on veut juste installer un ELK de test sans aucune redondance ni sécurité.+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 configurer un mot de passe pour chaque compte de service (le compte ''elastic'' est l'administrateur par défaut) :+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>
  
-__Ensuite on va générer 3 certificats SSL :__ +Ouvrir la configuration d'Elasticsearch et remplir/décommenter les paramètres suivants 
-  * Un pour la CA <code>/usr/share/elasticsearch/bin/elasticsearch-certutil ca</code> +  * cluster.name (optionnel) nom du cluster 
-  * Un pour le noeud <code>/usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12</code> +  * node.name nom du nœud 
-  * Un pour l'accès HTTPS <code>/usr/share/elasticsearch/bin/elasticsearch-certutil http</code> (:!: Attention celui-ci demande beaucoup d'informations)+  * network.host : adresse IP du nœud 
 +  * http.port port utilisé par elasticsearch (par défaut 9200) 
 +  * cluster.initial_master_nodes recopier le nom du nœud 
  
-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.+La configuration doit ressembler à ceci (j'ai volontairement retiré les lignes inutiles) :
  
-Puis, on va enregistrer les mots de passes des certificats dans la keystore (coffre-fort) d'elastic :+<code> 
 +# Use a descriptive name for your cluster: 
 +cluster.name: project-one
  
-  * Pour le certificat de la CA <code>/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password</code>+# Use a descriptive name for the node: 
 +node.name: master-node-1.lab 
 +  
 +# Path to directory where to store the data (separate multiple locations by comma): 
 +path.data: /var/lib/elasticsearch
  
-  * Pour le certificat du noeud <code>/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password</code>+# Path to log files: 
 +path.logs: /var/log/elasticsearch
  
-  * Pour le certificat HTTP <code>/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password</code>+# By default Elasticsearch is only accessible on localhost. Set a different 
 +# address here to expose this node on the network: 
 +network.host: 172.16.10.1
  
-Enfin, ouvrir le fichier ''/etc/elasticsearch/elasticsearch.yml'' et ajouter/décommenter les lignes suivantes :+# By default Elasticsearch listens for HTTP traffic on the first free port it 
 +# finds starting at 9200Set a specific HTTP port here: 
 +http.port: 9200
  
-<code>cluster.name: project-one #nom du cluster (facultatif) +Enable security features 
-node.namemaster-node-1.lab #nom du noeud (facultatif) +xpack.security.enabledtrue 
-cluster.initial_master_nodes["master-node-1.lab"] #liste des master nodes du cluster (facultatif)+xpack.security.enrollment.enabledtrue
  
-xpack.security.enabled: true #Activer l'authentification +Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents 
-xpack.security.transport.ssl.enabled: true #Activer le chiffrement SSL entre les noeuds +xpack.security.http.ssl: 
-xpack.security.transport.ssl.verification_mode: certificate #Vérification SSL via certificat +  enabled: true 
-xpack.security.transport.ssl.client_authentication: required #Nécessite que le client s'authentifie +  keystore.path: certs/http.p12
-xpack.security.transport.ssl.keystore.pathelastic-certificates.p12 #certificat du noeud +
-xpack.security.transport.ssl.truststore.path: elastic-certificates.p12 #certificat du noeud +
-xpack.security.http.ssl.enabled: true #Activer le HTTPS pour elasticsearch +
-xpack.security.http.ssl.keystore.path: http.p12 #certificat https</code>+
  
-Pour terminer, relancer le service elasticsearchLa connexion à elasticsearch en HTTPS doit être fonctionnelle.+# Enable encryption and mutual authentication between cluster nodes 
 +xpack.security.transport.ssl: 
 +  enabled: true 
 +  verification_mode: certificate 
 +  keystore.path: certs/transport.p12 
 +  truststore.path: certs/transport.p12 
 +   
 +# Create a new cluster with the current node only 
 +# Additional nodes can still join the cluster later 
 +cluster.initial_master_nodes: ["master-node-1.lab"]
  
-:!On peut remplacer ''interactive'' par ''auto'' pour générer automatiquement des mots de passes aléatoires pour chaque compte.+# Allow HTTP API connections from anywhere 
 +# Connections are encrypted and require user authentication 
 +http.host0.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.  
 + 
 +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 ====