
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:

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. ()
- 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 , millele on seotud . Pärast turvaseadete lubamist saab neid kohe kasutada.
Elasticsearchi turvafunktsioonide aktiveerimiseks tuleb konfigureerimisfaili (vaikimisi elasticsearch/config/elasticsearch.yml) lisada uus rida:
xpack.security.enabled: truePä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.passwordKui 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 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 . 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.keyKä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/configLisame 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_passwordJuba 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.p12Kä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 - node1On 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.

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.p12Kuna 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_passwordPä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 --pemViimane samm on loodud võtmete lahtipakkimine Kibana konfiguratsioonikausta:
[elastic@node1 ~]$ unzip elasticsearch/certificate-bundle.zip -d kibana/configKuna 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.crtNii 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 meie veebisaidil.
Meie artiklid Elastic Stackist Habril:
Allikas: habr.com
