Elastis handapeun konci sareng konci: ngamungkinkeun pilihan kaamanan klaster Elasticsearch pikeun aksés ti jero sareng luar

Elastis handapeun konci sareng konci: ngamungkinkeun pilihan kaamanan klaster Elasticsearch pikeun aksés ti jero sareng luar

Elastic Stack mangrupikeun alat anu terkenal di pasar sistem SIEM (saleresna, sanés ngan ukur aranjeunna). Bisa ngumpulkeun loba data béda-ukuran, duanana sénsitip sarta teu pisan sénsitip. Teu sagemblengna bener lamun aksés ka elemen Elastis Stack sorangan teu ditangtayungan. Sacara standar, sadaya elemen Elastic out-of-the-box (Elasticsearch, Logstash, Kibana, sareng kolektor Beats) dijalankeun dina protokol kabuka. Sareng di Kibana sorangan, auténtikasi ditumpurkeun. Sadaya interaksi ieu tiasa diamankeun sareng dina tulisan ieu kami bakal nyarioskeun ka anjeun kumaha ngalakukeun ieu. Pikeun genah, urang ngabagi narasi kana 3 blok semantik:

  • Modél aksés data dumasar-peran
  • Kaamanan data dina klaster Elasticsearch
  • Ngamankeun data di luar klaster Elasticsearch

Rinci handapeun cut.

Modél aksés data dumasar-peran

Upami anjeun masang Elasticsearch sareng henteu nyetél éta dina cara naon waé, aksés ka sadaya indéks bakal kabuka pikeun sadayana. Nya, atanapi anu tiasa nganggo curl. Pikeun ngahindarkeun ieu, Elasticsearch gaduh panutan anu sayogi dimimitian ku langganan Dasar (anu gratis). Schematically eta kasampak kawas kieu:

Elastis handapeun konci sareng konci: ngamungkinkeun pilihan kaamanan klaster Elasticsearch pikeun aksés ti jero sareng luar

Naon dina gambar

  • Pamaké nyaéta sadayana anu tiasa log in nganggo kredensialna.
  • Peran mangrupikeun sakumpulan hak.
  • Hak mangrupikeun sakumpulan hak istimewa.
  • Hak husus nyaéta idin pikeun nulis, maca, ngahapus, jsb. (Daptar pinuh tina hak husus)
  • Sumberdaya nyaéta indéks, dokumén, widang, pangguna, sareng éntitas panyimpen anu sanés (panutan pikeun sababaraha sumber ngan sayogi sareng langganan anu mayar).

Sacara standar Elasticsearch boga pamaké kotak, nu aranjeunna napel kalungguhan kotak. Sakali anjeun ngaktipkeun setelan kaamanan, anjeun bisa mimitian nganggo aranjeunna langsung.

Pikeun ngaktifkeun kaamanan dina setélan Elasticsearch, anjeun kedah nambihanana kana file konfigurasi (sacara standar ieu elasticsearch/config/elasticsearch.yml) baris anyar:

xpack.security.enabled: true

Saatos ngarobih file konfigurasi, luncurkeun atanapi balikan deui Elasticsearch supados parobihan tiasa dianggo. Lengkah saterusna nyaeta assigning kecap akses ka pamaké kotak. Hayu urang ngalakukeun ieu sacara interaktif nganggo paréntah di handap ieu:

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

Kami cek:

[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

Anjeun tiasa nepukkeun diri dina tonggong - setélan di sisi Elasticsearch parantos réngsé. Ayeuna waktuna pikeun ngonpigurasikeun Kibana. Upami anjeun ngajalankeun ayeuna, kasalahan bakal muncul, janten penting pikeun nyiptakeun toko konci. Hal ieu dilakukeun dina dua paréntah (user kibana sareng kecap akses anu diasupkeun dina léngkah nyiptakeun kecap konci dina Elasticsearch):

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

Upami sadayana leres, Kibana bakal ngamimitian naroskeun login sareng kecap akses. Langganan Dasar kalebet panutan dumasar kana pangguna internal. Dimimitian ku Emas, anjeun tiasa nyambungkeun sistem auténtikasi éksternal - LDAP, PKI, Active Directory sareng Single sign-on system.

Elastis handapeun konci sareng konci: ngamungkinkeun pilihan kaamanan klaster Elasticsearch pikeun aksés ti jero sareng luar

Hak aksés ka objék di jero Elasticsearch ogé tiasa diwatesan. Nanging, pikeun ngalakukeun hal anu sami pikeun dokumén atanapi lapangan, anjeun peryogi langganan anu mayar (mewah ieu dimimitian ku tingkat Platinum). Setelan ieu sadia dina panganteur Kibana atanapi via API Kaamanan. Anjeun tiasa pariksa ngaliwatan menu Dev Tools anu parantos akrab:

Nyiptakeun peran

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

Nyiptakeun 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"
  }
}

Kaamanan data dina klaster Elasticsearch

Nalika Elasticsearch dijalankeun dina kluster (anu umum), setélan kaamanan dina kluster janten penting. Pikeun komunikasi aman antara titik, Elasticsearch ngagunakeun protokol TLS. Pikeun nyetél interaksi aman antara aranjeunna, anjeun peryogi sertipikat. Kami ngahasilkeun sertipikat sareng konci pribadi dina format PEM:

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

Saatos ngalaksanakeun paréntah di luhur, dina diréktori /../elasticsearch arsip bakal muncul elastis-tumpukan-ca.zip. Di jerona anjeun bakal mendakan sertipikat sareng konci pribadi sareng ekstensi CRT и konci masing-masing. Disarankeun nempatkeun aranjeunna dina sumber anu dibagikeun, anu kedah diaksés tina sadaya titik dina kluster.

Unggal titik ayeuna peryogi sertipikat sorangan sareng konci pribadi dumasar kana diréktori anu dibagikeun. Nalika ngalaksanakeun paréntah, anjeun bakal dipenta pikeun nyetél kecap konci. Anjeun tiasa nambihan pilihan tambahan -ip sareng -dns pikeun verifikasi lengkep titik interaksi.

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

Salaku hasil tina executing paréntah, urang bakal nampa sertipikat sarta konci swasta di PKCS # 12 format, ditangtayungan ku sandi a. Sadaya anu tetep nyaéta pikeun mindahkeun file anu dihasilkeun p12 kana diréktori konfigurasi:

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

Tambahkeun kecap akses kana sertipikat dina format p12 dina keystore sareng truststore dina unggal titik:

[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

Geus kanyahoan elasticsearch.yml Kabéh anu tetep nyaéta pikeun nambahkeun garis kalawan data sertipikat:

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

Kami ngaluncurkeun sadaya titik Elasticsearch sareng laksanakeun curl. Upami sadayana dilakukeun leres, réspon sareng sababaraha titik bakal dipulangkeun:

[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

Aya pilihan kaamanan anu sanés - nyaring alamat IP (sayogi dina langganan tina tingkat Emas). Ngidinan anjeun ngadamel daptar bodas alamat IP dimana anjeun diidinan ngaksés titik.

Ngamankeun data di luar klaster Elasticsearch

Luar klaster hartina nyambungkeun parabot éksternal: Kibana, Logstash, ngéléhkeun atanapi klien éksternal séjén.

Elastis handapeun konci sareng konci: ngamungkinkeun pilihan kaamanan klaster Elasticsearch pikeun aksés ti jero sareng luar

Pikeun ngonpigurasikeun dukungan pikeun https (gaganti http), tambahkeun garis anyar kana 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

Sabab Sertipikat ditangtayungan sandi, tambahkeun ka keystore sareng truststore dina unggal titik:

[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

Saatos nambihan konci, titik Elasticsearch siap nyambung via https. Ayeuna aranjeunna tiasa diluncurkeun.

Lengkah saterusna nyaéta nyieun konci pikeun nyambungkeun Kibana tur nambahkeun kana konfigurasi nu. Dumasar kana sertipikat anu parantos aya dina diréktori anu dibagikeun, kami bakal ngahasilkeun sertipikat dina format PEM (PKCS # 12 Kibana, Logstash sareng Beats henteu acan ngadukung):

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

Sadaya anu tetep nyaéta ngabongkar konci anu diciptakeun kana polder kalayan konfigurasi Kibana:

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

Kenopna aya, ku kituna anu tinggaleun nyaéta ngarobih konfigurasi Kibana supados tiasa dianggo. Dina file konfigurasi kibana.yml, robah http kana HTTPS tur nambahkeun garis kalawan setelan sambungan SSL. Tilu garis panungtungan ngonpigurasikeun komunikasi aman antara browser pamaké sarta 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

Ku kituna, setélan réngsé sarta aksés ka data dina klaster Elasticsearch énkripsi.

Upami anjeun gaduh patarosan ngeunaan kamampuan Elastic Stack dina langganan gratis atanapi mayar, ngawas tugas atanapi nyiptakeun sistem SIEM, tinggalkeun pamundut ka formulir eupan balik dina halaman wéb kami.

Langkung seueur tulisan kami ngeunaan Elastic Stack on Habré:

Ngartos Mesin Pembelajaran dina tumpukan elastis (aka Elasticsearch, alias ELK)

Elasticsearch ukuran

sumber: www.habr.com

Tambahkeun komentar