Elasticsearchi turvalisus: aktiveerime klastrite turbevalikud juurdepÀÀsuks seest ja vÀljast

Elasticsearchi turvalisus: aktiveerime klastrite turbevalikud juurdepÀÀsuks seest ja vÀljast

Elastic Stack on tuntud tööriist SIEM-sĂŒsteemide turul (tegelikult mitte ainult nende jaoks). See suudab koguda erinevaid andmeid, sealhulgas tundlikke ja vĂ€hem tundlikke. Pole mĂ”istlik, et Elastic Stacki elemendid ei oleks kaitstud. Vaikimisi töötavad kĂ”ik Elastici komponendid (Elasticsearch, Logstash, Kibana ja Beatsi kogujad) avatud protokollide alusel. Samuti on Kibanas vĂ€lja lĂŒlitatud autentimine. KĂ”iki neid interaktsioone on vĂ”imalik turvata ja selles artiklis selgitame, kuidas seda teha. Mugavuse huvides oleme jutustuse jaganud kolme sisulisse blokki:

  • Andmete juurdepÀÀsu rollimudel
  • Andmete turvalisus Elasticsearchi klastris
  • Andmete turvalisus Elasticsearchi klastrivĂ€liselt

Lisainformatsioon allpool.

Andmete juurdepÀÀsu rollimudel

Kui Elasticsearchi seadistada ilma tÀiendava seadistamiseta, on juurdepÀÀs kÔikidele indeksitele avatud kÔigile soovijatele. Ja ka neile, kes oskavad kasutada curl'i. Selle vÀltimiseks on Elasticsearchis rollimudel, mis on saadaval alates Basic-taseme tellimusest (mis on tasuta). Skeemiliselt nÀeb see vÀlja umbes nii:

Elasticsearchi turvalisus: aktiveerime klastrite turbevalikud juurdepÀÀsuks seest ja vÀljast

Mis pildil

  • Kasutajad on kĂ”ik, kes saavad sisse logida oma mandaadi abil.
  • Roll on Ă”iguste kogum.
  • Õigused on privileegide kogum.
  • Privileegid on Ă”igused kirjutamiseks, lugemiseks, kustutamiseks jne. (TĂ€ielik privileegide nimekiri)
  • Ressursid on indeksid, dokumendid, vĂ€ljad, kasutajad ja muud andmehoidla subjektid (mĂ”ne ressursi rolli mudel on saadaval ainult tasulistes tellimustes).

Elasticsearchis on vaikimisi olemas standardsed kasutajad, millele on seotud standardsed rollid. PĂ€rast turvaseadete lubamist saab neid kohe kasutada.

Elasticsearchi turvafunktsioonide aktiveerimiseks tuleb konfigureerimisfaili (vaikimisi elasticsearch/config/elasticsearch.yml) lisada uus rida:

xpack.security.enabled: true

PÀrast konfigureerimisfaili muutmist kÀivitame vÔi taaskÀivitame Elasticsearchi, et muudatused jÔustuksid. JÀrgmine samm on mÀÀrata paroolid standardsetele kasutajatele. Teeme seda interaktiivselt jÀrgmise kÀsuga:

[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-setup-passwords interactive
Algab reserveeritud kasutajate elastic, apm_system, kibana, logstash_system, beats_system, remote_monitoring_user paroolide seadistamist.
Protsessi kÀigus palutakse teil sisestada paroole.
Palun kinnitage, et soovite jÀtkata [y/N]y


Sisestage parool [elastic] jaoks:
Sisestage parool uuesti [elastic] jaoks:
Sisestage parool [apm_system] jaoks:
Sisestage parool uuesti [apm_system] jaoks:
Sisestage parool [kibana] jaoks:
Sisestage parool uuesti [kibana] jaoks:
Sisestage parool [logstash_system] jaoks:
Sisestage parool uuesti [logstash_system] jaoks:
Sisestage parool [beats_system] jaoks:
Sisestage parool uuesti [beats_system] jaoks:
Sisestage parool [remote_monitoring_user] jaoks:
Sisestage parool uuesti [remote_monitoring_user] jaoks:
Muudetud parool kasutajale [apm_system]
Muudetud parool kasutajale [kibana]
Muudetud parool kasutajale [logstash_system]
Muudetud parool kasutajale [beats_system]
Muudetud parool kasutajale [remote_monitoring_user]
Muudetud parool kasutajale [elastic]

Kontrollin:

[elastic@node1 ~]$ curl -u elastic 'node1:9200/_cat/nodes?pretty'
Sisestage hosti parool kasutajale 'elastic':
192.168.0.2 23 46 14 0.28 0.32 0.18 dim * node1

VĂ”ite ennast Ă”lale patsutada — Elasticsearchi seadistused on tehtud. NĂŒĂŒd on aeg seadistada Kibana. Kui kĂ€ivitada see nĂŒĂŒd, tulevad vead, seega on oluline luua vĂ”tmehoidla. Seda tehakse kahes kĂ€sus (kasutaja kibana ja parool, mis sisestati paroolide loomise sammus Elasticsearchis):

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

Kui kĂ”ik on Ă”igesti seadistatud, hakkab Kibana kĂŒsima kasutajatunnust ja parooli. Basic tasemel tellimuses on saadaval rollipĂ”hine mudel sisemiste kasutajate jaoks. Gold tasemest alates on vĂ”imalik ĂŒhendada vĂ€lised autentimissĂŒsteemid — LDAP, PKI, Active Directory ja Single sign-on sĂŒsteemid.

Elasticsearchi turvalisus: aktiveerime klastrite turbevalikud juurdepÀÀsuks seest ja vÀljast

Elasticsearchi sees olevate objektide juurde pÀÀsu Ă”igusi saab samuti piirata. TĂ”si, et sama teha dokumentide vĂ”i vĂ€ljadega, on vajalik tasuline tellimus (see luksus algab Platinum tasemest). Need seaded on saadaval Kibana liideses vĂ”i lĂ€bi Security API. Seda saab kontrollida juba tuttavas Dev Tools menĂŒĂŒs:

Rolli loomine

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

Kasutaja loomine

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

Andmete turvalisus Elasticsearchi klastris

Kui Elasticsearch töötab klastris (mida juhtub sageli), muutuvad olulisteks klastrisisese turvalisuse seaded. Klienditeenindus optimeerib turvalise suhtluse node'ide vahel, kasutades TLS-protokolli. Nende vahelise turvalise suhtluse seadistamiseks on vajalik sertifikaat. Loome sertifikaadi ja privaatvÔtme PEM-formaadis:

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

Ülaltoodud kĂ€su tĂ€itmise jĂ€rel ilmub kausta /../elasticsearch arhiv, elastic-stack-ca.zipmille sees on sertifikaat ja privaatvĂ”ti laienditega crt ja key , vastavalt. Soovitav on need ĂŒles laadida jagatud ressurssile, millele peaks olema juurdepÀÀs kĂ”igilt klastris olevatelt node'ilt.

Iga node jaoks on nĂŒĂŒd vajaminevad oma sertifikaadid ja privaatvĂ”tmed, mis pĂ”hinevad nendel, mis asuvad jagatud kataloogis. KĂ€su tĂ€itmise ajal palutakse mÀÀrata parool. LisavĂ”imaluste -ip ja -dns abil saab tĂ€ielikult valideerida suhtleva node'i.

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

KĂ€su tĂ€itmise tulemusena saame PKCS#12 vormingus sertifikaadi ja privaatvĂ”tme, mis on parooliga kaitstud. JÀÀb ĂŒle ainult genereeritud faili p12 ĂŒle viia konfiguratsioonikausta:

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

Lisame sertifikaadi parooli vormingus p12 keystore'i ja truststore'i igas sÔlmes:

[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

Juba tuntud elasticsearch.yml tuleb lisada read sertifikaadi andmetega:

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

KÀivitame kÔik Elasticsearch sÔlmed ja tÀidame curl. Kui kÔik on Ôigesti tehtud, tuleb vastus mitme sÔlme andmetega:

[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

On olemas veel ĂŒks turvafunktsioon — IP-aadresside filtreerimine (saadaval Gold taseme tellimustes). See vĂ”imaldab luua valgeid nimekirju IP-aadressidest, millest on lubatud sĂ”lmedega ĂŒhendust vĂ”tta.

Andmete turvalisus Elasticsearchi klastrivÀliselt

VĂ€liselt klastrist tĂ€hendab selle ĂŒhendamist vĂ€liste tööriistadega: Kibana, Logstash, Beats vĂ”i teiste vĂ€liste klientidega.

Elasticsearchi turvalisus: aktiveerime klastrite turbevalikud juurdepÀÀsuks seest ja vÀljast

HTTPS-i toe seadistamiseks (HTTP asemel) lisame elasticsearch.yml uudsed read:

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

Kuna sertifikaat on parooliga kaitstud, lisame selle keystore'i ja truststore'i igas sÔlmes:

[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Ă€rast vĂ”tmete lisamist on Elasticsearchi sĂ”lmed valmis HTTPS-i ĂŒhendamiseks. NĂŒĂŒd saab neid kĂ€ivitada.

JÀrgmine samm on sisselogimisvÔtme loomine Kibana jaoks ja selle lisamine konfiguratsiooni. Sertifikaadi pÔhjal, mis on juba jagatud kataloogis, genereerime sertifikaadi PEM-formaadis (PKCS#12 Kibana, Logstash ja Beats ei toeta seda hetkel):

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

Viimane samm on loodud vÔtmete lahtipakkimine Kibana konfiguratsioonikausta:

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

Kuna vĂ”tmed olemas, tuleb muuta Kibana konfiguratsiooni, et see neid kasutama hakkaks. Failis kibana.yml muudame http https-iks ja lisame SSL-ĂŒhenduse seadistuste read. Viimased kolm rida seadistavad turvalise suhtluse kasutaja brauseri ja Kibana vahel.

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

Nii on seaded tehtud ja juurdepÀÀs andmetele Elasticsearchi klastris on krĂŒpteeritud.

Kui teil on kĂŒsimusi Elastic Stacki vĂ”imaluste kohta tasuta vĂ”i tasulistel tellimustel, kĂŒsimusi jĂ€lgimise vĂ”i SIEM-sĂŒsteemide loomise kohta, palun jĂ€tke teade tagasiside vormis meie veebisaidil.

Meie artiklid Elastic Stackist Habril:

RÀÀgime Machine Learningist Elastic Stackis (tuntud ka kui Elasticsearch, ELK)

Elasticsearchi suuruse mÀÀramine

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster