Elastic Stack á SIEM áľáááśá˝ áá ፠ááľáĽ á áŁá á¨áłáá ááłáŞáŤ áá (á áĽáááą, áĽááą áĽáť á áá°áá). á áŁá áĽá á¨á°ááŤá¨ áá á áŤáá ááἠáá°á áľáĽ áá˝ááᣠáááąá ááľáĽáŤáááľ áŤáá¸á áĽá á áŁá ááľáĽáŤáááľ á¨ááá¸áᢠᨠElastic Stack á¤ááááśá˝á ááááľ áĽáŤáłá¸á áŤáá°á á á áá á áá áľááá á áá°áá. á ááŁáŞáŁ ááá á¨ááľá˛á áŚááľ áááá˝ (ElasticsearchᣠLogstashᣠKibana áĽá Beats á°áĽáłá˘áá˝) á áááľ ááŽáśáŽáá˝ áá áá°áŤáᢠáĽá á áŞáŁá áŤáąáŁ áá¨ááἠá°á°ááááᢠáĽááá
áá áááááśá˝ áá á á áá˝áá, áĽá á áá
á˝áá ááľáĽ áĽáá´áľ áĽáá°ááŤá°áááľ áĽááááááłáá. ááááťá¸áľ áłáŞáŠ á 3 á¨áľááá áĽááŽá˝ á°á¨áááá˘
- á¨áá¨á á°á°áŤá˝ááľ áá´á
- á¨ááἠá°á áááľ á Elasticsearch ááá ááľáĽ
- á¨ááἠá°á ááᾠᨠElasticsearch ááá áá
á ááᥠáľá ááááŽá˝.
á¨áá¨á á°á°áŤá˝ááľ áá´á
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 á áŠá áŤááľ á ááĽáŽá˝ á°á¨ááááá. á áá á°áŤá áŞáŁáá ááááááľ ááᢠá áá áŤáľáŹáą, áľá á°áśá˝ áááľáá, áľááá á¨ááá áá¨ááť ááá á á áľááá áá. áá á áááľ áľáááá˝ (á°á áá áŞáŁá áĽá á Elasticsearch ááľáĽ á¨ááá ááá˝á á ááá á á°á¨á áá á¨ááŁá á¨ááá áááĄ-
[elastic@node1 ~]$ ./kibana/bin/kibana-keystore add elasticsearch.username
[elastic@node1 ~]$ ./kibana/bin/kibana-keystore add elasticsearch.password
ááá ááá áľááá á¨áá áŞáŁá á¨á°á áá áľá áĽá á¨ááá áá áá á¨á ááááŤáᢠá áá á¨áłá á¨á°áá áááľ áááᣠááľáĽáŁ á ááľáŁá á°á áááá˝ áá á¨á°áá°á¨á° á áá ፠á áᢠá¨ááá ááᎠá¨ááŤá á¨áá¨áá፠áľáááśá˝á - LDAPᣠPKIᣠActive Directory áĽá áá á á¨áá፠ááá˘áŤ áľáááśá˝á áááááľ áá˝ááá˘
á Elasticsearch ááľáĽ áá áááŽá˝ á¨ááłá¨áľ ááĽáśá˝ áĽáá˛á ááá°áĄ áá˝ááᢠáĽáááľ áá, áá°ááśá˝ ááá ááľáŽá˝ á°ááłáłá ááá áááľá¨á, á¨áá¨ááá áľ á¨á°áá áááľ áááᣠáŤáľáááááłá (áá
á¨á
ááŚáľ á°á¨á á ááá˛áá¨á á°á¨á ááááŤá). áĽááá
á
ááĽáŽá˝ á áŞáŁá á áááá˝ ááá á á áŠá áááá
áá ááá áŠ
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 áá á°áŠ ááłáŤá ááľá˛á-ááá-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 nodes áĽááááŤáá áĽá áĽááá˝áááᢠá¨á°áá á. ááá ááá á áľááá á¨á°á°áŤ ᣠá ááŤáł á áááá˝ áŤááľ ááá˝ ááááłáá˘
[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
áá á¨á°á áááľ á ááŤá á á - á¨á áá á áľáŤáť ááŁáŞáŤ (á¨ááá á°á¨á á á°áá áááľ ááááŁáá˝ ááľáĽ áááá)ᢠá áááá˝ áĽáá˛á°ááąáŁá¸á á¨ááááľáá¸á á¨á áá á áľáŤáťáá˝ áá ááááŽá˝á áĽáá˛ááĽáŠ ááá áľáááłáá˘
á¨ááἠá°á ááᾠᨠ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
á¨á°áá áŠáľá áááá˝ áá° Kibana áá á á áá áááááľ áááŤááĄ-
[elastic@node1 ~]$ unzip elasticsearch/certificate-bundle.zip -d kibana/config
ááááš áĽá፠á á, áľááá áĽááąá áá áá áĽáá˛ááá á¨áŞáŁá á ááááŠá ááááἠáááŤá. á kibana.yml áá á ááá ááľáĽ http áá° https áááአáĽá ááľááŽá˝á á¨á¤áľá¤áľá¤á áááááľ á ááĽáŽá˝ áá áŤááᢠá¨áá¨á¨áťááš áśáľáľ ááľááŽá˝ á á°á ááá á áłá˝ áĽá á áŞáŁá ááŤá¨á á°á áááą á¨á°á á á ááľá°ááĽá á ááá á°ááá˘
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 on HabrĂŠ á°á¨á᪠á˝áááťá˝ááĄ-
ááá: hab.com