Elastic Locked Up: Abilitazione di l'Opzioni di Sicurezza di u Cluster Elasticsearch per l'accessu internu è esterno

Elastic Locked Up: Abilitazione di l'Opzioni di Sicurezza di u Cluster Elasticsearch per l'accessu internu è esterno

Elastic Stack hè un strumentu ben cunnisciutu in u mercatu di sistemi SIEM (in realtà, micca solu elli). Si pò cullà assai di dati differente-size, tramindui sensittivi è micca assai sensibili. Ùn hè micca sanu currettu se l'accessu à l'elementi Elastic Stack stessi ùn hè micca prutettu. Per automaticamente, tutti l'elementi Elastic out-of-the-box (Elasticsearch, Logstash, Kibana, è i cullettori Beats) funzionanu nantu à protokolli aperti. È in Kibana stessu, l'autentificazione hè disattivata. Tutte queste interazzione ponu esse assicurate è in questu articulu vi dicu cumu fà questu. Per comodità, avemu divisu a narrativa in 3 blocchi semantici:

  • Modellu d'accessu à e dati basatu in u rolu
  • Sicurezza di dati in un cluster Elasticsearch
  • Securità di dati fora di un cluster Elasticsearch

Dettagli sottu u cut.

Modellu d'accessu à e dati basatu in u rolu

Se installate Elasticsearch è ùn l'accorda micca in ogni modu, l'accessu à tutti l'indici serà apertu à tutti. Ebbè, o quelli chì ponu aduprà curl. Per evitari questu, Elasticsearch hà un mudellu di rolu chì hè dispunibule cuminciendu cù un abbonamentu Basic (chì hè liberu). Schematically pare qualcosa cum'è questu:

Elastic Locked Up: Abilitazione di l'Opzioni di Sicurezza di u Cluster Elasticsearch per l'accessu internu è esterno

Chì ci hè in a stampa

  • L'utilizatori sò tutti quelli chì ponu login usendu e so credenziali.
  • Un rolu hè un inseme di diritti.
  • I diritti sò un inseme di privilegi.
  • I privileggi sò permessi per scrive, leghje, sguassà, etc. (Lista cumpleta di privilegi)
  • I risorse sò indici, documenti, campi, utilizatori è altre entità di almacenamento (u mudellu di rolu per alcune risorse hè solu dispunibule cù abbonamenti pagati).

Per automaticamente, Elasticsearch hà utilizatori di scatula, à quale sò attaccati roles di scatula. Una volta attivate i paràmetri di sicurezza, pudete cumincià à aduprà immediatamente.

Per attivà a sicurità in i paràmetri di Elasticsearch, avete bisognu di aghjunghje à u schedariu di cunfigurazione (per automaticamente questu hè elasticsearch/config/elasticsearch.yml) nova linea:

xpack.security.enabled: true

Dopu avè cambiatu u schedariu di cunfigurazione, lanciate o riavvia Elasticsearch per chì i cambiamenti entranu in vigore. U prossimu passu hè di assignà password à l'utilizatori di box. Facemu questu in modu interattivu usendu u cumandimu quì sottu:

[elastic@node1 ~]$ ./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]

Verificate:

[elastic@node1 ~]$ curl -u elastic 'node1:9200/_cat/nodes?pretty'
Enter host password for user 'elastic':
192.168.0.2 23 46 14 0.28 0.32 0.18 dim * node1

Pudete pattene nantu à u spinu - i paràmetri di u latu Elasticsearch sò cumpleti. Avà hè u tempu di cunfigurà Kibana. Se l'eseguite avà, l'errori apparisceranu, per quessa hè impurtante di creà un magazinu chjave. Questu hè fattu in dui cumandamenti (user kibana è a password inserita à u passu di creazione di password in Elasticsearch):

[elastic@node1 ~]$ ./kibana/bin/kibana-keystore add elasticsearch.username
[elastic@node1 ~]$ ./kibana/bin/kibana-keystore add elasticsearch.password

Se tuttu hè currettu, Kibana cumminciarà à dumandà un login è password. L'abbonamentu Basic include un mudellu di rolu basatu annantu à l'utilizatori internu. Partendu cù Gold, pudete cunnette sistemi di autentificazione esterni - LDAP, PKI, Active Directory è Sistemi di Sign-on Single.

Elastic Locked Up: Abilitazione di l'Opzioni di Sicurezza di u Cluster Elasticsearch per l'accessu internu è esterno

I diritti d'accessu à l'uggetti in Elasticsearch ponu ancu esse limitati. Tuttavia, per fà u listessu per i ducumenti o i campi, avete bisognu di un abbunamentu pagatu (stu lussu principia cù u nivellu Platinum). Queste paràmetri sò dispunibuli in l'interfaccia Kibana o via API di sicurità. Pudete cuntrollà à traversu u menu di Dev Tools digià familiar:

Crià un rolu

PUT /_security/role/ruslan_i_ludmila_role
{
  "cluster": [],
  "indices": [
    {
      "names": [ "ruslan_i_ludmila" ],
      "privileges": ["read", "view_index_metadata"]
    }
  ]
}

Creazione di l'utilizatori

POST /_security/user/pushkin
{
  "password" : "nataliaonelove",
  "roles" : [ "ruslan_i_ludmila_role", "kibana_user" ],
  "full_name" : "Alexander Pushkin",
  "email" : "[email protected]",
  "metadata" : {
    "hometown" : "Saint-Petersburg"
  }
}

Sicurezza di dati in un cluster Elasticsearch

Quandu Elasticsearch corre in un cluster (chì hè cumunu), i paràmetri di sicurità in u cluster diventanu impurtanti. Per una cumunicazione sicura trà i nodi, Elasticsearch usa u protocolu TLS. Per stabilisce una interazione sicura trà elli, avete bisognu di un certificatu. Generemu un certificatu è chjave privata in formatu PEM:

[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-certutil ca --pem

Dopu avè eseguitu u cumandimu sopra, in u cartulare /../elasticsearch l'archiviu apparirà elastic-stack-ca.zip. Dentru truverete un certificatu è una chjave privata cù estensioni crt и chiavi rispettivamente. Hè cunsigliatu di mette in una risorsa cumuna, chì deve esse accessibile da tutti i nodi in u cluster.

Ogni nodu avà bisognu di i so certificati è e chjavi privati ​​​​basati nantu à quelli in u cartulare spartutu. Quandu eseguisce u cumandamentu, vi sarà dumandatu di stabilisce una password. Pudete aghjunghje opzioni supplementari -ip è -dns per a verificazione cumpleta di i nodi interattivi.

[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-certutil cert --ca-cert /shared_folder/ca/ca.crt --ca-key /shared_folder/ca/ca.key

In u risultatu di eseguisce u cumandamentu, riceveremu un certificatu è una chjave privata in formatu PKCS#12, prutetta da una password. Tuttu ciò chì resta hè di spustà u schedariu generatu p12 à u cartulare di cunfigurazione:

[elastic@node1 ~]$ mv elasticsearch/elastic-certificates.p12 elasticsearch/config

Aghjunghjite una password à u certificatu in u formatu p12 in keystore è truststore nantu à ogni node:

[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password

Dighjà cunnisciutu elasticsearch.yml Tuttu ciò chì resta hè di aghjunghje linee cù dati di certificatu:

xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

Lancemu tutti i nodi Elasticsearch è eseguite curl. Se tuttu hè statu fattu bè, una risposta cù parechji nodi serà tornata:

[elastic@node1 ~]$ curl node1:9200/_cat/nodes -u elastic:password                                                                                    
172.18.0.3 43 75 4 0.00 0.05 0.05 dim * node2                                                                                                                     
172.18.0.4 21 75 3 0.00 0.05 0.05 dim - node3                                                                                                                     
172.18.0.2 39 75 4 0.00 0.05 0.05 dim - node1

Ci hè una altra opzione di sicurità - filtrazione di l'indirizzu IP (dispunibule in abbonamenti da u livellu Gold). Permette di creà listi bianchi di indirizzi IP da quale avete permessu di accede à i nodi.

Securità di dati fora di un cluster Elasticsearch

Fora di u cluster significa cunnessione di strumenti esterni: Kibana, Logstash, Beats o altri clienti esterni.

Elastic Locked Up: Abilitazione di l'Opzioni di Sicurezza di u Cluster Elasticsearch per l'accessu internu è esterno

Per cunfigurà u supportu per https (invece di http), aghjunghje novi linee à elasticsearch.yml:

xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: elastic-certificates.p12
xpack.security.http.ssl.truststore.path: elastic-certificates.p12

Perchè U certificatu hè prutettu da password, aghjunghje à u keystore è truststore in ogni node:

[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-keystore add xpack.security.http.ssl.truststore.secure_password

Dopu avè aghjustatu e chjave, i nodi Elasticsearch sò pronti per cunnette via https. Avà ponu esse lanciati.

U prossimu passu hè di creà una chjave per cunnette Kibana è aghjunghje à a cunfigurazione. Basatu annantu à u certificatu chì hè digià situatu in u cartulare spartutu, genereremu un certificatu in formatu PEM (PKCS # 12 Kibana, Logstash è Beats ùn sò ancu supportati):

[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-certutil cert --ca-cert /shared_folder/ca/ca.crt --ca-key /shared_folder/ca/ca.key --pem

Tuttu ciò chì resta hè di sbulicà e chjave create in u cartulare cù a cunfigurazione Kibana:

[elastic@node1 ~]$ unzip elasticsearch/certificate-bundle.zip -d kibana/config

I chjavi sò quì, cusì tuttu ciò chì resta hè di cambià a cunfigurazione di Kibana in modu chì cumencia à aduprà. In u schedariu di cunfigurazione kibana.yml, cambiate http à https è aghjunghje linee cù paràmetri di cunnessione SSL. L'ultimi trè linee cunfiguranu a cumunicazione sicura trà u navigatore di l'utilizatori è Kibana.

elasticsearch.hosts: ["https://${HOSTNAME}:9200"]
elasticsearch.ssl.certificateAuthorities: /shared_folder/ca/ca.crt
elasticsearch.ssl.verificationMode: certificate
server.ssl.enabled: true
server.ssl.key: /../kibana/config/instance/instance.key
server.ssl.certificate: /../kibana/config/instance/instance.crt

Cusì, i paràmetri sò cumpletati è l'accessu à e dati in u cluster Elasticsearch hè criptatu.

Sì avete dumande nantu à e capacità di Elastic Stack nantu à abbonamenti gratuiti o pagati, attività di monitoraghju o creazione di un sistema SIEM, lasciate una dumanda à forma di feedback in u nostru situ web.

Più di i nostri articuli nantu à Elastic Stack in Habré:

Capisce l'Apprendimentu di Machine in l'Elastic Stack (aka Elasticsearch, aka ELK)

Taglie Elasticsearch

Source: www.habr.com

Add a comment