
Elastic Stack është një mjet i njohur në tregun e sistemeve SIEM (në fakt, jo vetëm ato). Ai mund të mbledhë shumë lloje të ndryshme të të dhënave, si ato të ndjeshme ashtu edhe të tjera. Nuk është krejtësisht e drejtë nëse aksesi në vetë elementët e Elastic Stack nuk është i mbrojtur. Në mënyrë të parazgjedhur, të gjithë elementët standard të Elastic (Elasticsearch, Logstash, Kibana dhe kolektorët Beats) punojnë me protokolle të hapura. Gjithashtu, autentifikimi është i çaktivizuar në Kibana. Të gjitha këto ndërveprime mund të sigurohen dhe në këtë artikull do të tregojmë se si ta bëni këtë. Për lehtësi, e kemi ndarë narrativin në 3 blloqe të kuptimshme:
- Modeli i rolit të aksesit në të dhëna
- Siguria e të dhënave brenda klasterit Elasticsearch
- Siguria e të dhënave jashtë klasterit Elasticsearch
Detajet më poshtë.
Modeli i rolit të aksesit në të dhëna
Nëse vendosni Elasticsearch dhe nuk e konfiguroni, aksesin në të gjitha indeksat do ta kenë të gjithë ata që duan. Ose, të paktën, ata që dinë si të përdorin curl. Për të shmangur këtë, Elasticsearch ka një model roli që është i disponueshëm që nga niveli i abonimit Basic (i cili është falas). Ai duket përafërsisht kështu:

ĂfarĂ« Ă«shtĂ« nĂ« imazh
- Përdoruesit janë të gjithë ata që mund të autentifikohen duke përdorur të dhënat e identifikimit.
- Roli është një grup të drejtash.
- Të drejtat janë një grup privilegjesh.
- Privilegjet janë leje për të shkruar, lexuar, fshirë etj. ()
- Burimet janë indeksat, dokumentet, fushat, përdoruesit dhe subjekte të tjera të depozitës (modeli i rolit është i dispozitshëm për disa burime vetëm në abonimet me pagesë).
Në Elasticsearch, si parazgjedhje ka , të cilët lidhen me . Pas aktivizimit të parametrave të sigurisë, ato mund të fillohen të përdoren menjëherë.
Për të aktivizuar sigurinë në parametrat Elasticsearch, duhet të shtoni një rresht të ri në skedarin e konfigurimit (në mënyrë të parazgjedhur është elasticsearch/config/elasticsearch.yml).
xpack.security.enabled: truePas ndryshimit të skedarit të konfigurimit, nisni ose rifilloni Elasticsearch për të bërë efekt ndryshimet. Hapi tjetër është caktimi i fjalëkalimeve për përdoruesit standard. Le ta bëjmë këtë interaktivisht me komandën më poshtë:
[elastic@node1 ~]$ .\/elasticsearch\/bin\/elasticsearch-setup-passwords interactive
Duke dritë për ngjyrat e përdoruesve rezervë elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
Do të kërkohet të jepni fjalëkalimet ndërsa procesi vazhdon.
Ju lutemi konfirmoni që dëshironi të vazhdoni [y\/N]y
Jepni fjalëkalimin për [elastic]:
Rinjisni fjalëkalimin për [elastic]:
Jepni fjalëkalimin për [apm_system]:
Rinjisni fjalëkalimin për [apm_system]:
Jepni fjalëkalimin për [kibana]:
Rinjisni fjalëkalimin për [kibana]:
Jepni fjalëkalimin për [logstash_system]:
Rinjisni fjalëkalimin për [logstash_system]:
Jepni fjalëkalimin për [beats_system]:
Rinjisni fjalëkalimin për [beats_system]:
Jepni fjalëkalimin për [remote_monitoring_user]:
Rinjisni fjalëkalimin për [remote_monitoring_user]:
Fjalëkalimi për përdoruesin [apm_system] është ndërruar
Fjalëkalimi për përdoruesin [kibana] është ndërruar
Fjalëkalimi për përdoruesin [logstash_system] është ndërruar
Fjalëkalimi për përdoruesin [beats_system] është ndërruar
Fjalëkalimi për përdoruesin [remote_monitoring_user] është ndërruar
Fjalëkalimi për përdoruesin [elastic] është ndërruar
Po kontrollojmë:
[elastic@node1 ~]$ curl -u elastic 'node1:9200\/cat\/nodes?pretty'
Jepni fjalëkalimin e hostit për përdoruesin 'elastic':
192.168.0.2 23 46 14 0.28 0.32 0.18 dim * node1
Mund t'i japĂ«sh vetes njĂ« shuplakĂ« â konfigurimet nĂ« anĂ«n e Elasticsearch janĂ« kryer. Tani Ă«shtĂ« koha pĂ«r tĂ« konfiguruar Kibana. NĂ«se e nis tani, do tĂ« dalin gabime, ndaj Ă«shtĂ« e rĂ«ndĂ«sishme tĂ« krijosh njĂ« depo çelĂ«sash. Kjo bĂ«het me dy komanda (pĂ«rdoruesi kibana dhe fjalĂ«kalimi, i futur nĂ« hapin e krijimit tĂ« fjalĂ«kalimeve nĂ« Elasticsearch):
[elastic@node1 ~]$ .\/kibana\/bin\/kibana-keystore add elasticsearch.username
[elastic@node1 ~]$ .\/kibana\/bin\/kibana-keystore add elasticsearch.passwordNĂ«se gjithçka Ă«shtĂ« bĂ«rĂ« saktĂ« â Kibana do tĂ« kĂ«rkojĂ« emrin e pĂ«rdoruesit dhe fjalĂ«kalimin. NĂ« mbĂ«shtetje tĂ« nivelit Basic, modelet e rolit bazohen nĂ« pĂ«rdoruesit e brendshĂ«m. Duke filluar nga Gold, mund tĂ« lidhen sisteme autentikimi tĂ« jashtme â LDAP, PKI, Active Directory dhe sisteme Single sign-on.

Të drejtat e aksesit në objektet brenda Elasticsearch gjithashtu mund të kufizohen. Megjithatë, për të bërë të njëjtën gjë për dokumentet ose fushat, do të nevojitet një të subscription paguar (kjo luks fillon nga niveli Platinum). Këto konfigurime janë të disponueshme në ndërfaqen e Kibana ose përmes . Mund të kontrollohet përmes menusë Dev Tools të njohur:
Krijimi i rolit
PUT \/_security\/role\/ruslan_i_ludmila_role
{
"cluster": [],
"indices": [
{
"names": [ "ruslan_i_ludmila" ],
"privileges": ["read", "view_index_metadata"]
}
]
}Krijimi i përdoruesit
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"
}
}Siguria e të dhënave brenda klasterit Elasticsearch
Kur Elasticsearch punon në një klaster (dhe kjo është e zakonshme), konfigurimet e sigurisë brenda klasterit bëhen të rëndësishme. Për një bashkëpunim të sigurt midis nyjeve, Elasticsearch përdor protokollin TLS. Për të konfiguruar bashkëpunimin e sigurt midis tyre, është e nevojshme një certifikatë. Gjenerojmë certifikatën dhe çelësin privat në formatin PEM:
[elastic@node1 ~]$ .\/elasticsearch\/bin\/elasticsearch-certutil ca --pemPas pasjes sĂ« ekzekutimit tĂ« komandĂ«s mĂ« sipĂ«r, do tĂ« shfaqet njĂ« arkiv nĂ« direktoriumin /../elasticsearch qĂ« do tĂ« pĂ«rmbajĂ« njĂ« certifikatĂ« dhe njĂ« çelĂ«s privat me zgjatjet elastic-stack-ca.zippĂ«rkatĂ«sisht. ĂshtĂ« preferueshme qĂ« ato tĂ« publikohen nĂ« njĂ« burim tĂ« pĂ«rbashkĂ«t, tĂ« cilit duhet t'i kalohet qasja nga tĂ« gjitha nodet e klastrit. crt dhe key PĂ«r çdo nod tani nevojiten certifikatat dhe çelĂ«sat privatĂ« tĂ« veta, tĂ« bazuar nĂ« ato qĂ« janĂ« nĂ« direktoriumin e pĂ«rbashkĂ«t. GjatĂ« ekzekutimit tĂ« komandĂ«s do tĂ« kĂ«rkohet tĂ« vendoset njĂ« fjalĂ«kalim. Mund tĂ« shtoni opsione shtesĂ« âip dhe âdns pĂ«r verifikimin e plotĂ« tĂ« nodave qĂ« ndĂ«rveprojnĂ«.
[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-certutil cert --ca-cert /shared_folder/ca/ca.crt --ca-key /shared_folder/ca/ca.key
Pas përfundimit të komandës do të marrim një certifikatë dhe një çelës privat në formatin PKCS#12, të mbrojtur me fjalëkalim. Tani mbetet të zhvendosim dosjen e gjeneruarp12 në direktoriumin me konfigurimin: [elastic@node1 ~]$ mv elasticsearch/elastic-certificates.p12 elasticsearch/config
Shtojmë fjalëkalimin për certifikatën në formatinnë keystore dhe truststore në çdo nodë: në direktoriumin me konfigurimin: [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
Në skedarin e njohur më parëelasticsearch.yml mbetet të shtojmë rreshtat me të dhënat për certifikatën: 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
E startojmë të gjitha nodet Elasticsearch dhe ekzekutojmë. Nëse çdo gjë është kryer siç duhet, do të kthehet një përgjigje me disa nodë: curl[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
Ka njĂ« opsion tjetĂ«r pĂ«r sigurinĂ« â filtrimin e adresave IP (i disponueshĂ«m nĂ« abonimet nga niveli Gold). Lejon krijimin e listeve tĂ« bardha tĂ« adresave IP, nga tĂ« cilat Ă«shtĂ« e lejuar tĂ« aksesohen nodet.JashtĂ« klastri do tĂ« thotĂ« tĂ« lidheni me mjete tĂ« jashtme: Kibana, Logstash, Beats ose klientĂ« tĂ« tjerĂ« tĂ« jashtĂ«m.
Siguria e të dhënave jashtë klasterit Elasticsearch
Për të konfiguruar mbështetje https (në vend të http), shtojmë në elasticsearch.yml rreshta të rinj:

xpack.security.http.ssl.enabled: true xpack.security.http.ssl.keystore.path: elastic-certificates.p12 xpack.security.http.ssl.truststore.path: elastic-certificates.p12
Duke qenë se certifikata është e mbrojtur me fjalëkalim, e shtojmë atë në keystore dhe truststore në çdo nodë:Pasi certifikati është i mbrojtur me fjalëkalim, do ta shtojmë në keystore dhe truststore në çdo nod:
[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_passwordPas pastrimit të çelësave, nodet Elasticsearch janë gati për t'u lidhur nëpërmjet https. Tani, mund të fillohen.
Hapi i ardhshëm është krijimi i një çelësi për lidhjen me Kibana dhe shtimi i tij në konfigurim. Në bazë të certifikatës, e cila tashmë është vendosur në dosjen e përbashkët, do të gjenerojmë certifikat në formatin PEM (PKCS#12 Kibana, Logstash dhe Beats deri tani nuk e mbështesin):
[elastic@node1 ~]$ .\/elasticsearch\/bin\/elasticsearch-certutil cert --ca-cert \/shared_folder\/ca\/ca.crt --ca-key \/shared_folder\/ca\/ca.key --pemKa mbetur të nxirren çelësat e krijuar në dosjen e konfigurimit të Kibana:
[elastic@node1 ~]$ unzip elasticsearch\/certificate-bundle.zip -d kibana\/configĂelĂ«sat janĂ« kĂ«tu, kĂ«shtu qĂ« mbetet tĂ« ndryshohet konfigurimi i Kibana pĂ«r t'i pĂ«rdorur ato. NĂ« skedarin e konfigurimit kibana.yml, ndryshojmĂ« http nĂ« https dhe shtojmĂ« rreshtat me cilĂ«simet e lidhjes SSL. Tre rreshtat e fundit konfigurojnĂ« ndĂ«rveprimin e sigurt mes shfletuesit tĂ« pĂ«rdoruesit dhe 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.crtKështu, cilësimet janë kryer dhe qasje në të dhënat në klasterin Elasticsearch është e kriptuar.
Nëse keni pyetje rreth mundësive të Elastic Stack në abonime falas ose të paguara, detyrat për monitorim ose krijimin e sistemeve SIEM, lëreni një kërkesë në në faqen tonë.
Të tjera artikuj tona mbi Elastic Stack në Habr:
Burimi: habr.com
