امنیت در ElasticSearch و Kibana


الستیک یک موتور جستجوی بسیار قوی و سریعه که هر چیزی رو میتونید توش بریزید و بخونید
فرض رو بر این میزارم که میدونید چیه و اگرهم نمی دونستید لینک یک مقاله که تقریبا کامل توضیح دادن رو میزارم

https://virgool.io/@mkay1375/%D9%86%D8%B5%D8%A8-elasticsearch-%D9%88-kibana-%D9%86%D8%B3%D8%AE%D9%87-%DB%B7-%D8%A8%D9%87-%D8%B5%D9%88%D8%B1%D8%AA-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%D8%A8%D8%B1-%D8%B1%D9%88%DB%8C-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2-e5xeqzmummlc

تا قبل از نسخه 8 ، پک (x-pack) امنیتی روش فعال نبود و باید خودمون نصب میکردیم ولی تو نسخه 8 به بعد این پک به صورت پیش فرض همراه elastic نصب میشه (بعضی وقت ها تو نسخه 8 به بالا تنظیمات خودکار عمل نمیکنه و پک نصب نمیشه) که باید خودمون تنظیماتشو وارد کنیم

پک امنیتی بهتون امکانات زیادی میده ولی دوتا از مهمترین هاش SSL و Login کاربر هست که لینک اجرا بر روی https فعال میشه و صفحه ورود کاربر هم بهش اضافه میشه

بریم برای نصب

اول فایل فشرده الستیک رو دانلود کنید و یکجایی اکسترکت کنید

داخل پوشه الستیک میشیم و داخل bin میریم و cmd رو باز میکنیم و تایپ میکنیم elasticsearch و صبر میکنیم تا سرویس کامل اجرا بشه بعد داخل مرورگر localhost:9200 رو وارد میکنیم

اگر روی https باز شد و رمز خواست که فبها ولی اگر روی http باز شد و از اونجا که تو کیبانا ورژن 8 به بالا با ادرس https الستیک ارتباط میگیره پس باید الستیک هم روی https باز کنیم.

برای اینکار باید مراحل زیر رو بریم

داخل پوشه الستیک پوشه bin رو باز میکنیم و cmd رو میزنیم دستورات زیر رو وارد میکنیم

elasticsearch-certutil ca

این نام رو وارد میکنیم elastic-stack-ca.p12 و اینتر میزنیم

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

یک فایل با همان اسم elastic-stack-ca.p12 در پوشه اصلی برنامه یعنی یک پوشه عقبتر ساخته میشه

فایل رو به داخل پوشه config منتقل میکنیم بعد دوباره در خط فرمان دستور زیر را وارد میکنیم

elasticsearch-certutil http

بعد به ترتیب مقابل هر سوالی که میپرسه مقادیر زیر رو وارد کنید و اینتر بزنید

Generate a CSR? = n
Use an existing CA? = y
CA Path: = elastic-stack-ca.p12
Password for elastic-stack-ca.p12: = میتونید رمز بدید یا خالی اینتر بزنید
For how long should your certificate be valid? = 5y
Generate a certificate per node? [y/N] = n
Enter all the hostnames .... = localhost
Is this correct [Y/n] = y
Do you wish to change any of these options? [y/N] = n
Provide a password for the &quothttp.p12&quot file: =  اینتر بزنید
What filename should be used for the output zip file? = اینتر بزنید

یک فایل با نام elasticsearch-ssl-http.zip در پوشه اصلی ساخته میشه

اکسترکتش بدید و برید داخلش، پوشه الستیک و فایل http.p12 رو در پوشه config برنامه کپی کنید

تو پوشه config فایل elasticsearch.yml رو با نوت پد باز کنید و کدهای زیر رو به آخرش اضافه کنید

# Enable security features
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
# Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents
xpack.security.http.ssl:
  enabled: true
  keystore.path: http.p12
# Connections are encrypted and require user authentication
http.host: [_local_, _site_]

حالا برید تو پوشه bin و دستور elasticsearch رو در خط فرمان داس وارد کنید

و تو مرورگر ادرس http://localhost:9200 رو وارد کنید. میبینید دیگه صفحه الستیک باز نمیشه

حالا ادرس https://localhost:9200 رو وارد کنید (با https). صفحه الستیک باز شد

برای اینکه دوباره برگردیم حالت قبلی و با http خالی باز بشه کافیه فقط فایل elasticsearch.yml با ادیتور باز کنید و مقدار xpack.security.enrollment.enabled: false رو برابر false قرار بدید

حالا ازتون نام کاربری و رمز ورود میخواد

اگر رمز رو دارید وارد کنید اگر ندارید با دستور زیر رمز جدید رو جنریت کنید

elasticsearch-reset-password -u elastic

کلمه elastic نام کاربری ادمین پیش فرض در الستیکه

اگر رمز رو داد که حله اگر نداد و خطایی داد این مرحله رو قبل از تمام مراحل بالا برید

حالا بریم سراغ کیبانا

کیبانا رو دانلود کنید یکجا اکسترکت بدید

برید داخل پوشه کیبانا و داخل پوشه bin و cmd رو اجرا کنید و تایپ کنید kibana و اینتر بزنید.سرویس کیبانا اجرا میشه

اگر همه چیز درست باشه تصویر زیر رو میبیند

حالا تو مرورگر ادرس http://localhost:5601 رو باز کنید تا پنل ادمین کیبانا باز بشه

میتونید از دو طریق ادامه بدید

1-توکن

2-تنظیم دستی

برای روش اول اگر اولین بار که الستیک رو اجرا میکنید توکن رو میده و اونو یه جایی ذخیره کردید وارد اینجا کنید در غیر اینصورت داخل پوشه الستیک بعدش داخل bin و دستور زیر رو اجرا کنید و توکن جدید رو بگیرید و در پنل کیبانا وارد کنید

elasticsearch-create-enrollment-token

برای روش دوم تنظیم دستی رو بزنید. ادرس url الستیک رو وارد کنید برید مرحله بعد

تو مرحله بعد اگر رمز کیبانا رو ندارید با دستور زیر رمز جدید کیبانا رو جنریت کنید و تو کادر بزارید و ...

elasticsearch-reset-password -u kibana_system


اطلاعات کاملتر رو میتونید از لینک های زیر بخونید

https://www.elastic.co/guide/en/elasticsearch/reference/current/security-basic-setup.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/security-basic-setup-https.html