Elastic under lock and key: فعال کردن گزینه های امنیتی خوشه Elasticsearch برای دسترسی از داخل و خارج

Elastic under lock and key: فعال کردن گزینه های امنیتی خوشه Elasticsearch برای دسترسی از داخل و خارج

Elastic Stack یک ابزار شناخته شده در بازار سیستم های SIEM (در واقع نه تنها آنها) است. این می تواند داده های با اندازه های مختلف را جمع آوری کند، چه حساس و چه نه خیلی حساس. اگر دسترسی به عناصر Elastic Stack محافظت نشود، کاملاً صحیح نیست. به طور پیش‌فرض، همه عناصر خارج از جعبه Elastic (کلکتورهای Elasticsearch، Logstash، Kibana و Beats) روی پروتکل‌های باز اجرا می‌شوند. و در خود کیبانا احراز هویت غیر فعال است. همه این تعاملات را می توان ایمن کرد و در این مقاله به شما خواهیم گفت که چگونه این کار را انجام دهید. برای راحتی، روایت را به 3 بلوک معنایی تقسیم کردیم:

  • مدل دسترسی به داده مبتنی بر نقش
  • امنیت داده در یک خوشه Elasticsearch
  • ایمن سازی داده ها در خارج از یک خوشه Elasticsearch

جزئیات زیر برش.

مدل دسترسی به داده مبتنی بر نقش

اگر Elasticsearch را نصب کنید و به هیچ وجه آن را تنظیم نکنید، دسترسی به همه فهرست ها برای همه باز خواهد بود. خوب، یا کسانی که می توانند از فر استفاده کنند. برای جلوگیری از این امر، Elasticsearch یک الگو دارد که با شروع اشتراک Basic (که رایگان است) در دسترس است. از نظر شماتیک چیزی شبیه این به نظر می رسد:

Elastic under lock and key: فعال کردن گزینه های امنیتی خوشه 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 است. اگر اکنون آن را اجرا کنید، خطاهایی ظاهر می شود، بنابراین مهم است که یک فروشگاه کلید ایجاد کنید. این کار در دو دستور (user کیبانا و رمز عبور وارد شده در مرحله ایجاد رمز عبور در Elasticsearch):

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

اگر همه چیز درست باشد، کیبانا شروع به درخواست ورود و رمز عبور می کند. اشتراک پایه شامل یک الگوی نقش مبتنی بر کاربران داخلی است. با شروع با Gold، می توانید سیستم های احراز هویت خارجی - LDAP، PKI، Active Directory و سیستم های Single sign-on را به هم متصل کنید.

Elastic under lock and key: فعال کردن گزینه های امنیتی خوشه Elasticsearch برای دسترسی از داخل و خارج

حقوق دسترسی به اشیاء داخل Elasticsearch نیز می تواند محدود شود. با این حال، برای انجام همین کار برای اسناد یا فیلدها، به اشتراک پولی نیاز دارید (این لوکس با سطح پلاتینیوم شروع می شود). این تنظیمات در رابط Kibana یا از طریق در دسترس هستند امنیت 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 и کلید به ترتیب. توصیه می شود آنها را در یک منبع مشترک قرار دهید، که باید از تمام گره های خوشه قابل دسترسی باشد.

اکنون هر گره به گواهینامه ها و کلیدهای خصوصی بر اساس موارد موجود در فهرست مشترک نیاز دارد. هنگام اجرای دستور، از شما خواسته می شود که یک رمز عبور تعیین کنید. می‌توانید گزینه‌های اضافی -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 را راه اندازی کرده و اجرا می کنیم حلقه. اگر همه چیز به درستی انجام شده باشد، یک پاسخ با چندین گره برگردانده می شود:

[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 (در اشتراک های سطح طلا موجود است). به شما امکان می‌دهد لیست‌های سفید آدرس‌های IP ایجاد کنید که از آنها اجازه دسترسی به گره‌ها را دارید.

ایمن سازی داده ها در خارج از یک خوشه Elasticsearch

خارج از خوشه به معنای اتصال ابزارهای خارجی است: Kibana، Logstash، Beats یا سایر مشتریان خارجی.

Elastic under lock and key: فعال کردن گزینه های امنیتی خوشه 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 هستند. اکنون می توان آنها را راه اندازی کرد.

مرحله بعدی ایجاد یک کلید برای اتصال کیبانا و اضافه کردن آن به پیکربندی است. بر اساس گواهی که قبلاً در دایرکتوری مشترک قرار دارد، گواهینامه‌ای در قالب 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 اضافه کنید. سه خط آخر ارتباط امن بین مرورگر کاربر و کیبانا را پیکربندی می کند.

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 (با نام مستعار Elasticsearch، با نام مستعار ELK)

اندازه گیری Elasticsearch

منبع: www.habr.com

اضافه کردن نظر