Elastinen lukon ja avaimen alla: mahdollistaa Elasticsearch-klusterin suojausvaihtoehdot pääsyä varten sisältä ja ulkoa

Elastinen lukon ja avaimen alla: mahdollistaa Elasticsearch-klusterin suojausvaihtoehdot pääsyä varten sisältä ja ulkoa

Elastic Stack on tunnettu työkalu SIEM-järjestelmämarkkinoilla (itse asiassa, ei vain heillä). Se voi kerätä paljon erikokoista tietoa, sekä arkaluonteista että ei kovin arkaluonteista. Ei ole täysin oikein, jos pääsyä itse Elastic Stack -elementteihin ei ole suojattu. Oletuksena kaikki valmiit Elastic-elementit (Elasticsearch-, Logstash-, Kibana- ja Beats-keräilijät) toimivat avoimissa protokollissa. Ja itse Kibanassa todennus on poistettu käytöstä. Kaikki nämä vuorovaikutukset voidaan turvata, ja tässä artikkelissa kerromme, kuinka tämä tehdään. Mukavuuden vuoksi jaoimme kertomuksen kolmeen semanttiseen lohkoon:

  • Roolipohjainen tietojen käyttömalli
  • Tietoturva Elasticsearch-klusterin sisällä
  • Tietojen suojaaminen Elasticsearch-klusterin ulkopuolella

Yksityiskohdat leikkauksen alla.

Roolipohjainen tietojen käyttömalli

Jos asennat Elasticsearchin etkä viritä sitä millään tavalla, pääsy kaikkiin indekseihin on avoin kaikille. No, tai ne, jotka osaavat käyttää curlia. Tämän välttämiseksi Elasticsearchilla on roolimalli, joka on saatavilla Basic-tilauksesta alkaen (joka on ilmainen). Kaavamaisesti se näyttää suunnilleen tältä:

Elastinen lukon ja avaimen alla: mahdollistaa Elasticsearch-klusterin suojausvaihtoehdot pääsyä varten sisältä ja ulkoa

Mitä kuvassa on

  • Käyttäjiä ovat kaikki, jotka voivat kirjautua sisään tunnuksilla.
  • Rooli on joukko oikeuksia.
  • Oikeudet ovat joukko etuoikeuksia.
  • Oikeudet ovat oikeuksia kirjoittaa, lukea, poistaa jne. (Täydellinen luettelo etuoikeuksista)
  • Resurssit ovat indeksejä, asiakirjoja, kenttiä, käyttäjiä ja muita tallennuskokonaisuuksia (joidenkin resurssien roolimalli on saatavilla vain maksullisilla tilauksilla).

Oletuksena Elasticsearchilla on laatikon käyttäjiä, johon ne on kiinnitetty laatikkorooleja. Kun otat suojausasetukset käyttöön, voit aloittaa niiden käytön välittömästi.

Jos haluat ottaa suojauksen käyttöön Elasticsearch-asetuksissa, sinun on lisättävä se määritystiedostoon (oletusarvoisesti tämä on elasticsearch/config/elasticsearch.yml) uusi rivi:

xpack.security.enabled: true

Kun olet muuttanut asetustiedostoa, käynnistä tai käynnistä Elasticsearch uudelleen, jotta muutokset tulevat voimaan. Seuraava vaihe on salasanojen määrittäminen laatikon käyttäjille. Tehdään tämä interaktiivisesti käyttämällä alla olevaa komentoa:

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

tarkista:

[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

Voit taputtaa itseäsi selkään - Elasticsearch-puolen asetukset on tehty. Nyt on aika määrittää Kibana. Jos suoritat sen nyt, näkyviin tulee virheitä, joten on tärkeää luoda avainsäilö. Tämä tehdään kahdella komennolla (user kibana ja salasana, joka syötettiin salasanan luontivaiheessa Elasticsearchissa):

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

Jos kaikki on oikein, Kibana alkaa kysyä käyttäjätunnusta ja salasanaa. Perustilaus sisältää sisäisiin käyttäjiin perustuvan roolimallin. Goldista alkaen voit yhdistää ulkoisia todennusjärjestelmiä - LDAP, PKI, Active Directory ja kertakirjautumisjärjestelmät.

Elastinen lukon ja avaimen alla: mahdollistaa Elasticsearch-klusterin suojausvaihtoehdot pääsyä varten sisältä ja ulkoa

Käyttöoikeuksia Elasticsearchin esineisiin voidaan myös rajoittaa. Kuitenkin, jotta voit tehdä saman asiakirjoille tai kentille, tarvitset maksullisen tilauksen (tämä ylellisyys alkaa platinatasosta). Nämä asetukset ovat käytettävissä Kibana-käyttöliittymässä tai kautta Security API. Voit tarkistaa jo tutun Dev Tools -valikon:

Roolin luominen

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

Käyttäjän luominen

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

Tietoturva Elasticsearch-klusterin sisällä

Kun Elasticsearch suoritetaan klusterissa (mikä on yleistä), klusterin suojausasetuksista tulee tärkeitä. Solmujen väliseen turvalliseen tietoliikenteeseen Elasticsearch käyttää TLS-protokollaa. Tarvitset varmenteen suojatun vuorovaikutuksen määrittämiseksi niiden välille. Luomme varmenteen ja yksityisen avaimen PEM-muodossa:

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

Yllä olevan komennon suorittamisen jälkeen hakemistossa /../elasticsearch arkisto tulee näkyviin elastic-stack-ca.zip. Sen sisältä löydät varmenteen ja yksityisen avaimen laajennuksilla crt и avain vastaavasti. On suositeltavaa sijoittaa ne jaettuun resurssiin, jonka pitäisi olla käytettävissä kaikista klusterin solmuista.

Jokainen solmu tarvitsee nyt omat varmenteensa ja yksityiset avaimensa, jotka perustuvat jaetussa hakemistossa oleviin. Kun suoritat komennon, sinua pyydetään asettamaan salasana. Voit lisätä lisäasetuksia -ip ja -dns vuorovaikutuksessa olevien solmujen täydelliseen tarkistamiseen.

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

Komennon suorittamisen seurauksena saamme salasanalla suojatun varmenteen ja yksityisen avaimen PKCS#12-muodossa. Jäljelle jää vain siirrä luotu tiedosto p12 asetushakemistoon:

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

Lisää salasana varmenteeseen muodossa p12 kunkin solmun avainsäilössä ja luottamuskaupassa:

[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

Jo tiedossa elasticsearch.yml Jäljelle jää vain rivien lisääminen varmennetiedoilla:

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äynnistämme kaikki Elasticsearch-solmut ja suoritamme kiemura. Jos kaikki tehtiin oikein, vastaus, jossa on useita solmuja, palautetaan:

[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 olemassa toinen suojausvaihtoehto - IP-osoitteen suodatus (saatavilla Gold-tason tilauksissa). Voit luoda valkoisia luetteloita IP-osoitteista, joista voit käyttää solmuja.

Tietojen suojaaminen Elasticsearch-klusterin ulkopuolella

Klusterin ulkopuolella tarkoittaa ulkoisten työkalujen yhdistämistä: Kibana, Logstash, Beats tai muut ulkoiset asiakkaat.

Elastinen lukon ja avaimen alla: mahdollistaa Elasticsearch-klusterin suojausvaihtoehdot pääsyä varten sisältä ja ulkoa

Voit määrittää https-tuen (http:n sijaan) lisäämällä uusia rivejä elasticsearch.yml-tiedostoon:

xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: elastic-certificates.p12
xpack.security.http.ssl.truststore.path: elastic-certificates.p12

Koska Varmenne on suojattu salasanalla, lisää se kunkin solmun avainsäilöön ja luottamussäilöön:

[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

Avainten lisäämisen jälkeen Elasticsearch-solmut ovat valmiita muodostamaan yhteyden https:n kautta. Nyt ne voidaan käynnistää.

Seuraava vaihe on luoda avain Kibanan yhdistämistä varten ja lisätä se kokoonpanoon. Jaetussa hakemistossa jo olevan varmenteen perusteella luomme varmenteen PEM-muodossa (PKCS#12 Kibana, Logstash ja Beats eivät vielä tue):

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

Jäljelle jää vain purkaa luodut avaimet kansioon Kibana-kokoonpanolla:

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

Avaimet ovat siellä, joten ei tarvitse muuta kuin muuttaa Kibana-kokoonpanoa, jotta se alkaa käyttää niitä. Muuta kibana.yml-määritystiedostossa http https:ksi ja lisää rivejä SSL-yhteysasetuksilla. Kolme viimeistä riviä määrittävät suojatun tiedonsiirron käyttäjän selaimen ja Kibanan välillä.

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

Siten asetukset on tehty ja pääsy Elasticsearch-klusterin tietoihin on salattu.

Jos sinulla on kysyttävää Elastic Stackin ominaisuuksista ilmaisissa tai maksullisissa tilauksissa, valvontatehtävissä tai SIEM-järjestelmän luomisessa, jätä pyyntö palautelomake sivuillamme.

Lisää artikkeleita Elastic Stack on Habrésta:

Koneoppimisen ymmärtäminen elastisessa pinossa (alias Elasticsearch, alias ELK)

Elasticsearch mitoitus

Lähde: will.com

Lisää kommentti