Elastic Locked Up: Povolení možností zabezpečení clusteru Elasticsearch pro vnitřní a vnější přístup

Elastic Locked Up: Povolení možností zabezpečení clusteru Elasticsearch pro vnitřní a vnější přístup

Elastic Stack je na trhu SIEM systémů (vlastně nejen jich) známý nástroj. Dokáže shromáždit spoustu různě velkých dat, citlivých i nepříliš citlivých. Není zcela správné, pokud přístup k samotným prvkům Elastic Stack není chráněn. Ve výchozím nastavení všechny prvky v krabici Elastic (sběratelé Elasticsearch, Logstash, Kibana a Beats) fungují na otevřených protokolech. A v samotné Kibaně je ověřování zakázáno. Všechny tyto interakce lze zabezpečit a v tomto článku vám prozradíme, jak na to. Pro větší pohodlí byl příběh rozdělen do 3 sémantických bloků:

  • Model přístupu k datům
  • Zabezpečení dat uvnitř clusteru Elasticsearch
  • Zabezpečení dat mimo cluster Elasticsearch

Detaily pod střihem.

Model přístupu k datům

Pokud si Elasticsearch nainstalujete a nijak ho nevyladíte, přístup ke všem indexům bude otevřený všem. No, nebo ti, kteří mohou používat curl. Aby se tomu zabránilo, Elasticsearch má model role, který je k dispozici počínaje předplatným základní úrovně (které je zdarma). Schematicky to vypadá takto:

Elastic Locked Up: Povolení možností zabezpečení clusteru Elasticsearch pro vnitřní a vnější přístup

Co je na obrázku

  • Uživatelé jsou všichni, kteří se mohou přihlásit pomocí přihlašovacích údajů.
  • Role je soubor práv.
  • Práva jsou sada privilegií.
  • Oprávnění jsou oprávnění zapisovat, číst, mazat atd. (Úplný seznam oprávnění)
  • Zdroje jsou indexy, dokumenty, pole, uživatelé a další entity úložiště (model role pro některé zdroje je k dispozici pouze u placených předplatných).

Elasticsearch má ve výchozím nastavení uživatelé v krabicíchke kterým jsou připojeny krabicové role. Po povolení nastavení zabezpečení je můžete okamžitě začít používat.

Chcete-li povolit zabezpečení v nastavení Elasticsearch, musíte jej přidat do konfiguračního souboru (ve výchozím nastavení je to elasticsearch/config/elasticsearch.yml) nový řádek:

xpack.security.enabled: true

Po změně konfiguračního souboru spusťte nebo restartujte Elasticsearch, aby se změny projevily. Dalším krokem je přiřazení hesel uživatelům v krabicích. Udělejme to interaktivně pomocí příkazu níže:

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

Zkontrolujeme:

[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

Můžete se plácnout po rameni – nastavení na straně Elasticsearch je hotovo. Nyní je řada na nastavení Kibany. Pokud jej nyní spustíte, dojde k chybám, takže je důležité vytvořit úložiště klíčů. To se provádí dvěma příkazy (user kibana a heslo zadané v kroku vytváření hesel v Elasticsearch):

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

Pokud je vše v pořádku, Kibana začne žádat o uživatelské jméno a heslo. V základním předplatném je k dispozici model role založený na interních uživatelích. Počínaje Gold můžete připojit externí autentizační systémy - LDAP, PKI, Active Directory a systémy Single sign-on.

Elastic Locked Up: Povolení možností zabezpečení clusteru Elasticsearch pro vnitřní a vnější přístup

Přístupová práva k objektům uvnitř Elasticsearch lze také omezit. Pravda, abyste totéž udělali pro dokumenty nebo pole, budete potřebovat placené předplatné (tento luxus začíná na úrovni Platinum). Tato nastavení jsou dostupná v rozhraní Kibana nebo přes Security API. Můžete zkontrolovat prostřednictvím již známé nabídky Dev Tools:

Vytvořte si roli

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

Vytvoření uživatele

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

Zabezpečení dat uvnitř clusteru Elasticsearch

Když Elasticsearch běží v clusteru (což je běžné), stávají se důležitá nastavení zabezpečení v rámci clusteru. Pro bezpečnou komunikaci mezi uzly používá Elasticsearch protokol TLS. K nastavení zabezpečené komunikace mezi nimi potřebujete certifikát. Vygenerujeme certifikát a soukromý klíč ve formátu PEM:

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

Po provedení výše uvedeného příkazu v adresáři /../elasticsearch objeví se archiv elastický-stack-ca.zip. Uvnitř najdete certifikát a soukromý klíč s příponami crt и klíč respektive. Je žádoucí je rozložit na sdílený prostředek, ke kterému by měl být přístup ze všech uzlů clusteru.

Každý uzel nyní potřebuje své vlastní certifikáty a soukromé klíče založené na těch ve sdíleném adresáři. Po provedení příkazu budete požádáni o nastavení hesla. Pro plné ověření komunikujících uzlů lze přidat další volby -ip a -dns.

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

V důsledku provedení příkazu obdržíme certifikát a soukromý klíč ve formátu PKCS # 12, chráněný heslem. Zbývá přesunout vygenerovaný soubor p12 do konfiguračního adresáře:

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

Přidejte heslo k certifikátu ve formátu p12 v úložišti klíčů a úložišti důvěryhodnosti na každém uzlu:

[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

V již známém elasticsearch.yml zbývá přidat řádky s údaji o certifikátu:

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

Spustíme všechny uzly Elasticsearch a spustíme kadeř. Pokud bylo vše provedeno správně, bude vrácena odpověď s několika uzly:

[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

Existuje další možnost zabezpečení - filtrování IP adres (dostupné v předplatném od úrovně Gold). Umožňuje vytvářet bílé seznamy IP adres, ze kterých mají uzly povolen přístup.

Zabezpečení dat mimo cluster Elasticsearch

Mimo cluster znamená připojení externích nástrojů: Kibana, Logstash, Beats nebo jiných externích klientů.

Elastic Locked Up: Povolení možností zabezpečení clusteru Elasticsearch pro vnitřní a vnější přístup

Chcete-li nakonfigurovat podporu pro https (místo http), přidejte nové řádky do 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

Protože certifikát je chráněn heslem, přidejte jej do úložiště klíčů a důvěryhodného úložiště na každém uzlu:

[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

Po přidání klíčů jsou uzly Elasticsearch připraveny k připojení přes https. Nyní mohou být spuštěny.

Dalším krokem je vytvoření klíče připojení Kibana a jeho přidání do konfigurace. Na základě certifikátu, který se již nachází ve sdíleném adresáři, vygenerujeme certifikát ve formátu PEM (PKCS # 12 Kibana, Logstash a Beats zatím nepodporují):

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

Zbývá rozbalit vygenerované klíče do konfigurační složky Kibana:

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

Klíče tam jsou, takže zbývá změnit konfiguraci Kibana tak, aby je začala používat. V konfiguračním souboru kibana.yml změňte http na https a přidejte řádky s nastavením připojení SSL. Poslední tři řádky nastavují bezpečnou interakci mezi prohlížečem uživatele a Kibanou.

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

Tím se provede nastavení a přístup k datům v clusteru Elasticsearch je zašifrován.

Máte-li dotazy ohledně funkcí Elastic Stack pro bezplatné nebo placené předplatné, úkoly pro monitorování nebo vytváření systému SIEM, zanechte požadavek na formulář zpětné vazby na našich webových stránkách.

Další naše články o Elastic Stack na Habré:

Pochopení strojového učení v elastickém balíčku (také znám jako Elasticsearch, aka ELK)

Velikost Elasticsearch

Zdroj: www.habr.com

Přidat komentář