ELK Stack – X-Pack
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:
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.