Elastic Locked Up: Aktiveer Elasticsearch Cluster Sekuriteitsopsies vir binne- en buitetoegang

Elastic Locked Up: Aktiveer Elasticsearch Cluster Sekuriteitsopsies vir binne- en buitetoegang

Elastic Stack is 'n bekende hulpmiddel in die SIEM-stelselmark (eintlik nie net hulle nie). Dit kan baie verskillende grootte data versamel, beide sensitief en nie baie sensitief nie. Dit is nie heeltemal korrek as toegang tot die Elastic Stack-elemente self nie beskerm word nie. By verstek werk alle Elastic-bokselemente (Elasticsearch-, Logstash-, Kibana- en Beats-versamelaars) op oop protokolle. En in Kibana self is verifikasie gedeaktiveer. Al hierdie interaksies kan verseker word, en in hierdie artikel sal ons jou vertel hoe om dit te doen. Gerieflikheidshalwe is die storie in 3 semantiese blokke verdeel:

  • Rolmodel van datatoegang
  • Datasekuriteit binne 'n Elasticsearch-groepering
  • Datasekuriteit buite 'n Elasticsearch-kluster

Besonderhede onder die snit.

Rolmodel van datatoegang

As jy Elasticsearch installeer en dit op geen manier instel nie, sal toegang tot alle indekse vir almal oop wees. Wel, of diegene wat krul kan gebruik. Om dit te vermy, het Elasticsearch 'n rolmodel wat beskikbaar is vanaf 'n basiese vlak-intekening (wat gratis is). Skematies lyk dit so:

Elastic Locked Up: Aktiveer Elasticsearch Cluster Sekuriteitsopsies vir binne- en buitetoegang

Wat is in die prentjie

  • Gebruikers is almal wat kan aanmeld met geloofsbriewe.
  • 'n Rol is 'n stel regte.
  • Regte is 'n stel voorregte.
  • Voorregte is toestemmings om te skryf, lees, uitvee, ens. (Volledige lys van voorregte)
  • Hulpbronne is indekse, dokumente, velde, gebruikers en ander bergingsentiteite (die rolmodel vir sommige hulpbronne is slegs beskikbaar in betaalde intekeninge).

Elasticsearch het by verstek gebruikers in bokswaaraan geheg is boks rolle. Nadat u sekuriteitinstellings geaktiveer het, kan u dit onmiddellik begin gebruik.

Om sekuriteit in die Elasticsearch-instellings te aktiveer, moet jy dit by die konfigurasielêer voeg (dit is by verstek elasticsearch/config/elasticsearch.yml) nuwe lyn:

xpack.security.enabled: true

Nadat u die konfigurasielêer verander het, begin of herbegin Elasticsearch vir die veranderinge om in werking te tree. Die volgende stap is om wagwoorde aan boks gebruikers toe te ken. Kom ons doen dit interaktief met die opdrag hieronder:

[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]

Ons kyk na:

[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

Jy kan jouself op die skouer klap – die instellings aan die Elasticsearch-kant is gedoen. Nou is dit die beurt om Kibana op te rig. As jy dit nou laat loop, sal foute val, daarom is dit belangrik om 'n sleutelstoor te skep. Dit word gedoen in twee opdragte (gebruiker kibana en die wagwoord wat ingevoer is in die stap van die skep van wagwoorde in Elasticsearch):

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

As alles reg is, sal Kibana vir 'n gebruikersnaam en wagwoord begin vra. In 'n Basiese intekening is 'n rolmodel gebaseer op interne gebruikers beskikbaar. Begin met Gold, jy kan eksterne stawingstelsels koppel - LDAP, PKI, Active Directory en enkelaanmeldingstelsels.

Elastic Locked Up: Aktiveer Elasticsearch Cluster Sekuriteitsopsies vir binne- en buitetoegang

Toegangsregte tot voorwerpe binne Elasticsearch kan ook beperk word. Om dieselfde vir dokumente of velde te doen, benodig u weliswaar 'n betaalde intekening (hierdie luukse begin met die Platinum-vlak). Hierdie instellings is beskikbaar in die Kibana-koppelvlak of via Sekuriteit API. U kan deur die reeds bekende Dev Tools-kieslys kyk:

Skep 'n rol

PUT /_security/role/ruslan_i_ludmila_role
{
  "cluster": [],
  "indices": [
    {
      "names": [ "ruslan_i_ludmila" ],
      "privileges": ["read", "view_index_metadata"]
    }
  ]
}

Gebruikerskepping

POST /_security/user/pushkin
{
  "password" : "nataliaonelove",
  "roles" : [ "ruslan_i_ludmila_role", "kibana_user" ],
  "full_name" : "Alexander Pushkin",
  "email" : "[email protected]",
  "metadata" : {
    "hometown" : "Saint-Petersburg"
  }
}

Datasekuriteit binne 'n Elasticsearch-groepering

Wanneer Elasticsearch in 'n groep werk (wat algemeen is), word sekuriteitinstellings binne die groep belangrik. Vir veilige kommunikasie tussen nodusse gebruik Elasticsearch die TLS-protokol. Om veilige kommunikasie tussen hulle op te stel, benodig jy 'n sertifikaat. Ons genereer 'n sertifikaat en 'n privaat sleutel in PEM-formaat:

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

Nadat u die opdrag hierbo uitgevoer het, in die gids /../elasticsearch die argief sal verskyn elastiese-stapel-ca.zip. Binne dit sal jy 'n sertifikaat en 'n private sleutel met uitbreidings vind crt и sleutel onderskeidelik. Dit is wenslik om hulle uit te lê op 'n gedeelde hulpbron, waartoe toegang moet wees vanaf alle nodusse van die groepering.

Elke nodus benodig nou sy eie sertifikate en private sleutels gebaseer op dié in die gedeelde gids. Wanneer die opdrag uitgevoer word, sal jy gevra word om 'n wagwoord in te stel. Bykomende opsies -ip en -dns kan bygevoeg word om kommunikerende nodusse volledig te verifieer.

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

As gevolg van die uitvoering van die opdrag, sal ons 'n sertifikaat en 'n private sleutel in die PKCS # 12-formaat ontvang, beskerm deur 'n wagwoord. Dit bly om die gegenereerde lêer te skuif p12 na die konfigurasiegids:

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

Voeg 'n wagwoord by die sertifikaat in die formaat p12 in sleutelstoor en vertrouenswinkel op elke nodus:

[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

In die reeds bekende elasticsearch.yml dit bly om reëls met data oor die sertifikaat by te voeg:

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

Ons begin alle Elasticsearch nodusse en voer dit uit krul. As alles korrek gedoen is, sal 'n antwoord met verskeie nodusse teruggestuur word:

[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

Daar is nog 'n sekuriteitsopsie - IP-adresfiltrering (beskikbaar in intekeninge vanaf die Goud-vlak). Laat jou toe om witlyste van IP-adresse te skep waarvandaan nodusse toegelaat word om toegang te verkry.

Datasekuriteit buite 'n Elasticsearch-kluster

Buite die groep beteken om eksterne instrumente te koppel: Kibana, Logstash, Beats of ander eksterne kliënte.

Elastic Locked Up: Aktiveer Elasticsearch Cluster Sekuriteitsopsies vir binne- en buitetoegang

Om ondersteuning vir https (in plaas van http) op te stel, voeg nuwe reëls by 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

Omdat die sertifikaat is wagwoordbeskerm, kom ons voeg dit by die sleutelstoor en truststoor op elke nodus:

[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

Nadat die sleutels bygevoeg is, is die Elasticsearch-nodes gereed om via https te koppel. Nou kan hulle van stapel gestuur word.

Die volgende stap is om 'n Kibana-verbindingsleutel te skep en dit by die konfigurasie te voeg. Gebaseer op die sertifikaat, wat reeds in die gedeelde gids geleë is, sal ons 'n sertifikaat in PEM-formaat genereer (PKCS # 12 Kibana, Logstash en Beats ondersteun nog nie):

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

Dit bly om die gegenereerde sleutels in die Kibana-konfigurasiegids uit te pak:

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

Die sleutels is daar, so dit bly om die Kibana-konfigurasie te verander sodat dit dit begin gebruik. In die kibana.yml-konfigurasielêer, verander http na https en voeg reëls by met SSL-verbindingsinstellings. Die laaste drie reëls stel 'n veilige interaksie tussen die gebruiker se blaaier en Kibana op.

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

Die instellings word dus voltooi en toegang tot data in die Elasticsearch-kluster word geïnkripteer.

As jy vrae het oor die Elastic Stack-kenmerke oor gratis of betaalde intekeninge, take om 'n SIEM-stelsel te monitor of te skep, laat 'n versoek in terugvoervorm op ons webwerf.

Meer van ons artikels oor Elastic Stack op Habré:

Verstaan ​​masjienleer in die elastiese stapel (ook bekend as Elasticsearch, ook bekend as ELK)

Grootte Elasticsearch

Bron: will.com

Voeg 'n opmerking