Кулпу жана ачкыч астында ийкемдүү: ичинен жана сыртынан кирүү үчүн 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 тарабындагы орнотуулар аяктады. Эми Кибананы конфигурациялоого убакыт келди. Эгер сиз аны азыр иштетсеңиз, каталар пайда болот, андыктан негизги дүкөндү түзүү маанилүү. Бул эки буйрукта (user кибана жана Elasticsearchте сырсөздү түзүү кадамында киргизилген сырсөз):

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

Эгер баары туура болсо, Kibana логин менен сырсөздү сурап баштайт. Негизги жазылуу ички колдонуучуларга негизделген үлгүнү камтыйт. Алтындан баштап, сиз тышкы аутентификация системаларын - 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 аркылуу туташууга даяр. Эми аларды ишке киргизсе болот.

Кийинки кадам - ​​Кибананы туташтыруу үчүн ачкыч түзүү жана аны конфигурацияга кошуу. Бөлүшүлгөн каталогдо мурунтан эле жайгашкан сертификаттын негизинде биз 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

Кибана конфигурациясы бар папкага түзүлгөн ачкычтарды ачуу гана калды:

[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тин мүмкүнчүлүктөрү тууралуу суроолоруңуз болсо, төмөнкүгө өтүнүч калтырыңыз. пикир формасы биздин сайтта.

Habré боюнча Elastic Stack жөнүндө көбүрөөк макалаларыбыз:

Эластикалык стектеги машинаны үйрөнүүнү түшүнүү (aka Elasticsearch, ELK)

Elasticsearch өлчөмү

Source: www.habr.com

Комментарий кошуу