Hi everybody,

Cette série de posts portera sur la pile Elastic (Elasticsearch, Logstash et Kibana).

 

Introduction

Ces trois éléments ont des rôles précis :

  • Logstash : collecte, aggrège des évènements et envoie ceeux-ci sous une forme particulière (parse des données) à Elasticsearch
  • Elasticsearch : stocke et indexe ces évènements
  • Kibana : permet de visualiser ces évènements, effectuer ces recherches en temps réel

Ces trois couches sont gratuites. Il est possible d'ajouter à la pile Elastic, X-pack qui propose plusieurs sous-modules [1] : Sécurité (ex-Shield), Alerting(ex-watcher), Monitoring(ex-Marvel), Reporting et Graph. X-pack est un module payant; mais il est possible d'évaluer cet outil pendant 30 jours.

Enfin, Elastic Cloud permet de tester ELK et X-pack.

Cette série de trois articles permettra la mise en place d'ELK afin de visualiser les rapports Nessus. Le but étant d'identifier rapidement si des vulnérabilités ont été corrigées entre deux scans. Dans ce premier article, nous nous interesserons à l'installation d'Elasticsearch 5.2.2.

 

Prérequis

Il existe une liste détaillée d'éléments à prendre en compte lors de l'installation sur un serveur de production. Pour ce faire, consulter [2]. Elastic est disponible sous plusieurs plateformes [3] (Windows, Linux, Docker, Puppet, Chef, Ansible).

Dans notre exemple (attention ce sont des valeurs pour une maquette de test), nous utiliserons :

  • 1 serveur Debian 8,
  • 2 Go de RAM,
  • 1 processeur 2 coeurs et
  • 60 Go d'espace disque.

 

Installation de Java

Il est recommandé d'utiliser Java 8. Pour cela, nous allons créer le fichier /etc/apt/sources.list.d/webupd8team-java.list et y ajouter ces deux lignes:

deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main
deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main

 

Puis nous executons la commande suivante afin de "faire confiance" à la clé de signature:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886

 

Enfin, nous effectuons une mise à jour et installons java 8:

apt-get update && apt-get install oracle-java8-installer

 

Pour vérifier la version installée, executer la commande java -version:

java version "1.8.0_121"

Java(TM) SE Runtime Environment (build 1.8.0_121-b13)

Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

 

 

Installation d'Elasticsearch

Nous commençons pas récuperer le package sur le repertoire d'Elastic:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.2.deb

 

Verifier que l'empreinte de ce packqge correspond à la valeur publiée ici par Elastic Team [4]: sha1sum elasticsearch-5.2.2.deb

b0921eadb8a920ef6bc1cf717e5fb0cea4085108 elasticsearch-5.2.2.deb

 

Pour démarrer l'installation, executer cette commande: dpkg -i elasticsearch-5.2.2.deb

Selecting previously unselected package elasticsearch.

(Reading database ... 36361 files and directories currently installed.)

Preparing to unpack elasticsearch-5.2.2.deb ...

Creating elasticsearch group... OK

Creating elasticsearch user... OK

Unpacking elasticsearch (5.2.2) ...

Setting up elasticsearch (5.2.2) ...

Processing triggers for systemd (215-17+deb8u6) ...

 

 

Démarrage - statut

Elasticsearch n'est pas démarré automatiquement après installation. Il faut utiliser syv init ou systemd pour le démarrer.

Pour une machine Debian ce sera systemd car la commande ps -p 1 renvoie "systemd"

ps -p 1

   PID TTY TIME     CMD

   1   ?   00:00:01 systemd

 

Démarrage d'Elasticsearch lors du lancement de la machine Debian

/bin/systemctl daemon-reload

/bin/systemctl enable elasticsearch.service

Si vous utilisez SysV init :

update-rc.d elasticsearch defaults 95 10

 

Démarrer elasticsearch

systemctl start elasticsearch.service

Si vous utilisez SysV init :

sudo -i service elasticsearch start

 

Arrêter elasticsearch

systemctl stop elasticsearch.service

Si vous utilisez SysV init :

sudo -i service elasticsearch stop

 

Statut d'elasticsearch

systemctl status elasticsearch.service

 

Nous obtenons ces lignes. Vous devez voir le statut active(running):

root@elk:~# systemctl status elasticsearch.service

   elasticsearch.service - Elasticsearch

   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled)

   Active: active (running) since Fri 2017-03-24 23:28:13 CET; 2s ago

     Docs: http://www.elastic.co

Process: 10869 ExecStartPre=/usr/share/elasticsearch/bin/elasticsearch-systemd-pre-exec (code=exited, status=0/SUCCESS)

Main PID: 10871 (java)

   CGroup: /system.slice/elasticsearch.service

           └─10871 /usr/bin/java -Xms2g -Xmx2g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -server -Xss1m -Djava.awt.headless=true -Dfile....

Mar 24 23:28:13 elk systemd[1]: Started Elasticsearch.

 

Gestion des logs d'Elasticsearch

Les informations relatives à systemd peuvent être logguées via la commande journalctl. Il faut alors enlever l'option --quiet de la commande ExecStart dans le fichier /usr/lib/systemd/system/elasticsearch.service.

Pour cela, nous commeçons par arrêter le service elasticsearch : systemctl stop elasticsearch.service. Puis nous modifions la section ExecStart dans ce fichier:

ExecStart=/usr/share/elasticsearch/bin/elasticsearch \

                      -p ${PID_DIR}/elasticsearch.pid \

                        -Edefault.path.logs=${LOG_DIR} \

                        -Edefault.path.data=${DATA_DIR} \

                          -Edefault.path.conf=${CONF_DIR}

 

Enfin, nous redémarrons le service:

systemctl daemon-reload

systemctl start elasticsearch.service

 

Pour afficher les logs d'elasticsearch : journalctl --unit elasticsearch

Pour affiher les logs d'elasticsearch depuis le 24/03/2017 à 23h39m22s : journalctl --unit elasticsearch --since "2017-03-24 23:39:22"

-- Logs begin at Fri 2017-03-24 21:51:55 CET, end at Fri 2017-03-24 23:41:27 CET. --

Mar 24 23:39:22 elk elasticsearch[11146]: [2017-03-24T23:39:22,876][INFO ][o.e.c.s.ClusterService   ] [V5r1Qx0] new_master {V5r1Qx0}{V5r1Qx0GTzqY28rk7xQXag}{Ueuzd9DORpiFUbZs8cmC-A}{127.0.0.1}{127.0.0.1:9300}, reason: zen-disco-elected-as

Mar 24 23:39:22 elk elasticsearch[11146]: [2017-03-24T23:39:22,945][INFO ][o.e.g.GatewayService     ] [V5r1Qx0] recovered [0] indices into cluster_state

Mar 24 23:39:22 elk elasticsearch[11146]: [2017-03-24T23:39:22,989][INFO ][o.e.h.HttpServer         ] [V5r1Qx0] publish_address {127.0.0.1:9200}, bound_addresses {[::1]:9200}, {127.0.0.1:9200}

Mar 24 23:39:22 elk elasticsearch[11146]: [2017-03-24T23:39:22,990][INFO ][o.e.n.Node               ] [V5r1Qx0] started

lines 1-5/5 (END)

Vous pouvez par exemple constater que nous avons une ligne "started" dans ces logs.

 

Test connexion Elasticsearch

Par défaut Elasticsearch écoute sur le port 9200. Pour effectuer un test de connexion, l'outil "curl" peut être utilisé ou un navigateur web.

curl localhost:9200

{

"name" : "V5r1Qx0",

"cluster_name" : "elasticsearch",

"cluster_uuid" : "l1D5aGRqTP-YqVfdRQdnIg",

"version" : {

   "number" : "5.2.2",

   "build_hash" : "f9d9b74",

   "build_date" : "2017-02-24T17:26:45.835Z",

   "build_snapshot" : false,

   "lucene_version" : "6.4.1"

},

"tagline" : "You Know, for Search"

}

Nous retrouvons ici quelques informations sur le nom du cluster, son identifiant, la version d'Elasticsearch, la version de Lucene,etc.

 

Adresse d'écoute

Pour personnaliser l'adresse IP et/ou le port d'écoute, il faut modifier le fichier de configuration d'Elasticsearch /etc/elasticsearch/elasticsearch.yml

network.host: 192.168.154.141

http.port: 9200

 

Puis executer ces deux commandes pour le redémarrage du service elasticsearch

systemctl daemon-reload

systemctl start elasticsearch.service

 

 

Conclusion

Nous avons terminé l'installation d'Elasticsearch. Dans le prochain article, nous verrons comment installer et configurer Logstash. Pour aller plus loin dans la configuration d'Elasticsearch, vous pouvez consulter [5-7].

 

See you soon...

Michel

 

Ressources

liens consultés entre le 22/03/2017 et le 01/04/2017

1. https://www.elastic.co/fr/products/x-pack

2. https://www.elastic.co/guide/en/elasticsearch/guide/current/hardware.html

3. https://www.elastic.co/guide/en/elasticsearch/reference/current/install-elasticsearch.html

4. https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.2.deb.sha1

5. https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html

6. https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html

7. https://www.elastic.co/guide/en/elasticsearch/reference/current/system-config.html

Add comment

You are encouraged to comment. However, I will exercise my right to moderate and edit comments which are offensive or not constructive.


Security code
Refresh