Құлып пен кілт астында серпімді: ішінен және сыртынан қол жеткізу үшін Elasticsearch кластерінің қауіпсіздік опцияларын қосу

Құлып пен кілт астында серпімді: ішінен және сыртынан қол жеткізу үшін Elasticsearch кластерінің қауіпсіздік опцияларын қосу

Elastic Stack - бұл SIEM жүйелер нарығындағы танымал құрал (шын мәнінде олар ғана емес). Ол сезімтал және аса сезімтал емес көптеген әртүрлі өлшемді деректерді жинай алады. Elastic Stack элементтеріне қол жеткізу қорғалмаған болса, бұл мүлдем дұрыс емес. Әдепкі бойынша, барлық Elastic қораптан тыс элементтер (Elasticsearch, Logstash, Kibana және Beats коллекторлары) ашық хаттамаларда жұмыс істейді. Ал Кибананың өзінде аутентификация өшірілген. Барлық осы өзара әрекеттесулерді қорғауға болады және осы мақалада біз мұны қалай жасау керектігін айтамыз. Ыңғайлы болу үшін біз әңгімені 3 семантикалық блокқа бөлдік:

  • Рөлге негізделген деректерге қол жеткізу моделі
  • Elasticsearch кластеріндегі деректер қауіпсіздігі
  • Elasticsearch кластерінен тыс деректерді қорғау

Кесу астындағы мәліметтер.

Рөлге негізделген деректерге қол жеткізу моделі

Егер сіз Elasticsearch бағдарламасын орнатып, оны ешбір жолмен реттемесеңіз, барлық индекстерге қол жеткізу барлығына ашық болады. Жақсы, немесе curl пайдалана алатындар. Бұған жол бермеу үшін, Elasticsearch негізгі жазылымнан (тегін) бастап қол жетімді рөлдік үлгіге ие. Схемалық түрде ол келесідей көрінеді:

Құлып пен кілт астында серпімді: ішінен және сыртынан қол жеткізу үшін 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

Егер бәрі дұрыс болса, Кибана логин мен құпия сөзді сұрай бастайды. Негізгі жазылым ішкі пайдаланушыларға негізделген үлгі үлгісін қамтиды. Алтыннан бастап сыртқы аутентификация жүйелерін – LDAP, PKI, Active Directory және бір рет кіру жүйелерін қосуға болады.

Құлып пен кілт астында серпімді: ішінен және сыртынан қол жеткізу үшін Elasticsearch кластерінің қауіпсіздік опцияларын қосу

Elasticsearch ішіндегі нысандарға қол жеткізу құқықтары да шектелуі мүмкін. Дегенмен, құжаттар немесе өрістер үшін де солай істеу үшін сізге ақылы жазылым қажет болады (бұл сән-салтанат Platinum деңгейінен басталады). Бұл параметрлер 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 әр түйіндегі кілттер қоймасында және сенімді дүкенде:

[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 немесе басқа сыртқы клиенттер.

Құлып пен кілт астында серпімді: ішінен және сыртынан қол жеткізу үшін 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

Өйткені Куәлік құпия сөзбен қорғалған, оны әр түйінде кілттер қоймасына және сенім қоймасына қосыңыз:

[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 қосу үшін кілт жасау және оны конфигурацияға қосу. Ортақ каталогта бұрыннан бар сертификат негізінде біз 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 кластеріндегі деректерге қол жеткізу шифрланады.

Тегін немесе ақылы жазылымдарда, бақылау тапсырмаларында немесе SIEM жүйесін жасауда Elastic Stack мүмкіндіктері туралы сұрақтарыңыз болса, мына мекенжайға сұрау қалдырыңыз. кері байланыс формасы біздің сайтта.

Хабредегі Elastic Stack туралы қосымша мақалаларымыз:

Эластикалық стектегі машиналық оқытуды түсіну (aka Elasticsearch, ELK)

Elasticsearch өлшемдері

Ақпарат көзі: www.habr.com

пікір қалдыру