Elastic nën siguri: aktivizoni opsionet e sigurisë të klasterit Elasticsearch për akses nga brenda dhe jashtë

Elastic nën siguri: aktivizoni opsionet e sigurisë të klasterit Elasticsearch për akses nga brenda dhe jashtë

Elastic Stack — njĂ« mjet i njohur nĂ« tregun e sistemeve SIEM (nuk Ă«shtĂ« vetĂ«m pĂ«r to). Ai mund tĂ« grumbullojĂ« shumĂ« tĂ« dhĂ«na tĂ« ndryshme, si tĂ« ndjeshme ashtu edhe jo. Nuk Ă«shtĂ« krejtĂ«sisht e saktĂ« nĂ«se qasja nĂ« vetĂ« elementet e Elastic Stack nuk do tĂ« jetĂ« e mbrojtur. Nga default, tĂ« gjithĂ« elementĂ«t kutia tĂ« Elastic (Elasticsearch, Logstash, Kibana dhe kolektorĂ«t Beats) punojnĂ« nĂ« protokollet e hapura. NdĂ«rsa nĂ« vetĂ« Kibana, autentifikimi Ă«shtĂ« i çaktivizuar. TĂ« gjitha kĂ«to ndĂ«rveprime mund tĂ« sigurohen, dhe nĂ« kĂ«tĂ« artikull do tĂ« tregojmĂ« se si ta bĂ«jmĂ« kĂ«tĂ«. PĂ«r lehtĂ«sinĂ« e lexuesve, e ndamĂ« narrativin nĂ« 3 blloqe semantike:

  • Modeli i aksesit rol
  • Siguria e tĂ« dhĂ«nave brenda klasterit Elasticsearch
  • Siguria e tĂ« dhĂ«nave jashtĂ« klasterit Elasticsearch

Detajet më poshtë.

Modeli i aksesit rol

NĂ«se instalohet Elasticsearch dhe nuk bĂ«het asnjĂ« optimizim — qasja nĂ« tĂ« gjitha indekset do tĂ« jetĂ« e hapur pĂ«r tĂ« gjithĂ« ata qĂ« dĂ«shirojnĂ«. Ose, ata qĂ« dinĂ« tĂ« pĂ«rdorin curl. PĂ«r ta shmangur kĂ«tĂ«, nĂ« Elasticsearch ekziston njĂ« model roli, i cili Ă«shtĂ« nĂ« dispozicion duke filluar nga niveli i abonimit Basic (i cili Ă«shtĂ« falas). Duke e parĂ« nĂ« mĂ«nyrĂ« skematike, duket kĂ«shtu:

Elastic nën siguri: aktivizoni opsionet e sigurisë të klasterit Elasticsearch për akses nga brenda dhe jashtë

ÇfarĂ« Ă«shtĂ« nĂ« figurĂ«

  • PĂ«rdoruesit — janĂ« tĂ« gjithĂ« ata qĂ« mund tĂ« identifikohen duke pĂ«rdorur kredencialet.
  • Roli — Ă«shtĂ« njĂ« grup tĂ« drejtash.
  • TĂ« drejtat janĂ« njĂ« grup privilegjesh.
  • Privilegjet janĂ« leje pĂ«r tĂ« shkruar, lexuar, fshirĂ« etj. (Lista e plotĂ« e privilegjeve)
  • Burimet janĂ« indekse, dokumente, fusha, pĂ«rdorues dhe subjekte tĂ« tjera tĂ« ruajtjes (modeli i rolit pĂ«r disa burime Ă«shtĂ« i disponueshĂ«m vetĂ«m nĂ« abonime me pagesĂ«).

Në Elasticsearch, për default ka përdorues të fabrikës, të cilët lidhen me rollet e fabrikës. Pas aktivizimit të cilësimeve të sigurisë, ato mund të fillojnë të përdoren menjëherë.

Për të aktivizuar sigurinë në cilësimet e Elasticsearch, duhet të shtoni një rresht të ri në skedarin e konfigurimit (në mënyrë të paracaktuar është elasticsearch/config/elasticsearch.yml)

xpack.security.enabled: true

Pas ndryshimit të skedarit të konfigurimit, startojmë ose rstartojmë Elasticsearch, që ndryshimet të hyjnë në fuqi. Hapi tjetër është caktimi i fjalëkalimeve për përdoruesit e fabrikës. Do ta bëjmë këtë në mënyrë interaktive me komandën më poshtë:

[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-setup-passwords interactive
Duke procesin e konfigurimit të fjalëkalimeve për përdoruesit rezervë elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
Do të përballeni me nevojën për të futur fjalëkalime ndërsa procesi përparon.
Ju lutem konfirmoni nëse dëshironi të vazhdoni [y/N]y


Futni fjalëkalimin për [elastic]:
Rivendosni fjalëkalimin për [elastic]:
Futni fjalëkalimin për [apm_system]:
Rivendosni fjalëkalimin për [apm_system]:
Futni fjalëkalimin për [kibana]:
Rivendosni fjalëkalimin për [kibana]:
Futni fjalëkalimin për [logstash_system]:
Rivendosni fjalëkalimin për [logstash_system]:
Futni fjalëkalimin për [beats_system]:
Rivendosni fjalëkalimin për [beats_system]:
Futni fjalëkalimin për [remote_monitoring_user]:
Rivendosni fjalëkalimin për [remote_monitoring_user]:
Fjalëkalimi është ndryshuar për përdoruesin [apm_system]
Fjalëkalimi është ndryshuar për përdoruesin [kibana]
Fjalëkalimi është ndryshuar për përdoruesin [logstash_system]
Fjalëkalimi është ndryshuar për përdoruesin [beats_system]
Fjalëkalimi është ndryshuar për përdoruesin [remote_monitoring_user]
Fjalëkalimi është ndryshuar për përdoruesin [elastic]

Po kontrollojmë:

[elastic@node1 ~]$ curl -u elastic 'node1:9200/_cat/nodes?pretty'
Futni 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Ă« pĂ«rqafoni veten — konfigurimet nĂ« anĂ«n e Elasticsearch janĂ« bĂ«rĂ«. Tani Ă«shtĂ« koha pĂ«r tĂ« konfiguruar Kibana. NĂ«se e filloni tani, do tĂ« shfaqen gabime, kĂ«shtu qĂ« Ă«shtĂ« e rĂ«ndĂ«sishme tĂ« krijoni njĂ« depo çelesh. Kjo bĂ«het me dy komanda (pĂ«rdoruesi kibana dhe fjalĂ«kalimi, tĂ« 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.password

NĂ«se gjithçka Ă«shtĂ« e saktĂ« — Kibana do tĂ« fillojĂ« tĂ« kĂ«rkojĂ« emrin e pĂ«rdoruesit dhe fjalĂ«kalimin. NĂ« abonimin e nivelit Basic, Ă«shtĂ« e disponueshme njĂ« model roli nĂ« bazĂ« tĂ« pĂ«rdoruesve tĂ« brendshĂ«m. Duke filluar nga Gold, mund tĂ« lidhni sisteme autentifikimi tĂ« jashtme — LDAP, PKI, Active Directory dhe sisteme Single sign-on.

Elastic nën siguri: aktivizoni opsionet e sigurisë të klasterit Elasticsearch për akses nga brenda dhe jashtë

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ë abonim pagese (kjo luks fillon nga niveli Platinum). Këto cilësime janë të disponueshme në ndërfaqen e Kibana ose përmes Security API. Mund ta kontrolloni përmes menusë tashmë të njohur Dev Tools:

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 (çka është e zakonshme), konfigurimet e sigurisë brenda klasterit bëhen të rëndësishme. Për një ndërveprim të sigurt midis nodave, Elasticsearch përdor protokollin TLS. Për të konfiguruar një ndërveprim të sigurt midis tyre, nevojitet një certifikatë. Gjenerojmë një certifikatë dhe një çelës privat në formatin PEM:

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

Pas ekzekutimit tĂ« komandĂ«s sĂ« mĂ«sipĂ«rme, nĂ« drejtorinĂ« /../elasticsearch do tĂ« shfaqet njĂ« arkiv elastic-stack-ca.zip. Brenda tij do tĂ« gjeni certifikatĂ«n dhe çelĂ«sin privat me pĂ«rmasa crt dhe key pĂ«rkatĂ«sisht. ËshtĂ« e preferueshme t'i vendosim ato nĂ« njĂ« burim tĂ« pĂ«rbashkĂ«t, tĂ« cilit duhet tĂ« ketĂ« akses nga tĂ« gjitha nodat e klasterit.

PĂ«r secilĂ«n nodĂ« tani nevojiten certifikata dhe çelĂ«sat privatĂ« mbi bazĂ«n e atyre qĂ« ndodhen nĂ« direktorinĂ« e pĂ«rbashkĂ«t. GjatĂ« ekzekutimit tĂ« komandĂ«s do tĂ« kĂ«rkohet tĂ« vendosni njĂ« fjalĂ«kalim. Mund tĂ« shtoni mundĂ«si tĂ« tjera —ip dhe —dns pĂ«r njĂ« verifikim tĂ« 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 ekzekutimit 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ë transferojmë skedarin e gjeneruar p12 në drejtorinë me konfigurimin:

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

Shtojmë një fjalëkalim për certifikatën në formatin p12 në keystore dhe truststore në çdo nodë:

[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 elasticsearch.yml më mbetet të shtoj rreshtat me informacionin 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

Nisni të gjitha nodet Elasticsearch dhe realizoni curl. Nëse gjithçka është bërë siç duhet, do të keni një përgjigje me disa node:

[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

Ekziston njĂ« opsion tjetĂ«r pĂ«r sigurinĂ« — filtrimi i adresave IP (disponues nĂ« abonimet nga niveli Gold). Lejon krijimin e listave tĂ« bardha tĂ« adresave IP nga tĂ« cilat lejohet qasja nĂ« nodet.

Siguria e të dhënave jashtë klasterit Elasticsearch

Jashtë klasterit do të thotë lidhje me mjete të jashtme: Kibana, Logstash, Beats ose klientë të tjerë të jashtëm.

Elastic nën siguri: aktivizoni opsionet e sigurisë të klasterit Elasticsearch për akses nga brenda dhe jashtë

Për të konfiguroni mbështetje https (në vend të http), do të shtojmë rreshta të rinj në elasticsearch.yml:

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, 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_password

Pas shtimit të çelësave, nodet Elasticsearch janë të gatshme për lidhje nëpërmjet https. Tani mund të fillohen.

Hapi tjetër ë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ë direktorinë e ndarë, do të gjenerojmë një certifikatë në formatin PEM (PKCS#12 Kibana, Logstash dhe Beats nuk e mbështesin ende):

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

I mbetet të nxjerrim çelësat e krijuar në folderin me konfigurimin e Kibana:

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

ÇelĂ«sat ekzistojnĂ«, tani mbetet tĂ« ndryshohet konfigurimi i Kibana-s qĂ« tĂ« fillojĂ« t'i pĂ«rdorĂ« 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 midis shfletuesit tĂ« pĂ«rdoruesit dhe Kibana-s.

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

Kështu, cilësimet janë kryer dhe qasja në të dhënat në klasterin Elasticsearch është e enkriptuar.

Nëse keni pyetje mbi mundësitë e Elastic Stack në abonimet falas ose me pagesë, çështjet për monitorimin ose krijimin e sistemeve SIEM, lëreni një kërkesë në formën e kontaktit në faqen tonë.

Akoma artikujt tanë mbi Elastic Stack në Habr:

Të kuptojmë Machine Learning në Elastic Stack (njësoj Elasticsearch, njësoj ELK)

S sizing Elasticsearch

Burimi: habr.com

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster