
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:

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. ()
- 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 , amelyekhez kapcsoló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: trueA 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.passwordHa 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.

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 . 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 --pemA 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.keyA 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/configA 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 ismertelasticsearch.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:

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_passwordA 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 --pemMost 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\/configA 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. weboldalunkon.
További cikkek az Elastic Stackról a Habr-on:
Forrás: habr.com
