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