ELK Stack – X-Pack

Published by Lello on

Arricchiamo il nostro stack Elastic con l’installazione di X-Pack, un’estensione che aggiunge sicurezza e numerose feature importanti (alerting, monitoring, reporting, search profiler, Grok Debugger, machine learning, zoom levels in Elastic Maps Service, dedicated APM UIs, …).

In realtà, X-Pack è già compreso nella nostra installazione  ma di default, è disabilitato e dovremo fare alcune modifiche sia ad Elasticsearch che a Kibana, per abilitarlo e renderne sfruttabili le feature messe a disposizione.

Inizialmente fermiamo i servizi Elasticsearch e Kibana:

# systemctl stop kibana elasticsearch

Modifichiamo la configurazione di Elasticsearch (/etc/elasticsearch/elasticsearch.yml):

xpack.security.enabled: true                            <== abilitazione X-Pack
xpack.security.authc.realms.native.native1.order: 0     <== abilitazione della modalità di autenticazione come native (user/pwd)
xpack.security.authc.api_key.enabled: true              <== abilitazione delle built-in API key service
xpack.security.authc.api_key.hashing.algorithm: bcrypt  <== algoitmo usato per rendere sicure le API (default bcrypt)
xpack.monitoring.enabled: true                          <== abilitazione del monitoring per in nodo Elasticsearch
xpack.monitoring.collection.enabled: true               <== abilitazione della data-collection 

Effettuate le modifiche al file di configurazione, riavviamo Elasticsearch:

# systemctl start elasticsearch

Esistono degli account built-in che possono essere utilizzati per scopi diversi; tali account non possono essere utilizzati fino a quando non si modifica la password ad essi associata. Gli account built-in sono i seguenti:

  • elastic: superuser del nodo Elasticsearch;
  • apm_system: utente che il server APM utilizza per memorizzare le informazioni in Elasticsearch;
  • kibana: utente di amministrazione dell’interfaccia Kibana;
  • logstash_system: utente per la gestione dei dati del package Logstash;
  • beats_system: utente utilizzato dai Beats per memorizzare le informazioni in Elasticsearch;
  • remote_monitoring_user: utente utilizzato da Metricbeat per raccogliere e inviare ad Elasticsearch le informazioni di monitoraggio;

Per un elenco degli utenti e delle relative funzionalità potete consultare questa pagina. Procediamo al cambiamento delle password degli utenti indicati precedentemente:

# /usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y

Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana]:
Reenter password for [kibana]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]

Rcordatevi le password che avete assegnato ad ogni utente 🙂

Modifichiamo ora la configurazione di Kibana (/etc/kibana/kibana.yml), per riflettere il cambiamento di password dell’utente kibana e per abilitare le feature dell’X-Pack:

elasticsearch.username: "kibana"                                              <== utente built-in utilizzato da Kibana per comunicare con Elasticsearch
elasticsearch.password: "kibana-new-pass"                                     <== come impostata al passo precedente
xpack.security.encryptionKey: "12345678901234567890123456789012"              <== chiave di crittografia di 32 char (almeno)
xpack.encryptedSavedObjects.encryptionKey: "09876543210987654321098765432109" <== chiave di crittografia di 32 char (almeno) utilizzati per criptare gli oggetti SIEM

Avviamo Kibana:

# systemctl start kibana

Colleghiamoci all’interfaccia di Kibana (http://192.168.xxx.xxx:5601); questa volta ci verrà chiesta un’autenticazione. Inseriamo le credenziali dell’utente elastic (in questo modo entreremo come utente superuser del nodo Elasticsearch), come modificate precedentemente:

 

Kibana login

Procediamo ora alla creazione di nuovi ruoli e utenti (tra cui uno che utilizzeremo come admin/superuser del nodo), che ci serviranno per configurare successivamente i Beats.

Management –> Security –> Roles –> Create role:

Rolename                         filebeat_setup
Cluster privileges               monitor + manage_ilm + manage_ml
index.name                       filebeat-*
index.privileges                 manage + read

Rolename                         filebeat_writer
Cluster privileges               monitor + read_ilm + cluster:admin/ingest/pipeline/get + cluster:admin/ingest/pipeline/put + cluster:admin/ilm/put
index.name                       filebeat-*
index.privileges                 create_doc + view_index_metadata + create_index

Management –> Security –> Users –> Create user:

Username          admin
password          <scelta da voi>
Roles             superuser

Username          filebeat_setup
password          <scelta da voi>
Roles             filebeat_setup + kibana_user + ingest_admin + beats_admin

Username          filebeat_writer
password          <scelta da voi>
Roles             filebeat_writer

Il nostro Stack è ora configurato anche con l’aggiunta delle feature X-Pack; possiamo procedere alla raccolta ed analisi dei dati provenienti dai Beats.

 

← ELK Stack – Installazione Kibana

ELK– Installazione Filebeat →

ELK – Installazione Auditbeat →