Elastic SIEM Partie I - Installer et configurer Elasticsearch et Kibana sur un serveur 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 Elasticsearch. Qui a l'avantage d'être en grande partie gratuite.

L'architecture Elastic SIEM

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

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

Installation de la suite Elasticsearch

Depuis un système Debian nous avons le choix de l'installer depuis les paquets ou via le gestionnaire de paquets apt. Nous verrons ici les deux méthodes.

Installation depuis les paquets (dpkg)

Elasticsearch

  • Télécharger le paquet Elasticsearch et son fichier de hashage sha512 associé dans /tmp/ :
root@host:~# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.12.0-amd64.deb https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.12.0-amd64.deb.sha512 -P /tmp/
  • Installer le service Elasticsearch :
root@host:~# dpkg -i /tmp/elasticsearch-7.12.0-amd64.deb

Kibana

  • Télécharger le paquet Kibana et son fichier de hashage sha512 associé dans /tmp/ :
root@host:~# wget https://artifacts.elastic.co/downloads/kibana/kibana-7.12.0-amd64.deb https://artifacts.elastic.co/downloads/kibana/kibana-7.12.0-amd64.deb.sha512 -P /tmp/
  • Installer le service Kibana :
root@host:~# dpkg -i /tmp/kibana-7.12.0-amd64.deb

Installation depuis le gestionnaire de paquets (apt)

Prérequis

  • Importer la clé PGP Elasticsearch :
root@host:~# wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
  • Installer apt-transport-https :
root@host:~# apt update && apt-get install apt-transport-https
  • Ajouter le dépot elastic :
root@host:~# echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee /etc/apt/sources.list.d/elastic-7.x.list

Elasticsearch

  • Installer Elasticsearch :
root@host:~# apt update && apt-get install elasticsearch

Kibana

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

Configuration

Elasticsearch

  • Éditer le fichier /etc/elasticsearch/elasticsearch.yml to :
    • Paramétrer l'adresse d'écoute sur «toutes» les adresses : 0.0.0.0
    • Déclaré une architecture à un nœud : single-node
    • Liste des hôtes : ["0.0.0.0"]
network.host: 0.0.0.0
discovery.type: single-node
discovery.seed_hosts: ["0.0.0.0"]
  • Toujours dans le même fichier de configuration on peut aussi donner un nom à notre nœud :
node.name: std
  • Démarrer le service :
root@host:~# systemctl start elasticsearch.service
  • Vérifier que le service elastic fonctionne :
root@host:~# curl http://127.0.0.1:9200
{
  "name" : "std",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "StdgreaTBanDKphU4S0ceg",
  "version" : {
    "number" : "7.12.0",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "ff17057114c2199c9c1bbecc727003a907c0db7a",
    "build_date" : "2021-02-15T13:44:09.394032Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Kibana

  • Éditer le fichier /etc/kibana/kibana.yml pour :
    • Paramétrer l'adresse d'écoute sur «toutes» les adresses : 0.0.0.0
server.host: "0.0.0.0"
  • Démarrer le service :
root@host:~# systemctl start kibana.service
  • Vérifier le bon fonctionnement :
root@host:~# curl -XGET 'http://localhost:9200/_cluster/health'
{"cluster_name":"elasticsearch","status":"yellow","timed_out":false,"number_of_nodes":1,"number_of_data_nodes":1,"active_primary_shards":18,"active_shards":18,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":4,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":81.81818181818183}
  • Ouvrir Firefox et entrer l'adresse http://IP_SERVER:5601/, après quelques secondes la page suivante devrait apparaitre :
ElasticSearch | Kibana : welcome to elastic

AutoStart

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

Elasticsearch

  • Parce qu'Elasticsearch est lent à démarrer, éditer le fichier /usr/lib/systemd/system/elasticsearch.service, et modifier la valeur TimeoutStartSec :
TimeoutStartSec=300
  • 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 :