Elastic blokeatu eta giltzapean: Elasticsearch klusterraren segurtasun-aukerak gaitu barrutik eta kanpotik sartzeko

Elastic blokeatu eta giltzapean: Elasticsearch klusterraren segurtasun-aukerak gaitu barrutik eta kanpotik sartzeko

Elastic Stack tresna ezaguna da SIEM sistemen merkatuan (egia esan, ez haiek bakarrik). Tamaina ezberdineko datu asko bil ditzake, bai sentikorra eta ez oso sentikorra. Ez da guztiz zuzena Elastic Stack elementuetarako sarbidea babestuta ez badago. Lehenespenez, Elastic-eko elementu guztiak (Elasticsearch, Logstash, Kibana eta Beats bildumagileak) protokolo irekietan exekutatzen dira. Eta Kibanan bertan, autentifikazioa desgaituta dago. Elkarrekintza horiek guztiak segurta daitezke eta artikulu honetan hau nola egin esango dizugu. Erosotasunerako, narrazioa 3 bloke semantikotan banatu dugu:

  • Roletan oinarritutako datuak eskuratzeko eredua
  • Datuen segurtasuna Elasticsearch kluster batean
  • Elasticsearch kluster batetik kanpoko datuak babestea

Ebaki azpian xehetasunak.

Roletan oinarritutako datuak eskuratzeko eredua

Elasticsearch instalatzen baduzu eta inola ere sintonizatzen ez baduzu, indize guztietarako sarbidea guztientzako irekita egongo da. Tira, edo kizkurra erabil dezaketenak. Hori ekiditeko, Elasticsearch-ek oinarrizko harpidetza batekin (doakoa da) hasita eskuragarri dagoen eredu bat du. Eskematikoki honelako itxura du:

Elastic blokeatu eta giltzapean: Elasticsearch klusterraren segurtasun-aukerak gaitu barrutik eta kanpotik sartzeko

Irudian dagoena

  • Erabiltzaileak beren kredentzialak erabiliz saioa hasi dezaketen guztiak dira.
  • Rol bat eskubide multzo bat da.
  • Eskubideak pribilegio multzo bat dira.
  • Pribilegioak idazteko, irakurtzeko, ezabatzeko, etab. baimenak dira. (Pribilegioen zerrenda osoa)
  • Baliabideak indizeak, dokumentuak, eremuak, erabiltzaileak eta beste biltegiratze entitate batzuk dira (baliabide batzuen eredua ordainpeko harpidetzekin bakarrik dago eskuragarri).

Lehenespenez, Elasticsearch-ek dauka kutxa erabiltzaileak, eta horri atxikita daude kutxa rolak. Segurtasun-ezarpenak gaitu ondoren, berehala erabiltzen has zaitezke.

Elasticsearch ezarpenetan segurtasuna gaitzeko, konfigurazio fitxategira gehitu behar duzu (lehenespenez hau da elasticsearch/config/elasticsearch.yml) lerro berria:

xpack.security.enabled: true

Konfigurazio fitxategia aldatu ondoren, abiarazi edo berrabiarazi Elasticsearch aldaketak eragina izan dezan. Hurrengo urratsa kutxa erabiltzaileei pasahitzak esleitzea da. Egin dezagun interaktiboki beheko komandoa erabiliz:

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

Egiaztatzen dugu:

[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

Zure buruari bizkarra eman dezakezu - Elasticsearch aldean dauden ezarpenak osatuta daude. Orain Kibana konfiguratzeko garaia da. Orain exekutatzen baduzu, akatsak agertuko dira, beraz, garrantzitsua da gako-biltegia sortzea. Hau bi komandotan egiten da (erabiltzailea kibana eta Elasticsearch-en pasahitza sortzeko urratsean sartutako pasahitza):

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

Dena zuzena bada, Kibana saioa hasteko eta pasahitza eskatzen hasiko da. Oinarrizko harpidetzak barne erabiltzaileetan oinarritutako eredu bat dakar. Gold-etik hasita, kanpoko autentifikazio-sistemak konekta ditzakezu: LDAP, PKI, Active Directory eta Single Sign-on sistemak.

Elastic blokeatu eta giltzapean: Elasticsearch klusterraren segurtasun-aukerak gaitu barrutik eta kanpotik sartzeko

Elasticsearch barruko objektuetarako sarbide-eskubideak ere mugatu egin daitezke. Hala ere, dokumentu edo eremuekin gauza bera egiteko, ordaindutako harpidetza beharko duzu (luxu hau Platino mailatik hasten da). Ezarpen hauek Kibana interfazean edo bidez daude eskuragarri Segurtasun APIa. Dagoeneko ezaguna den Dev Tools menuaren bidez egiaztatu dezakezu:

Rol bat sortzea

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

Erabiltzaile bat sortzea

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

Datuen segurtasuna Elasticsearch kluster batean

Elasticsearch kluster batean exekutatzen denean (ohikoa da), klusterreko segurtasun ezarpenak garrantzitsuak dira. Nodoen arteko komunikazio segurua lortzeko, Elasticsearch-ek TLS protokoloa erabiltzen du. Haien arteko interakzio segurua ezartzeko, ziurtagiri bat behar duzu. Ziurtagiria eta gako pribatua sortzen ditugu PEM formatuan:

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

Goiko komandoa exekutatu ondoren, direktorioa /../elasticsearch artxiboa agertuko da elastiko-pila-ca.zip. Bere barruan ziurtagiri bat eta luzapenekin gako pribatu bat aurkituko dituzu crt ΠΈ gako hurrenez hurren. Komenigarria da partekatutako baliabide batean jartzea, zeina klusterreko nodo guztietatik eskuragarri egon beharko lukeena.

Orain nodo bakoitzak bere ziurtagiriak eta gako pribatuak behar ditu direktorio partekatuan oinarrituta. Komandoa exekutatzean, pasahitz bat ezartzeko eskatuko zaizu. -ip eta -dns aukera gehigarriak gehi ditzakezu elkarreraginean dauden nodoak erabat egiaztatzeko.

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

Komandoa exekutatzearen ondorioz, PKCS#12 formatuan ziurtagiri bat eta gako pribatu bat jasoko ditugu, pasahitz batez babestuta. Sortutako fitxategia mugitzea besterik ez da geratzen p12 konfigurazio direktoriora:

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

Gehitu pasahitz bat ziurtagiriari formatuan p12 nodo bakoitzean gako-biltegian eta konfiantzazko biltegian:

[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

Dagoeneko ezaguna elasticsearch.yml Ziurtagiriaren datuekin lerroak gehitzea besterik ez da geratzen:

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

Elasticsearch nodo guztiak abiarazten ditugu eta exekutatzen ditugu curl. Dena ondo egin bada, hainbat nodo dituen erantzuna itzuliko da:

[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

Segurtasun-aukera bat dago: IP helbidearen iragazketa (Urrezko mailako harpidetzetan eskuragarri). Nodoetara sartzeko baimena duten IP helbideen zerrenda zuriak sortzeko aukera ematen dizu.

Elasticsearch kluster batetik kanpoko datuak babestea

Klusterretik kanpo kanpoko tresnak konektatzea esan nahi du: Kibana, Logstash, Beats edo kanpoko beste bezero batzuk.

Elastic blokeatu eta giltzapean: Elasticsearch klusterraren segurtasun-aukerak gaitu barrutik eta kanpotik sartzeko

https-ren laguntza konfiguratzeko (http-ren ordez), gehitu lerro berriak elasticsearch.yml-ra:

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

Zeren Ziurtagiria pasahitz babestuta dago, gehitu nodo bakoitzean gako-biltegian eta fidagarri-biltegian:

[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

Gakoak gehitu ondoren, Elasticsearch nodoak prest daude https bidez konektatzeko. Orain martxan jarri daitezke.

Hurrengo urratsa Kibana konektatzeko gako bat sortzea eta konfigurazioari gehitzea da. Direktorio partekatuan dagoeneko kokatuta dagoen ziurtagirian oinarrituta, ziurtagiri bat sortuko dugu PEM formatuan (PKCS#12 Kibana, Logstash eta Beats-ek oraindik ez dute onartzen):

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

Sortutako gakoak Kibana konfigurazioa duen karpetan deskonprimitzea besterik ez da geratzen:

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

Gakoak hor daude, beraz, Kibana konfigurazioa aldatzea besterik ez da geratzen, haiek erabiltzen has dadin. Kibana.yml konfigurazio-fitxategian, aldatu http https-ra eta gehitu SSL konexio-ezarpenekin lerroak. Azken hiru lerroek erabiltzailearen nabigatzailearen eta Kibanaren arteko komunikazio segurua konfiguratzen dute.

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

Horrela, ezarpenak osatu eta Elasticsearch klusterreko datuetarako sarbidea zifratu egiten da.

Doako edo ordainpeko harpidetzetan, zereginen jarraipenari edo SIEM sistema bat sortzeari buruzko Elastic Stack-en gaitasunei buruzko galderarik baduzu, utzi eskaera hona: feedback formularioa gure webgunean.

Elastic Stack-i buruzko gure artikulu gehiago HabrΓ©-n:

Machine Learning Elastic Stack-en ulertzea (Elasticsearch edo ELK)

Elasticsearch tamaina

Iturria: www.habr.com

Gehitu iruzkin berria