Elastic ΠΏΠΎΠ΄ Π·Π°ΠΌΠΊΠΎΠΌ: Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΎΠΏΡ†ΠΈΠΈ бСзопасности кластСра Elasticsearch для доступа ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ ΠΈ снаруТи

Elastic ΠΏΠΎΠ΄ Π·Π°ΠΌΠΊΠΎΠΌ: Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΎΠΏΡ†ΠΈΠΈ бСзопасности кластСра Elasticsearch для доступа ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ ΠΈ снаруТи

Elastic Stack β€” извСстный инструмСнт Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅ SIEM-систСм (Π²ΠΎΠΎΠ±Ρ‰Π΅-Ρ‚ΠΎ, Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡ…). ΠœΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Π² сСбя ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½ΠΎΠΊΠ°Π»ΠΈΠ±Π΅Ρ€Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ. НС совсСм ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ссли доступ ΠΊ самим элСмСнтам Elastic Stack Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ всС ΠΊΠΎΡ€ΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ элСмСнты Elastic (Elasticsearch, Logstash, Kibana ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ Beats) Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΏΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌ. А Π² самой Kibana ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π° аутСнтификация. ВсС эти взаимодСйствия ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠΈΡ‚ΡŒ ΠΈ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ расскаТСм ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. Для удобства Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ»ΠΈ повСствованиС Π½Π° 3 смысловых Π±Π»ΠΎΠΊΠ°:

  • РолСвая модСль доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ
  • Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ кластСра Elasticsearch
  • Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π²Π½Π΅ кластСра Elasticsearch

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚ΠΎΠΌ.

РолСвая модСль доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ

Если ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Elasticsearch ΠΈ Π½ΠΈΠΊΠ°ΠΊ Π΅Π³ΠΎ Ρ‚ΡŽΠ½ΠΈΡ‚ΡŒ β€” доступ ΠΊΠΎ всСм индСксам Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ для всСх ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ…. Ну, ΠΈΠ»ΠΈ Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ curl. Π§Ρ‚ΠΎΠ±Ρ‹ этого ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ, Π² Elasticsearch Π΅ΡΡ‚ΡŒ ролСвая модСль, которая доступна начиная с подписки уровня Basic (ΠΎΠ½Π° бСсплатна). БхСматичСски выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Elastic ΠΏΠΎΠ΄ Π·Π°ΠΌΠΊΠΎΠΌ: Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΎΠΏΡ†ΠΈΠΈ бСзопасности кластСра Elasticsearch для доступа ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ ΠΈ снаруТи

Π§Ρ‚ΠΎ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅

  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ β€” это всС ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ с использованиСм ΡƒΡ‡Ρ‘Ρ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….
  • Роль β€” это Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π².
  • ΠŸΡ€Π°Π²Π° β€” это Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ.
  • ΠŸΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ β€” это Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° запись, Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈ Ρ‚.Π΄. (ΠŸΠΎΠ»Π½Ρ‹ΠΉ список ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ)
  • РСсурсы β€” это индСксы, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, поля, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡΡƒΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° (ролСвая модСль для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… рСсурсы доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΏΠ»Π°Ρ‚Π½Ρ‹Ρ… подписках).

Π’ Elasticsearch ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π΅ΡΡ‚ΡŒ ΠΊΠΎΡ€ΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ привязаны ΠΊΠΎΡ€ΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ Ρ€ΠΎΠ»ΠΈ. ПослС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ настроСк бСзопасности ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ сразу ΠΆΠ΅ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π² настройках Elasticsearch, Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ это elasticsearch/config/elasticsearch.yml) Π½ΠΎΠ²ΡƒΡŽ строку:

xpack.security.enabled: true

ПослС измСнСния Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ запускаСм ΠΈΠ»ΠΈ пСрСзапускаСм Elasticsearch, Ρ‡Ρ‚ΠΎΠ±Ρ‹ измСнСния вступили Π² силу. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг β€” присвоСниС ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ ΠΊΠΎΡ€ΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ. Π‘Π΄Π΅Π»Π°Π΅ΠΌ это ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½ΠΈΠΆΠ΅:

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

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ:

[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

МоТно Ρ…Π»ΠΎΠΏΠ½ΡƒΡ‚ΡŒ сСбя ΠΏΠΎ ΠΏΠ»Π΅Ρ‡Ρƒ β€” настройки Π½Π° сторонС Elasticsearch Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΡˆΠ»Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Kibana. Если Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Ρ‘ сСйчас, ΠΏΠΎΡΡ‹ΠΏΠ»ΡŽΡ‚ΡΡ ошибки, поэтому Π²Π°ΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. ДСлаСтся, это Π² Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ kibana ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, Π²Π²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΉ Π½Π° шагС создания ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ Π² Elasticsearch):

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

Если всё ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ β€” Kibana Π½Π°Ρ‡Π½Ρ‘Ρ‚ ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ. Π’ подпискС уровня Basic доступна ролСвая модСль Π½Π° основС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Начиная с Gold ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ внСшниС систСмы Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ β€” LDAP, PKI, Active Directory ΠΈ систСмы Single sign-on.

Elastic ΠΏΠΎΠ΄ Π·Π°ΠΌΠΊΠΎΠΌ: Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΎΠΏΡ†ΠΈΠΈ бСзопасности кластСра Elasticsearch для доступа ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ ΠΈ снаруТи

ΠŸΡ€Π°Π²Π° доступа ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ Elasticsearch Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ. ΠŸΡ€Π°Π²Π΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎ ΠΆΠ΅ самоС ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅ΠΉ, потрСбуСтся платная подписка (эта Ρ€ΠΎΡΠΊΠΎΡˆΡŒ начинаСтся с уровня Platinum). Π­Ρ‚ΠΈ настройки доступны Π² интСрфСйсС Kibana ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· Security API. МоТно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΠΎΠ΅ мСню Dev Tools:

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ€ΠΎΠ»ΠΈ

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

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

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

Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ кластСра Elasticsearch

Когда Elasticsearch Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² кластСрС (Π° это ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ΅ Π΄Π΅Π»ΠΎ), Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ становятся настройки бСзопасности Π²Π½ΡƒΡ‚Ρ€ΠΈ кластСра. Для бСзопасного взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΎΠ΄Π°ΠΌΠΈ, Elasticsearch ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» TLS. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ бСзопасноС взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ, Π½ΡƒΠΆΠ΅Π½ сСртификат. Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ сСртификат ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π² PEM-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅:

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

ПослС выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Ρ‹ΡˆΠ΅, Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /../elasticsearch появится Π°Ρ€Ρ…ΠΈΠ² elastic-stack-ca.zip. Π’Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ обнаруТатся сСртификат ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ с Ρ€Π°ΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌΠΈ crt ΠΈ key соотвСтствСнно. Π˜Ρ… ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π»ΠΎΠΆΠΈΡ‚ΡŒ Π½Π° shared рСсурс, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ доступ со всСх Π½ΠΎΠ΄ кластСра.

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ΄Ρ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½Ρ‹ свои сСртификаты ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡ΠΈ Π½Π° основС Ρ‚Π΅Ρ…, Ρ‡Ρ‚ΠΎ Π»Π΅ΠΆΠ°Ρ‚ Π² shared Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ попросят Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ. МоТно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ —ip ΠΈ —dns для ΠΏΠΎΠ»Π½ΠΎΠΉ Π²Π΅Ρ€ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π½ΠΎΠ΄.

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

По ΠΈΡ‚ΠΎΠ³Π°ΠΌ выполнСния ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ сСртификат ΠΈ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠ»ΡŽΡ‡ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ PKCS#12, Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ. ΠžΡΡ‚Π°Π»ΠΎΡΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ сгСнСрированный Ρ„Π°ΠΉΠ» p12 Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ:

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

Π”ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΊ сСртификату Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ p12 Π² keystore ΠΈ truststore Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ΄Π΅:

[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

Π’ ΡƒΠΆΠ΅ извСстный elasticsearch.yml ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ строки с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎ сСртификатС:

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

ЗапускаСм всС Π½ΠΎΠ΄Ρ‹ Elasticsearch ΠΈ выполняСм 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

Π•ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° опция ΠΏΠΎ бСзопасности β€” Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΡ IP-адрСсов (доступна Π² подписках ΠΎΡ‚ уровня Gold). ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π±Π΅Π»Ρ‹Π΅ списки IP-адрСсов, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½ΠΎΠ΄Π°ΠΌ.

Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π²Π½Π΅ кластСра Elasticsearch

Π’Π½Π΅ кластСра ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²Π½Π΅ΡˆΠ½ΠΈΡ… инструмСнтов: Kibana, Logstash, Beats ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ внСшниС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹.

Elastic ΠΏΠΎΠ΄ Π·Π°ΠΌΠΊΠΎΠΌ: Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΎΠΏΡ†ΠΈΠΈ бСзопасности кластСра Elasticsearch для доступа ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ ΠΈ снаруТи

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ https (вмСсто http), Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² 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

Π’.ΠΊ. сСртификат Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Π³ΠΎ Π² keystore ΠΈ truststore Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ΄Π΅:

[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

ПослС добавлСния ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Π½ΠΎΠ΄Ρ‹ Elasticsearch Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡŽ ΠΏΠΎ https. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг β€” созданиС ΠΊΠ»ΡŽΡ‡Π° для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Kibana ΠΈ Π΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ. На основС сСртификата, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½ Π² shared Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, сгСнСрируСм сСртификат Π² PEM-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ (PKCS#12 Kibana, Logstash ΠΈ Beats ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚):

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

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ созданныС ΠΊΠ»ΡŽΡ‡ΠΈ Π² ΠΏΠ°ΠΏΠΊΡƒ с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ Kibana:

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

ΠšΠ»ΡŽΡ‡ΠΈ Π΅ΡΡ‚ΡŒ, Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Kibana, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π½Π°Ρ‡Π°Π»Π° ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π’ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ kibana.yml мСняСм http Π½Π° https ΠΈ добавляСм строки с настройками SSL-ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. ПослСдниС Ρ‚Ρ€ΠΈ строки Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ бСзопасноС взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Kibana.

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

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, настройки Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΈ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π² кластСрС Elasticsearch Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½.

Если Ρƒ вас Π΅ΡΡ‚ΡŒ вопросы ΠΏΠΎ возмоТностям Elastic Stack Π½Π° бСсплатных ΠΈΠ»ΠΈ ΠΏΠ»Π°Ρ‚Π½Ρ‹Ρ… подписках, Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Ρƒ ΠΈΠ»ΠΈ созданию SIEM-систСмы ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ запрос Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи Π½Π° нашСм сайтС.

Π•Ρ‰Ρ‘ наши ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎΠ± Elastic Stack Π½Π° Π₯Π°Π±Ρ€Π΅:

РазбираСмся с Machine Learning Π² Elastic Stack (ΠΎΠ½ ΠΆΠ΅ Elasticsearch, ΠΎΠ½ ΠΆΠ΅ ELK)

Π‘Π°ΠΉΠ·ΠΈΠ½Π³ Elasticsearch

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com