logo rss

Elastic Stack 8 - Installer et Configurer Elasticsearch + Kibana sur Debian Linux

Elasticsearch logo

Un SIEM ou Gestion de l'information des événements de sécurité est une solution de sécurité permettant de centraliser des journaux et des événements de nombreux périphériques différents d'un réseau informatique dans le but de les traiter et de générer des alertes dans le cas ou des événements anormaux se produiraient.

Nous vérons ici comment déployer la solution Elastic Stack. Qui a l'avantage d'être en grande partie gratuite.

Elastic Stack Architecture

Elasticsearch est un moteur de recherche et d'analyse distribué pour tout type de données.

Kibana est un outil de visualisation et de gestion des données pour Elasticsearch. Kibana sera utilisé pour rechercher, visualiser, et interagir avec les données stockées dans Elasticsearch.

SIEM | Elasticsearch architecture

Notes

Versions

  • OS : Debian
  • Elasticsearch : 8

Les liens

Les composants

Principaux

  • Elasticsearch : La recherche et l'analyse RESTful distribuĂ©es. (Le cerveau de la solution).
  • Kibana : Visualisez vos donnĂ©es. Naviguez dans la Suite. (Affichage, reprĂ©sentation graphique).
  • Beats : Collecte, analyse et transfert lĂ©ger.

Autres

  • Logstash : Ingestion, transformation, enrichissement et sortie. (RĂ©cupĂ©rer un flux d'information avec possibilitĂ© de le transformer/filtrer avant de le transmettre Ă  Elasticsearch).
  • Filebeat : RĂ©cupĂ©rer les informations des fichiers journaux. (Transmettre des fichiers journaux d'une machine vers Elasticsearch.)

Les ports par défaut

  • ElastiSearch : http://IP_ADDRESS:9200
  • Kibana web access : http://IP_ADDRESS:5601
  • Logstash : 9600

Installer Elasticsearch (Debian Server)

Prérequis

  • Installer apt-transport-https et les paquets nĂ©cessaires :
root@host:~# apt update && apt-get install apt-transport-https gnupg curl wget
  • Importer la clĂ© PGP Elasticsearch :
root@host:~# wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
  • Ajouter le dĂ©pot elastic :
root@host:~# echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-8.x.list

Elasticsearch

  • Installer Elasticsearch et noter le mot de passe super-utilisateur :
root@host:~# apt update && apt-get install elasticsearch […] --------------------------- Security autoconfiguration information ------------------------------ Authentication and authorization are enabled. TLS for the transport and HTTP layers is enabled and configured. The generated password for the elastic built-in superuser is : elastic_password;) If this node should join an existing cluster, you can reconfigure this with '/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <token-here> after creating an enrollment token on your existing cluster. You can complete the following actions at any time: Reset the password of the elastic built-in superuser with '/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic'. Generate an enrollment token for Kibana instances with '/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana'. Generate an enrollment token for Elasticsearch nodes with '/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node'. -------------------------------------------------------------------------------------------------

Kibana

  • Installer Kibana :
root@host:~# apt update && apt-get install kibana

Configuring

Elasticsearch

  • Éditer le fichier /etc/elasticsearch/elasticsearch.yml pour paramĂ©trer l'interface d'Ă©coute :
network.host: 0.0.0.0
  • DĂ©marrer le service elasticsearch :
root@host:~# systemctl start elasticsearch.service
  • VĂ©rifier que le service elastic fonctionne :
root@host:~# curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic https://localhost:9200 Enter host password for user 'elastic': elastic_password;) { "name" : "std", "cluster_name" : "elasticsearch", "cluster_uuid" : "StdgreaTBanDKphU4S0ceg", "version" : { "number" : "8.13.3", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "ff17057114c2199c9c1bbecc727003a907c0db7a", "build_date" : "2024-04-29T22:05:16.051731935Z", "build_snapshot" : false, "lucene_version" : "9.10.0", "minimum_wire_compatibility_version" : "7.17.0", "minimum_index_compatibility_version" : "7.0.0" }, "tagline" : "You Know, for Search" }

Kibana

  • Éditer le fichier /etc/kibana/kibana.yml pour paramĂ©trer l'adresse d'Ă©coute sur «toutes les adresses» :
server.host: "0.0.0.0" server.publicBaseUrl: "http://X.X.X.X:5601"
  • DĂ©marrer le service :
root@host:~# systemctl start kibana.service
  • CrĂ©er le jeton d'inscription :
root@host:~# /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana eyJ2ZXIiOiI4LjEuMiIsImFkciI6WyIxOTIuMTY4LjEuNjY6OTIwMCJdLCJmZ3IiOiJmYzdiZmFmMjNmODEzN2M1NmY4YTg1NGMxNTdjMWFkYTNiZDdiOGM4NTE4YTZhNmI3wWNiYzBkNzc0ZTRjNzc1Iiwia2V5Ijoib1ZBTkVJQUIxWVNBT0BiUWVsUVc6cEU1WXF3U1FTUENjcFFaZUJvTGtKdyJ0
  • Ouvrir Firefox Ă  l'adresse http://X.X.X.X:5601 et coller le jeton d'inscription puis cliquer sur Configure Elastic :
ElasticSearch | Kibana : Configure Elastic to get started
  • GĂ©nĂ©rer un code de vĂ©rification Kibana :
root@host:~# /usr/share/kibana/bin/kibana-verification-code Your verification code is: 139 477 ElasticSearch | Kibana : verification code
  • Nous pouvons maintenant nous connecter Ă  Kibana avec le compte elastic :
ElasticSearch | Kibana : Authentication Page

SĂ©curiser Kibana

Une des grosses améliorations de la version 8 est qu'elasticsearch est maintenant sécurisé lors de l'installation par défaut afin de chiffrer ses communications.

Ce n'est pas le cas de Kibana pour lequel nous nous connectons par défaut en http. Nous allons donc voir comment activer la connexion https.

  • Commenter la ligne suivante afin de dĂ©sactiver l'OpenSSL Legacy Provider en Ă©ditant le fichier /etc/kibana/node.options :
## enable OpenSSL 3 legacy provider #--openssl-legacy-provider
  • Lancer le script kibana-encryption-keys et copier les valeurs en dessous de la ligne settings :
root@host:~# /usr/share/kibana/bin/kibana-encryption-keys generate ## Kibana Encryption Key Generation Utility The 'generate' command guides you through the process of setting encryption keys for: xpack.encryptedSavedObjects.encryptionKey Used to encrypt stored objects such as dashboards and visualizations https://www.elastic.co/guide/en/kibana/current/xpack-security-secure-saved-objects.html#xpack-security-secure-saved-objects xpack.reporting.encryptionKey Used to encrypt saved reports https://www.elastic.co/guide/en/kibana/current/reporting-settings-kb.html#general-reporting-settings xpack.security.encryptionKey Used to encrypt session information https://www.elastic.co/guide/en/kibana/current/security-settings-kb.html#security-session-and-cookie-settings Already defined settings are ignored and can be regenerated using the --force flag. Check the documentation links for instructions on how to rotate encryption keys. Definitions should be set in the kibana.yml used configure Kibana. Settings: xpack.encryptedSavedObjects.encryptionKey: caeb7879368e3dd66d7302f6810daec1 xpack.reporting.encryptionKey: c1c89f500966ac710f7fa5eaf2939976 xpack.security.encryptionKey: e1458d710ffb321e4a4f4eb792c78b2b
  • Coller les lignes prĂ©cĂ©dentes dans le fichier /etc/kibana/kibana.yml :
[…] xpack.encryptedSavedObjects.encryptionKey: caeb7879368e3dd66d7302f6810daec1 xpack.reporting.encryptionKey: c1c89f500966ac710f7fa5eaf2939976 xpack.security.encryptionKey: e1458d710ffb321e4a4f4eb792c78b2b
  • Obtenir le mot de passe du conteneur http.p12 :
root@host:~# /usr/share/elasticsearch/bin/elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_password 592l_UJGSXmliJIvuokDab
  • Extraire les certificats nĂ©cessaires :
root@host:~# cd /etc/kibana/ root@host:~# openssl pkcs12 -in /etc/elasticsearch/certs/http.p12 -out server.crt -clcerts -nokeys Enter Import Password:592l_UJGSXmliJIvuokDab root@host:~# openssl pkcs12 -in /etc/elasticsearch/certs/http.p12 -out server.key -nocerts -nodes Enter Import Password:592l_UJGSXmliJIvuokDab root@host:~# chown root:kibana /etc/kibana/server.* root@host:~# chmod g+r /etc/kibana/server.*
  • Éditer le fichier /etc/kibana/kibana.yml :
server.ssl.enabled: true server.ssl.certificate: /etc/kibana/server.crt server.ssl.key: /etc/kibana/server.key
  • RedĂ©marrer le service kibana :
root@host:~# systemctl restart kibana.service

Attendre quelques secondes puis se connecter Ă  kibana Ă  l'adresse https://X.X.X.X:5601

DĂ©marrage automatique

Pour que les services Elasticsearch et Kibana se lancent au démarrage, nous avons besoin de procéder à quelques paramétrages supplémentaires.

Elasticsearch

  • Activer le dĂ©marrage automatique du service Elasticsearch :
root@host:~# systemctl enable elasticsearch.service

Kibana

  • Activer le dĂ©marrage automatique du service Kibana :
root@host:~# systemctl enable kibana.service

Fichiers de Log

  • Elasticsearch :
root@host:~# tail /var/log/elasticsearch/elasticsearch.log
  • Kibana :
root@host:~# tail /var/log/kibana/kibana.log
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Contact :

adresse mail de contact