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
○
Code : Tout sélectionner
.\elasticsearch.bat
• 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 :
• 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
• 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/
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
§
Code : Tout sélectionner
.\elasticsearch-setup-passwords.bat interactive
○ Teste la connexion :
§
Code : Tout sélectionner
curl -u elastic:<TonMotDePasse> http://<ton_IP_ELK>:9200
• 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
Ouvre ton navigateur sur
Code : Tout sélectionner
http://<ton_IP_ELK>:5601
• 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>"
□ 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 ..\
□
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
® 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
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
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
• 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
○ 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
• Saisissez l'adresse dedans :
○
Code : Tout sélectionner
https://<TonIpElastic>:5601
○
Code : Tout sélectionner
https://localhost:5601
• Vous devez obtenir ceci :
• Authentifiez-vous avec le compte "elastic" et le mot de passe que vous avez définis.
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