Elastic zárolva: bekapcsoljuk az Elasticsearch klaszter biztonsági opcióit a belső és külső hozzáféréshez

Elastic zárolva: bekapcsoljuk az Elasticsearch klaszter biztonsági opcióit a belső és külső hozzáféréshez

Elastic Stack — egy népszerű eszköz a SIEM-rendszerek piacán (tulajdonképpen nem csak azok számára). Képes sokféle adatot gyűjteni, anélkül, hogy érzékenyek vagy nem érzékenyek lennének. Nem teljesen helyes, ha az Elastic Stack elemei közvetlenül nincsenek védve. Alapértelmezés szerint az összes dobozos Elastic elem (Elasticsearch, Logstash, Kibana és a Beats gyűjtők) nyílt protokollokon működik. Ezenkívül a Kibana alapértelmezés szerint nem tartalmaz hitelesítést. Mindezek az interakciók biztonságosabbá tehetők, és ebben a cikkben elmondjuk, hogyan lehet ezt megtenni. A kényelem kedvéért a történetet három jelentéssel bíró blokkra osztottuk:

  • Adatokhoz való hozzáférési szerepkörmodell
  • Adatok védelme az Elasticsearch klaszteren belül
  • Adatok védelme az Elasticsearch klaszteren kívül

Részletek a folytatásban.

Adatokhoz való hozzáférési szerepkörmodell

Ha az Elasticsearch-t telepítjük anélkül, hogy bármilyen beállítást módosítanánk, az összes index hozzáférése nyitva áll mindenki számára. Vagy azok számára, akik tudják használni a curl-t. Ennek elkerülése érdekében az Elasticsearch-ben szerepkörmodell található, amely a Basic szintű előfizetéstől elérhető (ez ingyenes). Sémásan így néz ki:

Elastic zárolva: bekapcsoljuk az Elasticsearch klaszter biztonsági opcióit a belső és külső hozzáféréshez

Mi van a képen

  • Felhasználók — mindenki, aki hitelesíteni tudja magát az azonosító adatokkal.
  • Szerep — egy jogosultságokból álló halmaz.
  • Jogok — egy privilégiumokból álló halmaz.
  • Privilégiumok — engedélyek írásra, olvasásra, törlésre stb. (A jogosultságok teljes listája)
  • Erőforrások — indexek, dokumentumok, mezők, felhasználók és más tárolási alanyok (a szerepkör modell egyes erőforrásai csak a fizetős előfizetésekhez érhetők el).

Az Elasticsearch-ben alapértelmezés szerint vannak do-boz-os felhasználók, amelyekhez do-boz-os szerepekkapcsolódnak. A biztonsági beállítások aktiválása után azokat azonnal használni lehet.

A biztonság aktiválásához az Elasticsearch beállításaiban a konfigurációs fájlba (alapértelmezés szerint ez a elasticsearch/config/elasticsearch.yml) új sort kell hozzáadni:

xpack.security.enabled: true

A konfigurációs fájl módosítása után indítsuk újra az Elasticsearch-t, hogy a változtatások életbe lépjenek. A következő lépés a jelszavak hozzárendelése a dobozos felhasználókhoz. Ezt interaktívan fogjuk végrehajtani az alábbi parancs segítségével:

[elastic@node1 ~]$ .\/elasticsearch\/bin\/elasticsearch-setup-passwords interactive
Elindítja a jelszavak beállítását a következő felhasználók számára: elastic, apm_system, kibana, logstash_system, beats_system, remote_monitoring_user.
A folyamat előrehaladtával kérni fogja a jelszavak megadását.
Kérem, erősítse meg, hogy szeretné folytatni [y/N]y


Kérjük, adja meg a jelszót a következőhöz [elastic]:
Kérjük, írja be újra a jelszót a következőhöz [elastic]:
Kérjük, adja meg a jelszót a következőhöz [apm_system]:
Kérjük, írja be újra a jelszót a következőhöz [apm_system]:
Kérjük, adja meg a jelszót a következőhöz [kibana]:
Kérjük, írja be újra a jelszót a következőhöz [kibana]:
Kérjük, adja meg a jelszót a következőhöz [logstash_system]:
Kérjük, írja be újra a jelszót a következőhöz [logstash_system]:
Kérjük, adja meg a jelszót a következőhöz [beats_system]:
Kérjük, írja be újra a jelszót a következőhöz [beats_system]:
Kérjük, adja meg a jelszót a következőhöz [remote_monitoring_user]:
Kérjük, írja be újra a jelszót a következőhöz [remote_monitoring_user]:
Jelszó megváltoztatva a(z) [apm_system] felhasználóhoz
Jelszó megváltoztatva a(z) [kibana] felhasználóhoz
Jelszó megváltoztatva a(z) [logstash_system] felhasználóhoz
Jelszó megváltoztatva a(z) [beats_system] felhasználóhoz
Jelszó megváltoztatva a(z) [remote_monitoring_user] felhasználóhoz
Jelszó megváltoztatva a(z) [elastic] felhasználóhoz

Ellenőrizzük:

[elastic@node1 ~]$ curl -u elastic 'node1:9200\/_cat\/_nodes?pretty'
Kérjük, adja meg a host jelszót az 'elastic' felhasználóhoz:
192.168.0.2 23 46 14 0.28 0.32 0.18 dim * node1

Megveregetheti a vállát — a beállítások az Elasticsearch oldalán elkészültek. Most elérkezett az idő a Kibana beállítására. Ha most elindítja, hibák fognak megjelenni, ezért fontos létrehozni egy kulcs tárolót. Ezt két parancsban kell elvégezni (a felhasználó kibana és a jelszó, amit a jelszavak létrehozásának lépésében adott meg az Elasticsearch-ben):

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

Ha minden rendben van — a Kibana kérni fogja a bejelentkezést és a jelszót. Az alapcsomagban belső felhasználókra alapozott jogosultsági struktúra érhető el. A Gold szinttől kezdve külső hitelesítési rendszerek csatlakoztatására van lehetőség — LDAP, PKI, Active Directory és Single sign-on rendszerek.

Elastic zárolva: bekapcsoljuk az Elasticsearch klaszter biztonsági opcióit a belső és külső hozzáféréshez

Az Elasticsearch-en belüli objektumokhoz való hozzáférés is korlátozható. Igaz, hogy a dokumentumok vagy mezők esetében ugyanazt csak fizetős előfizetéssel lehet megtenni (ez a kényelem a Platinum szinttől kezdődik). Ezek a beállítások elérhetők a Kibana felületen vagy a Security API. Ellenőrizhető a már ismert Dev Tools menün keresztül:

Szerepkör létrehozása

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

Felhasználó létrehozása

POST \/_security\/_user\/pushkin
{
  "password" : "nataliaonelove",
  "roles" : [ "ruslan_i_ludmila_role", "kibana_user" ],
  "full_name" : "Alexander Pushkin",
  "email" : "pushkin@lyceum.edu",
  "metadata" : {
    "hometown" : "Szentpétervár"
  }
}

Adatok védelme az Elasticsearch klaszteren belül

Amikor az Elasticsearch klaszterben működik (ami a normális), fontosak a biztonsági beállítások a klaszteren belül. A csomópontok közötti biztonságos kommunikáció érdekében az Elasticsearch TLS protokollt használ. A biztonságos kommunikáció beállításához tanúsítványra van szükség. Tanúsítványt és privát kulcsot generálunk PEM-formátumban:

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

A parancs végrehajtása után a könyvtárban /../elasticsearch egy archívum jelenik meg elastic-stack-ca.zip. A belsejében egy tanúsítvány és egy privát kulcs található a kiterjesztésekkel crt és key megfelelően. Ezért célszerű ezeket megosztott erőforrásra helyezni, amelyhez a klaszter minden csomópontjáról hozzáférés kell, hogy legyen.

Most minden csomópont számára szükséges, hogy saját tanúsítványai és privát kulcsai legyenek az alapjául szolgáló megosztott könyvtárban lévőkkel.

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

A parancs végrehajtásának eredményeként egy PKCS#12 formátumú, jelszóval védett tanúsítványt és privát kulcsot kapunk. Már csak a generált fájlt p12 kell áthelyezni a konfigurációs könyvtárba:

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

A tanúsítvány jelszavát hozzáadjuk a keystore-hoz és a truststore-hoz minden csomóponton: p12 [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

A már ismert

elasticsearch.yml fájlba már csak a tanúsítvány adatait tartalmazó sorokat kell hozzáfűzni: 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

Indítsuk el az összes Elasticsearch csomópontot, és hajtsuk végre

. Ha minden helyesen lett végrehajtva, a válaszban több csomópont fog visszatérni: 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

Van egy másik biztonsági lehetőség is – IP-címek szűrése (elérhető az arany szintű előfizetésektől). Lehetővé teszi IP-címek fehérlistájának létrehozását, ahonnan a csomópontokhoz való hozzáférés engedélyezett.

A klaszteren kívülről való csatlakozás külső eszközöket jelent: Kibana, Logstash, Beats vagy más külső kliensek.

Adatok védelme az Elasticsearch klaszteren kívül

Hogy támogassuk a https protokollt (a http helyett), új sorokat adunk hozzá az elasticsearch.yml-hez:

Elastic zárolva: bekapcsoljuk az Elasticsearch klaszter biztonsági opcióit a belső és külső hozzáféréshez

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

Mivel a tanúsítvány jelszóval védett, hozzáadjuk a keystore-hoz és a truststore-hoz minden csomóponton:

Mivel a tanúsítvány jelszóval védett, hozzáadjuk a keystore-hoz és a truststore-hoz minden csomóponton:

[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

A kulcsok hozzáadása után az Elasticsearch csomópontok készen állnak az https protokollon való csatlakozásra. Most már elindíthatók.

A következő lépés a Kibana számára szükséges kulcs létrehozása és annak hozzáadása a konfigurációhoz. A már meglevő tanúsítvány alapján, amely a megosztott könyvtárban található, generáljunk egy tanúsítványt PEM formátumban (PKCS#12, a Kibana, Logstash és Beats egyelőre nem támogatja):

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

Most már ki kell csomagolni a létrehozott kulcsokat a Kibana konfigurációs mappájába:

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

A kulcsok megvannak, tehát módosítani kell a Kibana konfigurációját, hogy elkezdje használni őket. A kibana.yml konfigurációs fájlban cseréljük le a http-t https-re, és adjuk hozzá az SSL-kapcsolati beállításokra vonatkozó sorokat. Az utolsó három sor a felhasználó böngészője és a Kibana közötti biztonságos kommunikációt állítja be.

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

Így a beállítások elkészültek, és az Elasticsearch klaszterhez való hozzáférés titkosítva van.

Ha kérdése van az Elastic Stack ingyenes vagy fizetős előfizetéseivel kapcsolatban, monitorozási vagy SIEM-rendszer létrehozási feladatokkal, kérjük, küldjön egy megkeresést. visszajelzési űrlapon weboldalunkon.

További cikkek az Elastic Stackról a Habr-on:

Részletezve a Machine Learning-et az Elastic Stack-ben (más néven Elasticsearch, más néven ELK)

Elasticsearch méretezés

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster