Түгжээ ба түлхүүрийн доор уян харимхай: дотор болон гаднаас нэвтрэхэд зориулсан 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-г тохируулах цаг болжээ. Хэрэв та үүнийг одоо ажиллуулбал алдаа гарч ирэх тул түлхүүрийн дэлгүүр үүсгэх нь чухал юм. Үүнийг хоёр тушаалаар гүйцэтгэдэг (хэрэглэгч кибана болон Elasticsearch дээр нууц үг үүсгэх үе шатанд оруулсан нууц үг):

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

Хэрэв бүх зүйл зөв бол Кибана нэвтрэх болон нууц үг асууж эхэлнэ. Үндсэн захиалга нь дотоод хэрэглэгчдэд суурилсан үлгэр дууриалыг агуулдаг. Gold-аас эхлэн та гадаад баталгаажуулалтын системүүд - LDAP, PKI, Active Directory болон Single Sign-on системүүдийг холбож болно.

Түгжээ ба түлхүүрийн доор уян харимхай: дотор болон гаднаас нэвтрэхэд зориулсан Elasticsearch кластерын аюулгүй байдлын сонголтыг идэвхжүүлнэ

Elasticsearch доторх объектуудад хандах эрхийг мөн хязгаарлаж болно. Гэсэн хэдий ч баримт бичиг эсвэл талбарт ижил зүйлийг хийхийн тулд танд төлбөртэй захиалга хэрэгтэй болно (энэ тансаг байдал нь Платинум түвшингээс эхэлдэг). Эдгээр тохиргоог Кибана интерфэйс эсвэл дамжуулан авах боломжтой Аюулгүй байдлын 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. Дотор нь та гэрчилгээ, өргөтгөл бүхий хувийн түлхүүрийг олох болно Крт и гол тус тус. Тэдгээрийг кластерын бүх зангилаанаас хандах боломжтой хуваалцсан нөөцөд байрлуулахыг зөвлөж байна.

Одоо зангилаа бүрд өөрийн гэрчилгээ, хуваалцсан лавлахад суурилсан хувийн түлхүүр хэрэгтэй. Тушаалыг гүйцэтгэх үед нууц үг тохируулахыг танаас хүсэх болно. Харилцагч зангилааг бүрэн шалгахын тулд та нэмэлт сонголтуудыг -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 зангилааг ажиллуулж, гүйцэтгэдэг curl. Хэрэв бүх зүйл зөв хийгдсэн бол хэд хэдэн зангилаа бүхий хариултыг буцаана:

[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

Үүсгэсэн түлхүүрүүдийг Кибана тохиргоотой хавтсанд задлахад л үлдлээ.

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

Түлхүүрүүд байгаа тул Kibana тохиргоог өөрчлөхөд л тэдгээрийг ашиглаж эхэлнэ. kibana.yml тохиргооны файлд http-г https болгож өөрчилж, SSL холболтын тохиргоотой мөрүүдийг нэмнэ үү. Сүүлийн гурван мөр нь хэрэглэгчийн хөтөч болон Кибана хоорондын аюулгүй холболтыг тохируулдаг.

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-ийн талаарх бидний нийтлэлийн бусад зүйлс:

Мэдрэмжийн стек дэх машин сургалтын талаар ойлгох (Elasticsearch, ELK)

Elasticsearch хэмжээ

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх