Elastne luku ja võtme all: võimaldab Elasticsearchi klastri turvavalikuid juurdepääsuks seest ja väljast

Elastne luku ja võtme all: võimaldab Elasticsearchi klastri turvavalikuid juurdepääsuks seest ja väljast

Elastic Stack on SIEM-süsteemide turul (tegelikult mitte ainult neil) tuntud tööriist. See võib koguda palju erineva suurusega andmeid, nii tundlikke kui ka mitte väga tundlikke. See ei ole täiesti õige, kui juurdepääs Elastic Stacki elementidele pole kaitstud. Vaikimisi töötavad kõik Elasticu kasutusel olevad elemendid (Elasticsearchi, Logstashi, Kibana ja Beatsi kogujad) avatud protokollidega. Ja Kibanas endas on autentimine keelatud. Kõiki neid suhtlusi saab kindlustada ja selles artiklis räägime teile, kuidas seda teha. Mugavuse huvides jagasime narratiivi kolmeks semantiliseks plokiks:

  • Rollipõhine andmetele juurdepääsu mudel
  • Andmete turvalisus Elasticsearchi klastris
  • Andmete turvamine väljaspool Elasticsearchi klastrit

Detailid lõike all.

Rollipõhine andmetele juurdepääsu mudel

Kui installite Elasticsearchi ja ei häälesta seda mingil viisil, on juurdepääs kõigile indeksitele avatud kõigile. No või need, kes oskavad lokke kasutada. Selle vältimiseks on Elasticsearchil eeskuju, mis on saadaval alates põhitellimusest (mis on tasuta). Skemaatiliselt näeb see välja umbes selline:

Elastne luku ja võtme all: võimaldab Elasticsearchi klastri turvavalikuid juurdepääsuks seest ja väljast

Mis on pildil

  • Kasutajad on kõik, kes saavad oma mandaati kasutades sisse logida.
  • Roll on õiguste kogum.
  • Õigused on privileegide kogum.
  • Privileegid on õigused kirjutada, lugeda, kustutada jne. (Privileegide täielik loetelu)
  • Ressursid on indeksid, dokumendid, väljad, kasutajad ja muud salvestusüksused (mõne ressursi eeskuju on saadaval ainult tasuliste tellimuste korral).

Vaikimisi on Elasticsearchil kasti kasutajad, mille külge need on kinnitatud kasti rollid. Kui olete turvaseaded lubanud, saate neid kohe kasutama hakata.

Elasticsearchi sätetes turvalisuse lubamiseks peate selle konfiguratsioonifaili lisama (vaikimisi on see elasticsearch/config/elasticsearch.yml) uus rida:

xpack.security.enabled: true

Pärast konfiguratsioonifaili muutmist käivitage või taaskäivitage Elasticsearch, et muudatused jõustuksid. Järgmine samm on paroolide määramine kasti kasutajatele. Teeme seda interaktiivselt, kasutades allolevat käsku:

[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-setup-passwords interactive
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y


Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana]:
Reenter password for [kibana]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]

Kontrollime:

[elastic@node1 ~]$ curl -u elastic 'node1:9200/_cat/nodes?pretty'
Enter host password for user 'elastic':
192.168.0.2 23 46 14 0.28 0.32 0.18 dim * node1

Saate endale patsutada õlale – Elasticsearchi poolel on seadistused tehtud. Nüüd on aeg Kibana konfigureerida. Kui käivitate selle praegu, ilmuvad vead, seega on oluline luua võtmehoidla. Seda tehakse kahe käsuga (user kibana ja Elasticsearchi parooli loomise etapis sisestatud parool):

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

Kui kõik on õige, hakkab Kibana sisselogimist ja parooli küsima. Põhitellimus sisaldab sisekasutajatel põhinevat eeskuju. Alates Goldist saate ühendada väliseid autentimissüsteeme - LDAP, PKI, Active Directory ja Single sisselogimise süsteemid.

Elastne luku ja võtme all: võimaldab Elasticsearchi klastri turvavalikuid juurdepääsuks seest ja väljast

Samuti saab piirata juurdepääsuõigusi Elasticsearchi objektidele. Kuid selleks, et teha sama dokumentide või väljade puhul, on teil vaja tasulist tellimust (see luksus algab plaatinatasemest). Need sätted on saadaval Kibana liideses või selle kaudu Turvalisuse API. Saate kontrollida juba tuttavast Dev Tools menüüst:

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" : "[email protected]",
  "metadata" : {
    "hometown" : "Saint-Petersburg"
  }
}

Andmete turvalisus Elasticsearchi klastris

Kui Elasticsearch töötab klastris (mis on tavaline), muutuvad klastri turvasätted oluliseks. Sõlmedevaheliseks turvaliseks suhtluseks kasutab Elasticsearch TLS-protokolli. Nendevahelise turvalise suhtluse seadistamiseks vajate sertifikaati. Loome sertifikaadi ja privaatvõtme PEM-vormingus:

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

Pärast ülaltoodud käsu täitmist kataloogis /../elastsearch ilmub arhiiv elastne-stack-ca.zip. Selle seest leiate sertifikaadi ja laiendustega privaatvõtme crt и võti vastavalt. Soovitatav on paigutada need jagatud ressursile, mis peaks olema juurdepääsetav kõikidest klastri sõlmedest.

Iga sõlm vajab nüüd oma sertifikaate ja privaatvõtmeid, mis põhinevad jagatud kataloogis olevatel. Käsu täitmisel palutakse teil määrata parool. Interakteeruvate sõlmede täielikuks kontrollimiseks saate lisada täiendavaid valikuid -ip ja -dn.

[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 parooliga kaitstud sertifikaadi ja privaatvõtme PKCS#12 formaadis. Jääb üle vaid genereeritud fail teisaldada p12 konfiguratsioonikataloogi:

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

Lisage sertifikaadile parool vormingus p12 iga sõlme võtmehoidlas ja usaldussalves:

[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 teada elastsearch.yml Jääb vaid 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 Elasticsearchi sõlmed ja käivitame Curl. Kui kõik tehti õigesti, tagastatakse mitme sõlmega vastus:

[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 veel üks turvavõimalus - IP-aadressi filtreerimine (saadaval tellimustes alates Gold tasemest). Võimaldab luua valgeid loendeid IP-aadressidest, millelt on lubatud sõlmedele juurde pääseda.

Andmete turvamine väljaspool Elasticsearchi klastrit

Väljaspool klastrit tähendab väliste tööriistade ühendamist: Kibana, Logstash, Beats või muud välised kliendid.

Elastne luku ja võtme all: võimaldab Elasticsearchi klastri turvavalikuid juurdepääsuks seest ja väljast

https-i toe konfigureerimiseks (http-i asemel), lisage saidile elasticsearch.yml uued 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

Sest Sertifikaat on parooliga kaitstud, lisage see võtmehoidlasse ja iga sõlme usaldussalve:

[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 kaudu ühenduse loomiseks. Nüüd saab neid käivitada.

Järgmine samm on luua Kibana ühendamiseks võti ja lisada see konfiguratsiooni. Jagatud kataloogis juba asuva sertifikaadi alusel genereerime sertifikaadi PEM-vormingus (PKCS#12 Kibana, Logstash ja Beats veel ei toeta):

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

Jääb üle vaid loodud võtmed Kibana konfiguratsiooniga kausta lahti pakkida:

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

Võtmed on olemas, nii et jääb üle vaid Kibana konfiguratsiooni muuta, et see neid kasutama hakkaks. Muutke konfiguratsioonifailis kibana.yml HTTP väärtuseks https ja lisage read SSL-ühenduse sätetega. Viimased kolm rida konfigureerivad 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

Seega on sätted lõpule viidud ja juurdepääs Elasticsearchi klastri andmetele krüpteeritakse.

Kui teil on küsimusi Elastic Stacki võimaluste kohta tasuta või tasuliste tellimuste, jälgimisülesannete või SIEM-süsteemi loomise kohta, jätke päring tagasiside vorm meie veebisaidil.

Rohkem meie artikleid Elastic Stacki kohta Habré kohta:

Masinõppe mõistmine elastses virnas (teise nimega Elasticsearch, teise nimega ELK)

Elasticsearch suuruse määramine

Allikas: www.habr.com

Lisa kommentaar