ProHoster > блог > адміністраванне > Elastic пад замкам: уключаем опцыі бяспекі кластара Elasticsearch для доступу знутры і звонку
Elastic пад замкам: уключаем опцыі бяспекі кластара Elasticsearch для доступу знутры і звонку
Elastic Stack – вядомая прылада на рынку SIEM-сістэм (наогул-то, не толькі іх). Можа збіраць у сябе шмат рознакаліберных дадзеных, як адчувальных, так і не вельмі. Не зусім правільна, калі доступ да саміх элементаў Elastic Stack не будзе абаронены. Па змаўчанні ўсе скрынкавыя элементы Elastic (Elasticsearch, Logstash, Kibana і калектары Beats) працуюць па адчыненых пратаколах. А ў самой Kibana адключаная аўтэнтыфікацыя. Усе гэтыя ўзаемадзеянні можна засцерагчы і ў гэтым артыкуле мы раскажам як гэта зрабіць. Для зручнасці падзялілі апавяданне на 3 сэнсавыя блокі:
Ролевая мадэль доступу да дадзеных
Бяспека дадзеных унутры кластара Elasticsearch
Бяспека дадзеных па-за кластарам Elasticsearch
Падрабязнасці пад катом.
Ролевая мадэль доступу да дадзеных
Калі ўсталяваць Elasticsearch і ніяк яго цюніць – доступ да ўсіх азначнікаў будзе адчынены для ўсіх жадаючых. Ну, ці тых, хто можа карыстацца curl. Каб гэтага пазбегнуць, у Elasticsearch ёсць ролевая мадэль, якая даступная пачынальна з падпіскі ўзроўня Basic (яна бясплатная). Схематычна выглядае прыкладна так:
Што на малюнку
Карыстальнікі - гэта ўсе хто можа аўтарызавацца з выкарыстаннем уліковых дадзеных.
Роля - гэта набор правоў.
Правы - гэта набор прывілеяў.
Прывілеі - гэта дазволы на запіс, чытанне, выдаленне і г.д. (Поўны спіс прывілеяў)
Рэсурсы - гэта індэксы, дакументы, палі, карыстальнікі і іншыя суб'екты сховішчы (ролевая мадэль для некаторых рэсурсы даступная толькі ў платных падпісках).
У 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. Калі запусціць яе зараз, пасыплюцца памылкі, таму важна стварыць сховішча ключоў. Робіцца, гэта ў дзве каманды (карыстальнік кібана і пароль, уведзены на этапе стварэння пароляў у Elasticsearch):
Калі ўсё правільна - Kibana пачне прасіць лагін і пароль. У падпісцы ўзроўню Basic даступная ролевая мадэль на аснове ўнутраных карыстальнікаў. Пачынальна з Gold можна падлучаць вонкавыя сістэмы аўтэнтыфікацыі – LDAP, PKI, Active Directory і сістэмы Single sign-on.
Правы доступу да аб'ектаў усярэдзіне Elasticsearch таксама можна абмежаваць. Праўда, каб тое ж самае зрабіць для дакументаў ці палёў, запатрабуецца платная падпіска (гэтая раскоша пачынаецца з узроўня Platinum). Гэтыя наладкі даступныя ў інтэрфейсе Kibana або праз Security API. Можна праверыць праз ужо знаёмае меню Dev Tools:
Калі Elasticsearch працуе ў кластары (а гэта звычайная справа), важнымі становяцца налады бяспекі ўсярэдзіне кластара. Для бяспечнага ўзаемадзеяння паміж нодамі, Elasticsearch выкарыстоўвае пратакол TLS. Каб наладзіць бяспечнае ўзаемадзеянне паміж імі, патрэбен сертыфікат. Які генеруецца сертыфікат і прыватны ключ у PEM-фармаце:
[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-certutil ca --pem
Пасля выканання каманды вышэй, у дырэкторыі /../elasticsearch з'явіцца архіў elastic-stack-ca.zip. Унутры яго выявяцца сертыфікат і прыватны ключ з пашырэннямі. крэст и ключ адпаведна. Іх пажадана выкласці на shared рэсурс, да якога павінен быць доступ са ўсіх нод кластара.
Для кожнай ноды зараз патрэбныя свае сертыфікаты і прыватныя ключы на аснове тых, што ляжаць у shared дырэкторыі. Пры выкананні каманды папросяць задаць пароль. Можна дадаць дадатковыя опцыі -ip і -dns для поўнай верыфікацыі ўзаемадзейнічаюць нод.
Па выніках выканання каманды атрымаем сертыфікат і прыватны ключ у фармаце PKCS#12, абаронены паролем. Засталося перамясціць згенераваны файл p12 у дырэкторыю з канфігурацыяй:
Ёсць яшчэ адна опцыя па бяспецы – фільтраванне IP-адрасоў (даступная ў падпісках ад узроўня Gold). Дазваляе ствараць белыя спісы IP-адрасоў, з якіх дазволена звяртацца да нодаў.
Бяспека дадзеных па-за кластарам Elasticsearch
Па-за кластарам азначае падлучэнне вонкавых прылад: Kibana, Logstash, Beats ці іншыя вонкавыя кліенты.
Каб настроіць падтрымку https (замест http), дадамо ў elasticsearch.yml новыя радкі:
Пасля дадання ключоў, ноды Elasticsearch гатовыя да падлучэння па https. Цяпер іх можна запусціць.
Наступны крок - стварэнне ключа для падлучэнне Kibana і яго даданне ў канфігурацыю. На аснове сертыфіката, які ўжо размешчаны ў shared дырэкторыі, згенеруем сертыфікат у PEM-фармаце (PKCS#12 Kibana, Logstash і Beats пакуль не падтрымліваюць):
Ключы ёсць, значыць засталося змяніць канфігурацыю Kibana, каб яна пачала іх выкарыстоўваць. У канфігурацыйным файле kibana.yml змяняем http на https і дадаем радкі з наладамі SSL-падлучэння. Апошнія тры радкі наладжваюць бяспечнае ўзаемадзеянне паміж браўзэрам карыстача і Kibana.
Такім чынам, налады выкананы і доступ да дадзеных у кластары Elasticsearch зашыфраваны.
Калі ў вас ёсць пытанні па магчымасцях Elastic Stack на бясплатных або платных падпісках, задачы па маніторынгу або стварэнню SIEM-сістэмы пакіньце запыт у форме зваротнай сувязі на нашым сайце.