1. ELK sous Windows 11 (partie Elesticsearch & Kibana)

Modérateur : admin

admin
Site Admin
Messages : 23
Enregistré le : 18 juil. 2017, 19:18

1. ELK sous Windows 11 (partie Elesticsearch & Kibana)

Message par admin »

C'est bien les SIEM, mais seulement, Splunk est payant…
Alors, voici, comment s'en passer avec de l'OpenSource : ELK (Elasticsearch, Logstash, Kibana). C'est un espèce de "couteau-suisse" de la sécurité informatique… Il peut faire beaucoup de choses…



• Téléchargez ELK :

https://www.elastic.co/downloads/

https://www.elastic.co/downloads/elasticsearch
https://www.elastic.co/downloads/logstash
https://www.elastic.co/downloads/kibana

Décompresser, pas sur C:\ , de préférence. Pour ce tuto, j'ai choisi le disque D:\

• Et java (jre):
https://www.oracle.com/java/technologie ... 25-windows

• Édite ton fichier "elasticsearch.yml" (dans D:\ELK\elasticsearch-9.0.3\config\) et ajoute :

Code : Tout sélectionner

# --- Cluster (un seul nœud) ---
cluster.name: elk-cluster
node.name: node-1
discovery.type: single-node
		
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: D:/ELK/elasticsearch-9.0.3/data
#
# Path to log files:
#
path.logs: D:/ELK/elasticsearch-9.0.3/logs
#
# --- Réseau ---
network.host: 0.0.0.0   # ou ton IP locale
http.port: 9200
		
		
		
# --- Sécurité ---
xpack.security.enabled: false        # pour l'instant on désactive la sécurité TLS, on l'activera plus tard.


• Modifier la taille de la RAM dédiée à java :
• Ouvrir "D:\ELK\elasticsearch-9.0.3\config\jvm.options", et écrire à l'intérieur :

Code : Tout sélectionner

-Xms4g
-Xmx4g
• Allez dans le dossier D:\ELK\elasticsearch-9.0.3\bin ,et exécutez, en ligne de commande (PowerShell ou Invite de Commande CMD):

Code : Tout sélectionner

.\elasticsearch.bat
• Attendez qu'elasticsearch se lance complètement (un peu long parfois…)
• Si tout s'est bien passé, il vous rend pas la main, il continue à tourner, il ne revient pas donc à l'interpréteur de commande "D:\" :

• Lances une nouvelle ligne de commandes PowerShell, puis saisissez "curl http://localhost:9200 " ou "Invoke-RestMethod ttp://localhost:9200 " (pour PowerShelll 7+)
• Vous devez obtenir quelque chose comme ceci :
1.png
1.png (52.99 Kio) Vu 3162 fois

• Si tout est correct, tu peux installer Elasticsearch comme service Windows (via elasticsearch-service.bat install) afin qu’il démarre automatiquement au boot de Windows. (je le fais pas pour l'instant.)


• Occupons-nous maintenant de l'affichage. Il faut lancer (de la même manière) le module Kibana, qui est le module d'ELK qui permet d'afficher tous les logs récoltés par elasticsearch, et ce, dans une page web, dans votre explorateur internet.
• Allez dans le dossier D:\ELK\kibana-9.0.3\bin ,et exécutez, en ligne de commande (PowerShell ou Invite de Commande CMD):

Code : Tout sélectionner

.\kibana.bat
• Attendez que kibana se lance complètement (un peu long parfois…)
• Idem, si tout s'est bien passé, il vous rend pas la main, il continue à tourner, il ne revient pas donc à l'interpréteur de commande "D:\" :
• Lancez un explorateur internet (Chrome, Edge, etc…), et saisissez à l'intérieur :

Code : Tout sélectionner

http://localhost:5601/
• La page suivante s'affiche :
2.png
2.png (68.92 Kio) Vu 3162 fois
1) Clique sur "Explore on my own"
• Rem :
○ Par défaut, si tu as désactivé la sécurité dans elasticsearch.yml (xpack.security.enabled: false), il ne te demandera pas de login.
○ Si la sécurité est activée, il faudra te connecter avec l’utilisateur elastic (on verra plus loin ceci).




• Justement, maintenant que elasticsearch et kibana fonctionnent correctement, revenons un peu en arrière, pour activer la sécurité (afin qu'on puisse s'authentifier sur la page web de kibana, pour que pas n'importe qui puisse s'y connecter)
• Désactivez les services elasticsearch et kibana ([ctrl]+[c] dans les deux fenêtres où ils sont lancés, puis "o")
• Depuis Elastic 8+, la sécurité est activée par défaut.
• D'abord, édite D:\ELK\elasticsearch-9.0.3\config\elasticsearch.yml, et ajoute/modifie ces lignes :

Code : Tout sélectionner

xpack.security.enabled: true
xpack.security.http.ssl.enabled: false
xpack.security.transport.ssl.enabled: false



○ Depuis D:\ELK\elasticsearch-9.0.3\bin, lancez elasticsearch :
§

Code : Tout sélectionner

.\elasticsearch.bat
○ Si tout est correct (vous n'obtenez pas d'erreur), vous pouvez générer les mots de passe. Ouvrez un autre PowerShell, puis, tapez dedans (dans le dossier D:\ELK\elasticsearch-9.0.3\bin) :
§

Code : Tout sélectionner

.\elasticsearch-setup-passwords.bat interactive
§ Suivez les instructions pour configurer les mots de passe, et notez-les bien tous, on en aura besoin (au moins "elastic" et "kibana_system").
○ Teste la connexion :
§

Code : Tout sélectionner

curl -u elastic:<TonMotDePasse> http://<ton_IP_ELK>:9200
○ Remplacez "<TonMotDePasse>" par votre mot de passe de l'utilisateur elastic, et "<ton_IP_ELK>" par ton IP d'Elk. Vous devez obtenir quelque chose comme ça :
3.png
3.png (19.06 Kio) Vu 3162 fois


• Config kibana maintenant :
○ Editez/modifiez le fichier "D:\ELK\kibana-9.0.3\config\kibana.yml", comme suit :

Code : Tout sélectionner

# ==============================
# Kibana basic settings
# ==============================
			
server.host: "0.0.0.0"
server.port: 5601
			
# ==============================
# Elasticsearch connection
# ==============================
		
elasticsearch.hosts: ["http://<ton_IP_ELK>:9200"]
			
# Utilisateur dédié Kibana (créé automatiquement par Elastic)
elasticsearch.username: "kibana_system"
elasticsearch.password: "<TonMotDePasseIciKibana>"

i18n.locale: "fr-FR"
			
# ==============================
# Optional (logs)
# ==============================
			
logging:
  appenders:
    file:
      type: file
      fileName: D:/ELK/kibana-9.0.3/logs/kibana.log
      layout:
        type: json
  root:
    appenders: [default, file]

○ Oublie pas de modifier, en mettant tes données, dans <ton_IP_ELK> et <TonMotDePasseIciKibana>
○ REM : Si vous avez un problème de mot de passe ici, vous pouvez le réinitialiser. Tapez (dans D:\ELK\elasticsearch-9.0.3\bin) :
§

Code : Tout sélectionner

.\elasticsearch-reset-password.bat -u kibana_system

• Lance Kibana
Depuis D:\ELK\kibana-9.0.3\bin\ :

Code : Tout sélectionner

.\kibana.bat
• Accède à Kibana
Ouvre ton navigateur sur

Code : Tout sélectionner

http://<ton_IP_ELK>:5601
Identifie-toi avec :
• user : elastic
• mot de passe : celui défini avec elasticsearch-setup-passwords.bat




• Mettons en place le TLS :
• Générons maintenant le certificat TLS :
○ Depuis D:\ELK\elasticsearch-9.0.3\bin, lance :
§

Code : Tout sélectionner

.\elasticsearch-certutil.bat ca

□ Définir un mot de passe "<TonNouveauMotDePasseCA>",
□ ça te fabrique le fichier "elastic-stack-ca.p12".
□ Copie ce fichier dans D:\ELK\elasticsearch-9.0.3\config\certs\. Si ce répertoire n'est pas créé, créez le. Rem : le fichier "elastic-stack-ca.p12" se trouve un niveau plus bas, donc, dans D:\ELK\elasticsearch-9.0.3\


§ Créé le dossier D:\ELK\elasticsearch-9.0.3\temp


§ Puis :
□ Crée un fichier "instance.yml" dans D:\ELK\elasticsearch-9.0.3\temp avec ce contenu :

Code : Tout sélectionner

instances:
  - name: 'node-1'
    ip: ['<TonIpElastic>', '<TonIpSuricata>']
  - name: 'node-2'
    dns: ['node1.elastic.test.com']

§ Enregistre et ferme (REM : dans les fichers .yml, comme ce dernier, il est IMPERATIF de respecter le même nombre d'espaces donnés au début de chaque ligne).
§ puis saisis, dans D:\ELK\elasticsearch-9.0.3\bin :

Code : Tout sélectionner

.\elasticsearch-certutil.bat cert --ca config\certs\elastic-stack-ca.p12 --ca-pass "<TonMotDePasseCA>" --in temp\instance.yml --out temp\certs.zip --pass "<TonMotDePasseNode-1>"
□ Ça génère les certificats dans l'archive D:\ELK\elasticsearch-9.0.3\temp\certs.zip.
□ Décompresse certs.zip
□ Copie le dossier certs, avec son contenu dans D:\ELK\elasticsearch-9.0.3\config\
□ Navigue dans le dossier D:\ELK\elasticsearch-9.0.3\config\certs\node-1\ , puis tape :
®

Code : Tout sélectionner

copy node-1.p12 ..\
§ Vérifier si le certificat node-1.p12 est correct :

Code : Tout sélectionner

D:\ELK\elasticsearch-9.0.3\jdk\bin\keytool.exe -list -v -keystore D:\ELK\elasticsearch-9.0.3\config\certs\node-1.p12 -storetype PKCS12
® À la demande, saisis <TonMotDePasseNode-1>
® Cette commande, doit retourner une description du certificat. Si elle ne retourne pas d'erreur, c'est que le certificat est bon.
® Ballade-toi alors dans le résultat, pour trouver si <TonIpElastic> et <TonIpSuricata> figurent bien dans le certificat.
® Regardez dans :
#3: ObjectId: 2.5.29.17 Criticality=false
SubjectAlternativeName [



• Pour convertir des certificats *.p12 en crt / pem (on s'en servira pour Kibana) :
○ REM : pour se servir facilement d'openssl, j'ai installé l'application "Git Bash" : https://git-scm.com/download/win . Pour la suite, "D:\ELK\elasticsearch-9.0.3\bin" devient "/D/ELK/elasticsearch-9.0.3/bin", dans Git Bash.

1. Extraire le certificat de la CA (au format .crt)

Code : Tout sélectionner

openssl pkcs12 -in /d/ELK/elasticsearch-9.0.3/config/certs/elastic-stack-ca.p12 -clcerts -nokeys -out /d/ELK/elasticsearch-9.0.3/config/certs/elastic-stack-ca.crt
§ Saisissez le mdp du ca

2. Extraire la clé privée

Code : Tout sélectionner

openssl pkcs12 -in /d/ELK/elasticsearch-9.0.3/config/certs/node-1.p12 -nocerts -nodes -out /d/ELK/elasticsearch-9.0.3/config/certs/node-1.key
§ Saisissez le mdp node-1

3. Extraire le certificat du nœud

Code : Tout sélectionner

openssl pkcs12 -in /d/ELK/elasticsearch-9.0.3/config/certs/node-1.p12 -clcerts -nokeys -out /d/ELK/elasticsearch-9.0.3/config/certs/node-1.crt
§ Saisissez le mdp node-1






• Passons maintenant à la sécurité maximale (HTTPS://)

○ Ouvre à nouveau D:\ELK\elasticsearch-9.0.3\config\elasticsearch.yml, et ajoute/modifie ces lignes, à la fin du fichier :

Code : Tout sélectionner

# --- Security ---
xpack.security.enabled: true
# TLS pour transport (entre nœuds)
xpack.security.transport.ssl.enabled: true
		
xpack.security.enrollment.enabled: true
		
#xpack.security.enrollment.enabled: true
		
# --- Monitoring (optionnel) ---
# xpack.monitoring.collection.enabled: true
		
		
xpack.security.transport.ssl.verification_mode: certificate
		
xpack.security.transport.ssl.keystore.path: certs/node-1.p12
xpack.security.transport.ssl.keystore.password: "<TonMotDePasseNode-1>"
		
xpack.security.transport.ssl.truststore.path: certs/node-1.p12
xpack.security.transport.ssl.truststore.password: "<TonMotDePasseNode-1>"
		
# TLS pour HTTP (clients comme Kibana)
xpack.security.http.ssl.enabled: true
		
xpack.security.http.ssl.keystore.path: certs/node-1.p12
xpack.security.http.ssl.keystore.password: "<TonMotDePasseNode-1>"
		
xpack.security.http.ssl.truststore.path: certs/node-1.p12
xpack.security.http.ssl.truststore.password: "<TonMotDePasseNode-1>"


• Enregistrez et quittez.
• Lancez .\elasticsearch.bat
• Tout doit être correct, pour l'instant.



Configurons maintenant Kibana :

• Dans le répertoire D:\ELK\kibana-9.0.3\bin , saisissez :

Code : Tout sélectionner

.\kibana-encryption-keys.bat generate
○ Copiez les 3 clés donnés, en dessous de "Settings:" (c'est tout à la fin). :
4.png
4.png (10.95 Kio) Vu 3162 fois
○ Et collez les dans le fichier D:\ELK\kibana-9.0.3\config\kibana.yml (au milieu du fichier). Recherchez le texte "# =================== System: Logging ===================" et placez les juste avant.

• Ajoutez/modifier également ces lignes, à D:\ELK\kibana-9.0.3\config\kibana.yml :

Code : Tout sélectionner

# =================== System: Kibana Server (Optional) ===================
# Enables SSL and paths to the PEM-format SSL certificate and SSL key files, respectively.
# These settings enable SSL for outgoing requests from the Kibana server to the browser.
#server.ssl.enabled: false
#server.ssl.certificate: /path/to/your/server.crt
#server.ssl.key: /path/to/your/server.key
server.ssl.enabled: true
server.ssl.certificate: D:/ELK/elasticsearch-9.0.3/config/certs/node-1.crt
server.ssl.key: D:/ELK/elasticsearch-9.0.3/config/certs/node-1.key
		
# =================== System: Elasticsearch ===================
# The URLs of the Elasticsearch instances to use for all your queries.
elasticsearch.hosts: ["https://<TonIpElastic>:9200"]
		
# If your Elasticsearch is protected with basic authentication, these settings provide
# the username and password that the Kibana server uses to perform maintenance on the Kibana
# index at startup. Your Kibana users still need to authenticate with Elasticsearch, which
# is proxied through the Kibana server.
elasticsearch.username: "kibana_system"
elasticsearch.password: "<TonMotDePasseKibana_system>"
		
…
		
		
# =================== System: Elasticsearch (Optional) ===================
# These files are used to verify the identity of Kibana to Elasticsearch and are required when
# xpack.security.http.ssl.client_authentication in Elasticsearch is set to required.
elasticsearch.ssl.certificate: D:/ELK/elasticsearch-9.0.3/config/certs/node-1.crt
elasticsearch.ssl.key: D:/ELK/elasticsearch-9.0.3/config/certs/node-1.key
		
# Enables you to specify a path to the PEM file for the certificate
# authority for your Elasticsearch instance.
#elasticsearch.ssl.certificateAuthorities: [ "/path/to/your/CA.pem" ]
		
elasticsearch.ssl.certificateAuthorities: ["D:/ELK/elasticsearch-9.0.3/config/certs/elastic-stack-ca.crt"]

• Sauvegardez en fermez le.
• Maintenant, lancez kibana (dans le dossier D:\ELK\kibana-9.0.3\bin) :

Code : Tout sélectionner

.\kibana.bat
• Attendez qu'il se lance complètement, puis ouvrez un borowzer internet (Google Chrome, Edge, Firefox, etc… )
• Saisissez l'adresse dedans :

Code : Tout sélectionner

https://<TonIpElastic>:5601
○ ou :

Code : Tout sélectionner

https://localhost:5601
○ (ne vous inquiétez si le certificat n'est pas valide, il l'est, c'est juste que votre browzer internet ne connait pas le CA)
• Vous devez obtenir ceci :
5.png
5.png (17.63 Kio) Vu 3162 fois


• Authentifiez-vous avec le compte "elastic" et le mot de passe que vous avez définis.

6.png
6.png (151.56 Kio) Vu 3162 fois



Voilà, fini pour ce tuto, je trouve qu'il y a beaucoup de choses à faire déjà, alors, la suite dans un autre tuto.



























Sources : ChatGPT et https://www.ibm.com/docs/fr/datacap/9.1 ... -elk-stack