Elasztikus zár és kulcs alatt: lehetővé teszi az Elasticsearch fürt biztonsági opcióit belülről és kívülről való hozzáféréshez

Elasztikus zár és kulcs alatt: lehetővé teszi az Elasticsearch fürt biztonsági opcióit belülről és kívülről való hozzáféréshez

Az Elastic Stack egy jól ismert eszköz a SIEM rendszerpiacon (valójában nem csak ők). Sok különböző méretű adatot tud gyűjteni, érzékeny és nem túl érzékeny adatokat egyaránt. Nem teljesen helyes, ha magukhoz az Elastic Stack elemekhez való hozzáférés nincs védve. Alapértelmezés szerint az összes kész Elastic elem (Elasticsearch, Logstash, Kibana és Beats gyűjtők) nyílt protokollokon fut. Magában a Kibanában pedig le van tiltva a hitelesítés. Mindezek az interakciók biztosíthatók, és ebben a cikkben elmondjuk, hogyan kell ezt megtenni. A kényelem kedvéért a narratívát 3 szemantikai blokkra osztottuk:

  • Szerep alapú adathozzáférési modell
  • Adatbiztonság egy Elasticsearch klaszteren belül
  • Adatok védelme egy Elasticsearch-fürtön kívül

Részletek a vágás alatt.

Szerep alapú adathozzáférési modell

Ha telepíti az Elasticsearch-ot, és semmilyen módon nem hangolja, akkor mindenki számára elérhető lesz az összes index. Nos, vagy azok, akik tudják használni a curl-ot. Ennek elkerülése érdekében az Elasticsearch egy példaképet kínál, amely Basic előfizetéssel (ingyenes) kezdve elérhető. Sematikusan valahogy így néz ki:

Elasztikus zár és kulcs alatt: lehetővé teszi az Elasticsearch fürt biztonsági opcióit belülről és kívülről való hozzáféréshez

Ami a képen van

  • Felhasználó mindenki, aki a hitelesítő adataival bejelentkezhet.
  • A szerep jogok halmaza.
  • A jogok privilégiumok összessége.
  • A jogosultságok írási, olvasási, törlési stb. (A jogosultságok teljes listája)
  • Az erőforrások indexek, dokumentumok, mezők, felhasználók és egyéb tárolási entitások (egyes erőforrások példaképe csak fizetős előfizetésekkel érhető el).

Alapértelmezés szerint az Elasticsearch rendelkezik doboz felhasználók, amelyhez kapcsolódnak doboz szerepek. Miután engedélyezte a biztonsági beállításokat, azonnal elkezdheti használni őket.

Az Elasticsearch beállításaiban a biztonság engedélyezéséhez hozzá kell adni a konfigurációs fájlhoz (alapértelmezés szerint ez elasticsearch/config/elasticsearch.yml) új sor:

xpack.security.enabled: true

A konfigurációs fájl módosítása után indítsa el vagy indítsa újra az Elasticsearch programot, hogy a módosítások érvénybe lépjenek. A következő lépés a jelszavak hozzárendelése a fiók felhasználóihoz. Tegyük ezt meg interaktívan az alábbi paranccsal:

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

Ellenőrizzük:

[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

Megveregetheti magát - az Elasticsearch oldalon a beállítások elkészültek. Itt az ideje a Kibana konfigurálásának. Ha most futtatja, hibák jelennek meg, ezért fontos kulcstároló létrehozása. Ez két paranccsal történik (user kibana és az Elasticsearch jelszó létrehozási lépésénél megadott jelszó):

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

Ha minden helyes, a Kibana elkezd bejelentkezési nevet és jelszót kérni. Az Alapszintű előfizetés belső felhasználókon alapuló példaképet tartalmaz. A Goldtól kezdve csatlakoztathat külső hitelesítési rendszereket - LDAP, PKI, Active Directory és egyszeri bejelentkezési rendszereket.

Elasztikus zár és kulcs alatt: lehetővé teszi az Elasticsearch fürt biztonsági opcióit belülről és kívülről való hozzáféréshez

Az Elasticsearch-on belüli objektumok hozzáférési jogai szintén korlátozhatók. Ahhoz azonban, hogy ugyanezt megtegye a dokumentumok vagy mezők esetében, fizetős előfizetésre lesz szüksége (ez a luxus a platina szinttel kezdődik). Ezek a beállítások a Kibana felületén vagy ezen keresztül érhetők el Biztonsági API. A már ismerős Fejlesztői eszközök menüben ellenőrizheti:

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

Adatbiztonság egy Elasticsearch klaszteren belül

Amikor az Elasticsearch egy fürtben fut (ami gyakori), a fürtön belüli biztonsági beállítások fontossá válnak. A csomópontok közötti biztonságos kommunikáció érdekében az Elasticsearch a TLS protokollt használja. A köztük lévő biztonságos interakció beállításához tanúsítványra van szüksége. Tanúsítványt és privát kulcsot generálunk PEM formátumban:

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

A fenti parancs végrehajtása után a könyvtárban /../elaszticsearch archívum jelenik meg rugalmas-stack-ca.zip. Benne található egy tanúsítvány és egy privát kulcs kiterjesztésekkel katódsugárcső и kulcs illetőleg. Célszerű ezeket egy megosztott erőforrásra helyezni, amely a fürt összes csomópontjáról elérhető legyen.

Minden csomópontnak szüksége van saját tanúsítványokra és privát kulcsokra a megosztott könyvtárban lévők alapján. A parancs végrehajtásakor a rendszer kéri, hogy állítson be egy jelszót. A kölcsönhatásban lévő csomópontok teljes ellenőrzéséhez további -ip és -dns opciókat adhat hozzá.

[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ása eredményeként PKCS#12 formátumú, jelszóval védett tanúsítványt és privát kulcsot kapunk. Már csak a generált fájl áthelyezése van hátra p12 a konfigurációs könyvtárba:

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

Adjon hozzá egy jelszót a tanúsítványhoz a formátumban p12 a kulcstárolóban és a megbízhatósági tárolóban minden csomóponton:

[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

Már ismert elasticsearch.yml Nincs más hátra, mint a tanúsítványadatokkal rendelkező sorok hozzáadása:

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

Elindítjuk az összes Elasticsearch csomópontot és végrehajtjuk becsavar. Ha mindent helyesen csinált, több csomópontot tartalmazó választ ad vissza:

[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 - IP-cím szűrés (arany szinttől elérhető előfizetéseknél). Lehetővé teszi fehér listák létrehozását azokról az IP-címekről, amelyekről hozzáférhet a csomópontokhoz.

Adatok védelme egy Elasticsearch-fürtön kívül

A fürtön kívül külső eszközök csatlakoztatását jelenti: Kibana, Logstash, Beats vagy más külső kliensek.

Elasztikus zár és kulcs alatt: lehetővé teszi az Elasticsearch fürt biztonsági opcióit belülről és kívülről való hozzáféréshez

A https támogatásának konfigurálásához (a http helyett) adjon hozzá új sorokat az elasticsearch.yml fájlhoz:

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

Mert A tanúsítvány jelszóval védett, adja hozzá a kulcstárolóhoz és a megbízhatósági tároló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 a https-en keresztüli csatlakozásra. Most már elindíthatók.

A következő lépés egy kulcs létrehozása a Kibana csatlakoztatásához és hozzáadása a konfigurációhoz. A megosztott könyvtárban már található tanúsítvány alapján PEM formátumú tanúsítványt generálunk (a PKCS#12 Kibana, Logstash és Beats még 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

Nincs más hátra, mint kicsomagolni a létrehozott kulcsokat a mappába a Kibana konfigurációval:

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

A kulcsok megvannak, így már csak a Kibana konfigurációját kell megváltoztatni, hogy az elkezdje használni őket. A kibana.yml konfigurációs fájlban módosítsa a http-t https-re, és adjon hozzá sorokat az SSL-kapcsolat beállításaival. Az utolsó három sor a biztonságos kommunikációt konfigurálja a felhasználó böngészője és a Kibana között.

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 befejeződnek, és az Elasticsearch fürtben lévő adatokhoz való hozzáférés titkosítva lesz.

Ha kérdése van az Elastic Stack ingyenes vagy fizetős előfizetésekkel, megfigyelési feladatokkal vagy SIEM rendszer létrehozásával kapcsolatos képességeivel kapcsolatban, forduljon hozzánk. visszajelző űrlap weboldalunkon.

További cikkeink a Habré Elastic Stackről:

A gépi tanulás megértése az Elastic Stackben (más néven Elasticsearch, alias ELK)

Elasticsearch méretezés

Forrás: will.com

Hozzászólás