ElastÄ«ga zem slēdzenes un atslēgas: iespējo Elasticsearch klastera droŔības opcijas, lai piekļūtu no iekÅ”puses un ārpuses

ElastÄ«ga zem slēdzenes un atslēgas: iespējo Elasticsearch klastera droŔības opcijas, lai piekļūtu no iekÅ”puses un ārpuses

Elastic Stack ir labi zināms rÄ«ks SIEM sistēmu tirgÅ« (patiesÄ«bā ne tikai viņiem). Tas var apkopot daudz dažāda izmēra datu, gan sensitÄ«vu, gan ne pārāk sensitÄ«vu. Nav pilnÄ«gi pareizi, ja piekļuve paÅ”iem Elastic Stack elementiem nav aizsargāta. Pēc noklusējuma visi elastÄ«gie elementi (Elasticsearch, Logstash, Kibana un Beats kolekcionāri) darbojas ar atvērtiem protokoliem. Un paŔā Kibanā autentifikācija ir atspējota. Visas Ŕīs mijiedarbÄ«bas var nodroÅ”ināt, un Å”ajā rakstā mēs jums pateiksim, kā to izdarÄ«t. ĒrtÄ«bas labad mēs sadalÄ«jām stāstÄ«jumu 3 semantiskos blokos:

  • Uz lomu balstÄ«ts datu piekļuves modelis
  • Datu droŔība Elasticsearch klasterÄ«
  • Datu aizsardzÄ«ba ārpus Elasticsearch klastera

Sīkāka informācija zem griezuma.

Uz lomu balstīts datu piekļuves modelis

Ja instalējat Elasticsearch un nekādā veidā to neregulējat, piekļuve visiem indeksiem bÅ«s pieejama ikvienam. Nu, vai tie, kas var izmantot čokuroÅ”anās. Lai no tā izvairÄ«tos, Elasticsearch ir paraugs, kas ir pieejams, sākot ar pamata abonementu (kas ir bezmaksas). Shematiski tas izskatās apmēram Ŕādi:

ElastÄ«ga zem slēdzenes un atslēgas: iespējo Elasticsearch klastera droŔības opcijas, lai piekļūtu no iekÅ”puses un ārpuses

Kas ir bildē

  • Lietotāji ir visi, kas var pieteikties, izmantojot savus akreditācijas datus.
  • Loma ir tiesÄ«bu kopums.
  • TiesÄ«bas ir privilēģiju kopums.
  • Privilēģijas ir atļaujas rakstÄ«t, lasÄ«t, dzēst utt. (Pilns privilēģiju saraksts)
  • Resursi ir indeksi, dokumenti, lauki, lietotāji un citas krātuves entÄ«tijas (dažu resursu lomas modelis ir pieejams tikai ar maksas abonementiem).

Pēc noklusējuma Elasticsearch ir kastes lietotāji, kam tie ir pievienoti kastes lomas. Kad esat iespējojis droŔības iestatÄ«jumus, varat nekavējoties sākt tos lietot.

Lai iespējotu droŔību Elasticsearch iestatÄ«jumos, tas jāpievieno konfigurācijas failam (pēc noklusējuma tas ir elasticsearch/config/elasticsearch.yml) jauna rinda:

xpack.security.enabled: true

Pēc konfigurācijas faila maiņas palaidiet vai restartējiet Elasticsearch, lai izmaiņas stātos spēkā. Nākamais solis ir paroļu pieŔķirÅ”ana lodziņa lietotājiem. DarÄ«sim to interaktÄ«vi, izmantojot tālāk norādÄ«to komandu:

[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]

Pārbaude:

[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

Varat paglaudÄ«t sev pa muguru ā€“ iestatÄ«jumi Elasticsearch pusē ir pabeigti. Tagad ir pienācis laiks konfigurēt Kibana. Ja palaižat to tagad, parādÄ«sies kļūdas, tāpēc ir svarÄ«gi izveidot atslēgu krātuvi. Tas tiek darÄ«ts divās komandās (lietotājs kibana un Elasticsearch paroles izveides solÄ« ievadÄ«tā parole):

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

Ja viss ir pareizi, Kibana sāks prasÄ«t lietotājvārdu un paroli. Pamata abonementā ir iekļauts paraugs, kura pamatā ir iekŔējie lietotāji. Sākot ar Gold, jÅ«s varat savienot ārējās autentifikācijas sistēmas - LDAP, PKI, Active Directory un Single sign-on sistēmas.

ElastÄ«ga zem slēdzenes un atslēgas: iespējo Elasticsearch klastera droŔības opcijas, lai piekļūtu no iekÅ”puses un ārpuses

Piekļuves tiesÄ«bas objektiem Elasticsearch iekÅ”pusē var arÄ« ierobežot. Tomēr, lai to izdarÄ«tu ar dokumentiem vai laukiem, jums bÅ«s nepiecieÅ”ams maksas abonements (Ŕī greznÄ«ba sākas ar platÄ«na lÄ«meni). Å ie iestatÄ«jumi ir pieejami Kibana saskarnē vai izmantojot DroŔības API. Varat pārbaudÄ«t, izmantojot jau pazÄ«stamo Dev Tools izvēlni:

Lomas veidoŔana

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

Lietotāja izveide

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

Datu droŔība Elasticsearch klasterī

Kad Elasticsearch darbojas klasterÄ« (kas ir izplatÄ«ts), droŔības iestatÄ«jumi klasterÄ« kļūst svarÄ«gi. DroÅ”ai saziņai starp mezgliem Elasticsearch izmanto TLS protokolu. Lai iestatÄ«tu droÅ”u mijiedarbÄ«bu starp tām, jums ir nepiecieÅ”ams sertifikāts. Mēs Ä£enerējam sertifikātu un privāto atslēgu PEM formātā:

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

Pēc iepriekÅ” minētās komandas izpildÄ«Å”anas direktorijā /../elasticsearch parādÄ«sies arhÄ«vs elastic-stack-ca.zip. Tā iekÅ”pusē atradÄ«sit sertifikātu un privāto atslēgu ar paplaÅ”inājumiem crt Šø taustiņŔ attiecÄ«gi. Ieteicams tos ievietot koplietotā resursā, kuram jābÅ«t pieejamam no visiem klastera mezgliem.

Katram mezglam tagad ir nepiecieÅ”ami savi sertifikāti un privātās atslēgas, pamatojoties uz tiem, kas atrodas koplietotajā direktorijā. Izpildot komandu, jums tiks lÅ«gts iestatÄ«t paroli. Varat pievienot papildu opcijas -ip un -dns, lai pilnÄ«bā pārbaudÄ«tu mijiedarbojoÅ”os mezglus.

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

Komandas izpildes rezultātā saņemsim sertifikātu un privāto atslēgu PKCS#12 formātā, aizsargātu ar paroli. Atliek tikai pārvietot ģenerēto failu p12 uz konfigurācijas direktoriju:

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

Pievienojiet sertifikātam paroli Ŕādā formātā p12 atslēgu krātuvē un uzticamÄ«bas krātuvē katrā mezglā:

[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

Jau zināms elasticearch.yml Atliek tikai pievienot rindas ar sertifikāta datiem:

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

Mēs palaižam visus Elasticsearch mezglus un izpildām cirtot. Ja viss tika izdarīts pareizi, tiks atgriezta atbilde ar vairākiem mezgliem:

[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

Ir vēl viena droŔības iespēja - IP adreÅ”u filtrÄ“Å”ana (pieejama abonementos no Zelta lÄ«meņa). Ä»auj izveidot baltos sarakstus ar IP adresēm, no kurām jums ir atļauts piekļūt mezgliem.

Datu aizsardzība ārpus Elasticsearch klastera

Ārpus klastera nozÄ«mē ārējo rÄ«ku savienoÅ”anu: Kibana, Logstash, Beats vai citus ārējos klientus.

ElastÄ«ga zem slēdzenes un atslēgas: iespējo Elasticsearch klastera droŔības opcijas, lai piekļūtu no iekÅ”puses un ārpuses

Lai konfigurētu https atbalstu (nevis http), pievienojiet jaunas rindiņas vietnei 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

Jo Sertifikāts ir aizsargāts ar paroli, pievienojiet to atslēgu krātuvei un uzticamības krātuvei katrā mezglā:

[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

Pēc atslēgu pievienoÅ”anas Elasticsearch mezgli ir gatavi izveidot savienojumu, izmantojot https. Tagad tos var palaist.

Nākamais solis ir izveidot atslēgu, lai savienotu Kibana un pievienotu to konfigurācijai. Pamatojoties uz sertifikātu, kas jau atrodas koplietotajā direktorijā, mēs ģenerēsim sertifikātu PEM formātā (PKCS#12 Kibana, Logstash un Beats vēl neatbalsta):

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

Atliek tikai izsaiņot izveidotās atslēgas mapē ar Kibana konfigurāciju:

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

Atslēgas ir, tāpēc atliek tikai mainÄ«t Kibana konfigurāciju, lai tā sāktu tās lietot. Konfigurācijas failā kibana.yml mainiet http uz https un pievienojiet rindas ar SSL savienojuma iestatÄ«jumiem. Pēdējās trÄ«s rindas konfigurē droÅ”u saziņu starp lietotāja pārlÅ«kprogrammu un 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

Tādējādi iestatÄ«jumi ir pabeigti un piekļuve datiem Elasticsearch klasterÄ« ir Å”ifrēta.

Ja jums ir jautājumi par Elastic Stack iespējām attiecībā uz bezmaksas vai maksas abonementiem, uzraudzības uzdevumiem vai SIEM sistēmas izveidi, atstājiet pieprasījumu atsauksmju veidlapa mūsu mājas lapā.

Vairāk mÅ«su rakstu par Elastic Stack on HabrĆ©:

Izpratne par maŔīnmācÄ«Å”anos elastÄ«gajā kaudzē (pazÄ«stams arÄ« kā Elasticsearch, arÄ« ELK)

Elasticsearch izmēru noteikÅ”ana

Avots: www.habr.com

Pievieno komentāru