Elastik Kilidi: Daxili və Xarici Giriş üçün Elasticsearch Cluster Təhlükəsizlik Seçimlərinin Aktivləşdirilməsi

Elastik Kilidi: Daxili və Xarici Giriş üçün Elasticsearch Cluster Təhlükəsizlik Seçimlərinin Aktivləşdirilməsi

Elastic Stack SIEM sistemləri bazarında tanınmış bir vasitədir (əslində təkcə onlar deyil). O, həm həssas, həm də çox həssas olmayan bir çox müxtəlif ölçülü məlumat toplaya bilər. Elastik yığın elementlərinin özlərinə giriş qorunmursa, bu, tamamilə düzgün deyil. Varsayılan olaraq, bütün Elastik qutu elementləri (Elasticsearch, Logstash, Kibana və Beats kollektorları) açıq protokollarda işləyir. Kibananın özündə isə autentifikasiya deaktiv edilib. Bütün bu qarşılıqlı əlaqələr təmin edilə bilər və bu məqalədə bunu necə edəcəyinizi sizə xəbər verəcəyik. Rahatlıq üçün hekayə 3 semantik bloka bölündü:

  • Məlumata çıxışın rol modeli
  • Elasticsearch klasterində məlumat təhlükəsizliyi
  • Elasticsearch klasterindən kənar məlumat təhlükəsizliyi

Kəsmə altındakı detallar.

Məlumata çıxışın rol modeli

Elasticsearch-i quraşdırsanız və onu heç bir şəkildə tənzimləsəniz, bütün indekslərə giriş hamı üçün açıq olacaq. Yaxşı, ya da curl istifadə edə bilənlər. Bunun qarşısını almaq üçün Elasticsearch-də əsas səviyyəli abunə ilə (pulsuz) başlayan bir rol modeli var. Sxematik olaraq belə görünür:

Elastik Kilidi: Daxili və Xarici Giriş üçün Elasticsearch Cluster Təhlükəsizlik Seçimlərinin Aktivləşdirilməsi

Şəkildə nə var

  • İstifadəçilər etimadnamələrdən istifadə edərək daxil ola bilənlərdir.
  • Rol hüquqlar toplusudur.
  • Hüquqlar imtiyazlar toplusudur.
  • İmtiyazlar yazmaq, oxumaq, silmək və s. icazələridir. (İmtiyazların tam siyahısı)
  • Resurslar indekslər, sənədlər, sahələr, istifadəçilər və digər yaddaş obyektləridir (bəzi resurslar üçün nümunə yalnız ödənişli abunəliklərdə mövcuddur).

Elasticsearch standart olaraq var qutulu istifadəçilərhansılara əlavə olunur qutu rolları. Təhlükəsizlik parametrlərini işə saldıqdan sonra dərhal istifadə etməyə başlaya bilərsiniz.

Elasticsearch parametrlərində təhlükəsizliyi aktivləşdirmək üçün onu konfiqurasiya faylına əlavə etməlisiniz (defolt olaraq bu elasticsearch/config/elasticsearch.yml) yeni xətt:

xpack.security.enabled: true

Konfiqurasiya faylını dəyişdirdikdən sonra dəyişikliklərin qüvvəyə minməsi üçün Elasticsearch-i başladın və ya yenidən başladın. Növbəti addım qutulu istifadəçilərə parol təyin etməkdir. Bunu aşağıdakı komanda ilə interaktiv şəkildə edək:

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

Yoxlayırıq:

[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

Özünüzü çiyninizə vura bilərsiniz - Elasticsearch tərəfindəki parametrlər tamamlandı. İndi Kibana quraşdırmağın növbəsidir. İndi işə salsanız, səhvlər azalacaq, ona görə də açar anbarı yaratmaq vacibdir. Bu iki əmrlə edilir (user kibana və Elasticsearch-də parolların yaradılması mərhələsində daxil edilən parol):

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

Hər şey düzgündürsə, Kibana istifadəçi adı və parol istəməyə başlayacaq. Əsas abunəlikdə daxili istifadəçilərə əsaslanan rol modeli mövcuddur. Qızıldan başlayaraq siz xarici autentifikasiya sistemlərini - LDAP, PKI, Active Directory və Tək giriş sistemlərini birləşdirə bilərsiniz.

Elastik Kilidi: Daxili və Xarici Giriş üçün Elasticsearch Cluster Təhlükəsizlik Seçimlərinin Aktivləşdirilməsi

Elasticsearch daxilindəki obyektlərə giriş hüquqları da məhdudlaşdırıla bilər. Doğrudur, sənədlər və ya sahələr üçün eyni şeyi etmək üçün sizə ödənişli abunə lazımdır (bu lüks Platin səviyyəsindən başlayır). Bu parametrlər Kibana interfeysində və ya vasitəsilə mövcuddur Təhlükəsizlik API. Artıq tanış olan Dev Tools menyusunu yoxlaya bilərsiniz:

Rol yaradın

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

İstifadəçi yaradılması

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 klasterində məlumat təhlükəsizliyi

Elasticsearch klasterdə işlədikdə (bu ümumidir), klaster daxilində təhlükəsizlik parametrləri vacib olur. Qovşaqlar arasında təhlükəsiz əlaqə üçün Elasticsearch TLS protokolundan istifadə edir. Onlar arasında təhlükəsiz əlaqə qurmaq üçün sizə sertifikat lazımdır. PEM formatında sertifikat və şəxsi açar yaradırıq:

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

Yuxarıdakı əmri yerinə yetirdikdən sonra kataloqda /../elasticsearch arxiv görünəcək elastik-stack-ca.zip. Onun içərisində bir sertifikat və uzantıları olan şəxsi açar tapa bilərsiniz crt и açar müvafiq olaraq. Onları klasterin bütün qovşaqlarından daxil olmaq üçün ortaq bir mənbəyə yerləşdirmək məsləhətdir.

İndi hər bir qovşaq paylaşılan kataloqda olanlara əsaslanan öz sertifikatlarına və şəxsi açarlarına ehtiyac duyur. Əmr yerinə yetirildikdə sizdən parol təyin etməyiniz xahiş olunacaq. Əlaqə quran qovşaqları tam yoxlamaq üçün əlavə seçimlər -ip və -dns əlavə edilə bilər.

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

Komandanın icrası nəticəsində biz parolla qorunan PKCS # 12 formatında sertifikat və şəxsi açar alacağıq. Yaradılmış faylı köçürmək qalır p12 konfiqurasiya qovluğuna:

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

Formatda sertifikata parol əlavə edin p12 hər bir qovşaqda açar anbarında və etibarlı mağazada:

[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

Artıq məlum olanda elasticsearch.yml sertifikat haqqında məlumatları olan sətirləri əlavə etmək qalır:

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

Bütün Elasticsearch qovşaqlarını işə salırıq və icra edirik curl. Hər şey düzgün aparılıbsa, bir neçə qovşaqdan ibarət cavab qaytarılacaq:

[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

Başqa bir təhlükəsizlik seçimi var - IP ünvan filtrasiyası (Qızıl səviyyədən abunəliklərdə mövcuddur). Düyünlərə daxil olmağa icazə verilən IP ünvanlarının ağ siyahılarını yaratmağa imkan verir.

Elasticsearch klasterindən kənar məlumat təhlükəsizliyi

Klaster xaricində xarici alətləri birləşdirmək deməkdir: Kibana, Logstash, Beats və ya digər xarici müştərilər.

Elastik Kilidi: Daxili və Xarici Giriş üçün Elasticsearch Cluster Təhlükəsizlik Seçimlərinin Aktivləşdirilməsi

https dəstəyini konfiqurasiya etmək üçün (http əvəzinə) elasticsearch.yml-ə yeni sətirlər əlavə edin:

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

Çünki sertifikat parolla qorunur, gəlin onu hər bir qovşaqda açar anbarına və etibarlı mağazaya əlavə edək:

[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çarları əlavə etdikdən sonra Elasticsearch qovşaqları https vasitəsilə qoşulmağa hazırdır. İndi onlar işə salına bilər.

Növbəti addım Kibana əlaqə açarı yaratmaq və onu konfiqurasiyaya əlavə etməkdir. Artıq paylaşılan kataloqda olan sertifikat əsasında biz PEM formatında sertifikat yaradacağıq (PKCS # 12 Kibana, Logstash və Beats hələ dəstəkləmir):

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

Yaradılmış açarları Kibana konfiqurasiya qovluğuna açmaq qalır:

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

Açarlar oradadır, ona görə də Kibana konfiqurasiyasını dəyişdirmək qalır ki, onlardan istifadə etməyə başlasın. kibana.yml konfiqurasiya faylında http-ni https-ə dəyişin və SSL bağlantı parametrləri ilə sətirlər əlavə edin. Son üç sətir istifadəçinin brauzeri ilə Kibana arasında təhlükəsiz qarşılıqlı əlaqə qurur.

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

Beləliklə, parametrlər edilir və Elasticsearch klasterindəki məlumatlara giriş şifrələnir.

Pulsuz və ya ödənişli abunəliklərdə Elastik Yığın xüsusiyyətləri, monitorinq və ya SIEM sisteminin yaradılması tapşırıqları ilə bağlı suallarınız varsa, bu ünvanda sorğu buraxın. rəy forması saytımızda.

Habré-də Elastic Stack haqqında daha çox məqaləmiz:

Elastik yığında Maşın Öyrənməsini Anlamaq (aka Elasticsearch, aka ELK)

Ölçü Elasticsearch

Mənbə: www.habr.com

Добавить комментарий