Elastic chini ya kufuli na ufunguo: kuwezesha chaguzi za usalama za nguzo ya Elasticsearch kwa ufikiaji kutoka ndani na nje.

Elastic chini ya kufuli na ufunguo: kuwezesha chaguzi za usalama za nguzo ya Elasticsearch kwa ufikiaji kutoka ndani na nje.

Elastic Stack ni zana inayojulikana sana katika soko la mifumo ya SIEM (kwa kweli, sio wao tu). Inaweza kukusanya data nyingi za ukubwa tofauti, zote nyeti na zisizo nyeti sana. Si sahihi kabisa ikiwa ufikiaji wa vipengee vya Elastic Stack wenyewe haujalindwa. Kwa chaguo-msingi, vipengee vyote vya Elastic nje ya kisanduku (Elasticsearch, Logstash, Kibana, na vikusanyaji vya Beats) huendeshwa kwa itifaki wazi. Na katika Kibana yenyewe, uthibitishaji umezimwa. Maingiliano haya yote yanaweza kulindwa na katika makala hii tutakuambia jinsi ya kufanya hivyo. Kwa urahisi, tuligawa simulizi katika vizuizi 3 vya kisemantiki:

  • Muundo wa ufikiaji wa data kulingana na jukumu
  • Usalama wa data ndani ya nguzo ya Elasticsearch
  • Inalinda data nje ya nguzo ya Elasticsearch

Maelezo chini ya kukata.

Muundo wa ufikiaji wa data kulingana na jukumu

Ukisakinisha Elasticsearch na usiirekebishe kwa njia yoyote, ufikiaji wa faharasa zote utakuwa wazi kwa kila mtu. Naam, au wale ambao wanaweza kutumia curl. Ili kuepuka hili, Elasticsearch ina mfano wa kuigwa ambao unapatikana kwa kuanzia na usajili wa Msingi (ambao haulipishwi). Kwa utaratibu inaonekana kitu kama hiki:

Elastic chini ya kufuli na ufunguo: kuwezesha chaguzi za usalama za nguzo ya Elasticsearch kwa ufikiaji kutoka ndani na nje.

Kuna nini kwenye picha

  • Watumiaji ni kila mtu anayeweza kuingia kwa kutumia vitambulisho vyao.
  • Jukumu ni seti ya haki.
  • Haki ni seti ya marupurupu.
  • Haki ni ruhusa ya kuandika, kusoma, kufuta n.k. (Orodha kamili ya marupurupu)
  • Rasilimali ni faharasa, hati, sehemu, watumiaji na huluki zingine za hifadhi (mfano wa kuigwa wa baadhi ya rasilimali unapatikana tu kwa usajili unaolipishwa).

Kwa chaguo-msingi Elasticsearch ina watumiaji wa sanduku, ambayo wameunganishwa nayo majukumu ya sanduku. Baada ya kuwezesha mipangilio ya usalama, unaweza kuanza kuitumia mara moja.

Ili kuwezesha usalama katika mipangilio ya Elasticsearch, unahitaji kuiongeza kwenye faili ya usanidi (kwa chaguo-msingi hii ni elasticsearch/config/elasticsearch.yml) mstari mpya:

xpack.security.enabled: true

Baada ya kubadilisha faili ya usanidi, zindua au uanze upya Elasticsearch ili mabadiliko yaanze kutumika. Hatua inayofuata ni kukabidhi nywila kwa watumiaji wa sanduku. Wacha tufanye hivi kwa maingiliano kwa kutumia amri hapa chini:

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

Tunaangalia:

[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

Unaweza kujipiga mgongoni - mipangilio kwenye upande wa Elasticsearch imekamilika. Sasa ni wakati wa kusanidi Kibana. Ikiwa utaiendesha sasa, makosa yataonekana, kwa hiyo ni muhimu kuunda duka muhimu. Hii inafanywa kwa amri mbili (user kibana na nenosiri lililoingizwa katika hatua ya kuunda nenosiri katika Elasticsearch):

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

Ikiwa kila kitu ni sahihi, Kibana ataanza kuomba kuingia na nenosiri. Usajili wa Msingi unajumuisha mfano wa kuigwa kulingana na watumiaji wa ndani. Kuanzia na Dhahabu, unaweza kuunganisha mifumo ya nje ya uthibitishaji - LDAP, PKI, Saraka Inayotumika na mifumo ya kuingia kwa Mtu Mmoja.

Elastic chini ya kufuli na ufunguo: kuwezesha chaguzi za usalama za nguzo ya Elasticsearch kwa ufikiaji kutoka ndani na nje.

Haki za ufikiaji wa vitu ndani ya Elasticsearch pia zinaweza kupunguzwa. Walakini, kufanya vivyo hivyo kwa hati au uwanja, utahitaji usajili uliolipwa (anasa hii huanza na kiwango cha Platinum). Mipangilio hii inapatikana katika kiolesura cha Kibana au kupitia API ya Usalama. Unaweza kuangalia kupitia menyu ya Dev Tools ambayo tayari inajulikana:

Kuunda jukumu

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

Kuunda mtumiaji

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

Usalama wa data ndani ya nguzo ya Elasticsearch

Wakati Elasticsearch inaendeshwa katika nguzo (ambayo ni ya kawaida), mipangilio ya usalama ndani ya nguzo inakuwa muhimu. Kwa mawasiliano salama kati ya nodi, Elasticsearch hutumia itifaki ya TLS. Ili kusanidi mwingiliano salama kati yao, unahitaji cheti. Tunatengeneza cheti na ufunguo wa faragha katika umbizo la PEM:

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

Baada ya kutekeleza amri hapo juu, kwenye saraka /../elasticsearch kumbukumbu itaonekana elastic-stack-ca.zip. Ndani yake utapata cheti na ufunguo wa kibinafsi na viendelezi crt ΠΈ ufunguo kwa mtiririko huo. Inashauriwa kuziweka kwenye rasilimali iliyoshirikiwa, ambayo inapaswa kupatikana kutoka kwa nodi zote kwenye nguzo.

Kila nodi sasa inahitaji vyeti vyake na funguo za kibinafsi kulingana na zile zilizo kwenye saraka iliyoshirikiwa. Wakati wa kutekeleza amri, utaulizwa kuweka nenosiri. Unaweza kuongeza chaguzi za ziada -ip na -dns kwa uthibitishaji kamili wa nodi zinazoingiliana.

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

Kama matokeo ya kutekeleza amri, tutapokea cheti na ufunguo wa faragha katika muundo wa PKCS#12, unaolindwa na nenosiri. Kinachobaki ni kuhamisha faili iliyotengenezwa p12 kwa saraka ya usanidi:

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

Ongeza nenosiri kwenye cheti katika umbizo p12 katika duka la ufunguo na duka la amana kwenye kila nodi:

[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

Tayari inajulikana elasticsearch.yml Kilichobaki ni kuongeza mistari iliyo na data ya cheti:

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

Tunazindua nodi zote za Elasticsearch na kutekeleza curl. Ikiwa kila kitu kilifanywa kwa usahihi, jibu lililo na nodi kadhaa litarejeshwa:

[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

Kuna chaguo jingine la usalama - kuchuja anwani ya IP (inapatikana kwa usajili kutoka kwa kiwango cha Dhahabu). Inakuruhusu kuunda orodha nyeupe za anwani za IP ambapo unaruhusiwa kufikia nodi.

Inalinda data nje ya nguzo ya Elasticsearch

Nje ya kikundi inamaanisha kuunganisha zana za nje: Kibana, Logstash, Beats au wateja wengine wa nje.

Elastic chini ya kufuli na ufunguo: kuwezesha chaguzi za usalama za nguzo ya Elasticsearch kwa ufikiaji kutoka ndani na nje.

Ili kusanidi usaidizi wa https (badala ya http), ongeza mistari mpya kwa 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

Kwa sababu Cheti kimelindwa kwa nenosiri, ongeza kwenye duka la vitufe na duka la amana kwenye kila nodi:

[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

Baada ya kuongeza funguo, nodi za Elasticsearch ziko tayari kuunganishwa kupitia https. Sasa wanaweza kuzinduliwa.

Hatua inayofuata ni kuunda ufunguo wa kuunganisha Kibana na kuiongeza kwenye usanidi. Kulingana na cheti ambacho tayari kiko katika saraka iliyoshirikiwa, tutazalisha cheti katika umbizo la PEM (PKCS#12 Kibana, Logstash na Beats bado haziauni):

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

Kilichobaki ni kufungua funguo zilizoundwa kwenye folda na usanidi wa Kibana:

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

Funguo zipo, kwa hivyo kilichobaki ni kubadilisha usanidi wa Kibana ili ianze kuzitumia. Katika faili ya usanidi ya kibana.yml, badilisha http hadi https na uongeze laini zilizo na mipangilio ya muunganisho wa SSL. Laini tatu za mwisho husanidi mawasiliano salama kati ya kivinjari cha mtumiaji na 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

Kwa hivyo, mipangilio imekamilika na ufikiaji wa data katika nguzo ya Elasticsearch umesimbwa kwa njia fiche.

Ikiwa una maswali kuhusu uwezo wa Elastic Stack kwenye usajili usiolipishwa au unaolipishwa, kazi za ufuatiliaji au kuunda mfumo wa SIEM, acha ombi kwa fomu ya maoni kwenye wavuti yetu.

Nakala zetu zaidi kuhusu Elastic Stack kwenye Habre:

Kuelewa Kujifunza kwa Mashine kwenye Stack ya Elastic (aka Elasticsearch, aka ELK)

Ukubwa wa Elasticsearch

Chanzo: mapenzi.com

Kuongeza maoni