Elastis ing kunci lan kunci: mbisakake opsi keamanan klompok Elasticsearch kanggo akses saka njero lan njaba

Elastis ing kunci lan kunci: mbisakake opsi keamanan klompok Elasticsearch kanggo akses saka njero lan njaba

Elastic Stack minangka alat sing kondhang ing pasar sistem SIEM (sajatine, ora mung dheweke). Bisa ngumpulake akeh data ukuran beda, loro sensitif lan ora banget sensitif. Ora kabeh bener yen akses menyang unsur Elastic Stack dhewe ora dilindhungi. Kanthi gawan, kabeh unsur Elastic out-of-the-box (Elasticsearch, Logstash, Kibana, lan kolektor Beats) mbukak ing protokol mbukak. Lan ing Kibana dhewe, otentikasi dipateni. Kabeh interaksi iki bisa diamanake lan ing artikel iki kita bakal pitutur marang kowe carane nindakake iki. Kanggo penak, kita dibagi narasi dadi 3 blok semantik:

  • Model akses data adhedhasar peran
  • Keamanan data ing kluster Elasticsearch
  • Ngamanake data ing njaba kluster Elasticsearch

Rincian ing ngisor potong.

Model akses data adhedhasar peran

Yen sampeyan nginstal Elasticsearch lan ora nyetel kanthi cara apa wae, akses menyang kabeh indeks bakal mbukak kanggo kabeh wong. Inggih, utawa sing bisa nggunakake curl. Kanggo ngindhari iki, Elasticsearch duwe panutan sing kasedhiya diwiwiti kanthi langganan dhasar (sing gratis). Secara skematis katon kaya iki:

Elastis ing kunci lan kunci: mbisakake opsi keamanan klompok Elasticsearch kanggo akses saka njero lan njaba

Apa ing gambar

  • Pangguna yaiku saben wong sing bisa mlebu nggunakake kredensial.
  • Peran minangka sakumpulan hak.
  • Hak minangka sakumpulan hak istimewa.
  • Hak istimewa yaiku ijin kanggo nulis, maca, mbusak, lsp. (Dhaptar lengkap hak istimewa)
  • Sumber daya yaiku indeks, dokumen, kolom, pangguna, lan entitas panyimpenan liyane (model peran kanggo sawetara sumber daya mung kasedhiya karo langganan mbayar).

Kanthi gawan Elasticsearch wis kedhaftar kothak, sing padha ditempelake peran kothak. Sawise sampeyan ngaktifake setelan keamanan, sampeyan bisa langsung nggunakake.

Kanggo ngaktifake keamanan ing setelan Elasticsearch, sampeyan kudu nambahake menyang file konfigurasi (kanthi standar iki elasticsearch/config/elasticsearch.yml) baris anyar:

xpack.security.enabled: true

Sawise ngganti file konfigurasi, bukak utawa miwiti maneh Elasticsearch supaya owah-owahan bisa ditrapake. Langkah sabanjure menehi sandhi kanggo pangguna kothak. Ayo nindakake iki kanthi interaktif nggunakake printah ing ngisor iki:

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

Priksa:

[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

Sampeyan bisa nepuk mburi - setelan ing sisih Elasticsearch wis rampung. Saiki wektune kanggo ngatur Kibana. Yen sampeyan mbukak saiki, kesalahan bakal katon, dadi penting kanggo nggawe toko kunci. Iki rampung ing rong printah (user kibana lan sandhi sing dilebokake ing langkah nggawe sandhi ing Elasticsearch):

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

Yen kabeh wis bener, Kibana bakal miwiti njaluk login lan sandhi. Langganan dhasar kalebu panutan adhedhasar pangguna internal. Miwiti karo Emas, sampeyan bisa nyambungake sistem otentikasi eksternal - LDAP, PKI, Active Directory lan sistem mlebu Tunggal.

Elastis ing kunci lan kunci: mbisakake opsi keamanan klompok Elasticsearch kanggo akses saka njero lan njaba

Hak akses menyang obyek ing Elasticsearch uga bisa diwatesi. Nanging, kanggo nindakake perkara sing padha kanggo dokumen utawa lapangan, sampeyan butuh langganan mbayar (kemewahan iki diwiwiti kanthi tingkat Platinum). Setelan iki kasedhiya ing antarmuka Kibana utawa liwat API Keamanan. Sampeyan bisa mriksa liwat menu Alat Dev sing wis dikenal:

Nggawe peran

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

Nggawe pangguna

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

Keamanan data ing kluster Elasticsearch

Nalika Elasticsearch mlaku ing kluster (sing umum), setelan keamanan ing kluster dadi penting. Kanggo komunikasi aman antarane simpul, Elasticsearch nggunakake protokol TLS. Kanggo nyiyapake interaksi aman ing antarane, sampeyan butuh sertifikat. Kita ngasilake sertifikat lan kunci pribadi ing format PEM:

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

Sawise nglakokake printah ing ndhuwur, ing direktori /../elasticsearch arsip bakal katon elastis-stack-ca.zip. Ing njero sampeyan bakal nemokake sertifikat lan kunci pribadi kanthi ekstensi crt ΠΈ tombol mungguh. Disaranake dilebokake ing sumber daya sing dienggo bareng, sing kudu diakses saka kabeh kelenjar ing kluster.

Saben simpul saiki mbutuhake sertifikat lan kunci pribadi dhewe adhedhasar sing ana ing direktori sing dienggo bareng. Nalika nglakokake printah, sampeyan bakal dijaluk nyetel sandhi. Sampeyan bisa nambah opsi tambahan -ip lan -dns kanggo verifikasi lengkap simpul interaksi.

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

Minangka asil saka nglakokakΓ© printah, kita bakal nampa certificate lan tombol pribadi ing PKCS # 12 format, dilindhungi dening sandi. Kabeh sing isih ana yaiku mindhah file sing digawe p12 menyang direktori konfigurasi:

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

Tambah sandhi kanggo sertifikat ing format p12 ing keystore lan truststore ing saben simpul:

[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

Wis dikenal elasticsearch.yml Kabeh sing isih ana yaiku nambah garis kanthi data sertifikat:

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

Kita miwiti kabeh simpul Elasticsearch lan eksekusi nggulung. Yen kabeh wis rampung kanthi bener, respon karo sawetara simpul bakal bali:

[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

Ana opsi keamanan liyane - nyaring alamat IP (kasedhiya ing langganan saka tingkat Emas). Ngidini sampeyan nggawe dhaptar putih alamat IP saka ngendi sampeyan bisa ngakses simpul.

Ngamanake data ing njaba kluster Elasticsearch

Ing njaba kluster tegese nyambungake alat eksternal: Kibana, Logstash, Beats utawa klien eksternal liyane.

Elastis ing kunci lan kunci: mbisakake opsi keamanan klompok Elasticsearch kanggo akses saka njero lan njaba

Kanggo ngatur dhukungan kanggo https (tinimbang http), tambahake baris anyar menyang 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

Amarga Sertifikat kasebut dilindhungi sandhi, tambahake menyang keystore lan truststore ing saben simpul:

[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

Sawise nambahake tombol, simpul Elasticsearch siap nyambung liwat https. Saiki bisa diluncurake.

Langkah sabanjure yaiku nggawe tombol kanggo nyambungake Kibana lan ditambahake menyang konfigurasi. Adhedhasar sertifikat sing wis ana ing direktori sing dienggo bareng, kita bakal ngasilake sertifikat ing format PEM (PKCS#12 Kibana, Logstash lan Beats durung ndhukung):

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

Kabeh sing isih ana yaiku mbongkar kunci sing digawe menyang folder kanthi konfigurasi Kibana:

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

Tombol wis ana, dadi mung ngganti konfigurasi Kibana supaya bisa digunakake. Ing file konfigurasi kibana.yml, ngganti http kanggo https lan nambah garis karo setelan sambungan SSL. Telung baris pungkasan ngatur komunikasi aman antarane browser pangguna lan 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

Mangkono, setelan wis rampung lan akses menyang data ing kluster Elasticsearch dienkripsi.

Yen sampeyan duwe pitakon babagan kapabilitas Elastic Stack ing langganan gratis utawa mbayar, ngawasi tugas utawa nggawe sistem SIEM, tinggalake panjaluk menyang wangun umpan balik ing situs web kita

Liyane artikel kita babagan Elastic Stack on HabrΓ©:

Ngerteni Machine Learning ing Elastic Stack (alias Elasticsearch, alias ELK)

Elasticsearch ukuran

Source: www.habr.com

Add a comment