
Elastic Stack ã¯ãSIEM ã·ã¹ãã åžå Ž (å®éã«ã¯ããã ãã§ã¯ãããŸãã) ã§ããç¥ãããããŒã«ã§ãã æ©å¯æ§ã®é«ãããŒã¿ãšããã»ã©æ©å¯æ§ã®äœãããŒã¿ã®äž¡æ¹ãå«ããããŸããŸãªãµã€ãºã®ããŒã¿ââã倿°åéã§ããŸãã Elastic Stack èŠçŽ èªäœãžã®ã¢ã¯ã»ã¹ãä¿è·ãããŠããªãå Žåãããã¯å®å
šã«æ£ãããšã¯èšããŸããã ããã©ã«ãã§ã¯ããã¹ãŠã® Elastic ã®ããã«äœ¿ããèŠçŽ (ElasticsearchãLogstashãKibanaãããã³ Beats ã³ã¬ã¯ã¿ãŒ) ã¯ãªãŒãã³ ãããã³ã«ã§å®è¡ãããŸãã ãŸããKibana èªäœã§ã¯èªèšŒãç¡å¹ã«ãªã£ãŠããŸãã ãããã®ããåãã¯ãã¹ãŠå®å
šã«è¡ãããšãã§ãããã®èšäºã§ã¯ãã®æ¹æ³ã説æããŸãã 䟿å®äžãç©èªã 3 ã€ã®æå³ãããã¯ã«åå²ããŸããã
- ããŒã«ããŒã¹ã®ããŒã¿ã¢ã¯ã»ã¹ã¢ãã«
- Elasticsearch ã¯ã©ã¹ã¿ãŒå ã®ããŒã¿ ã»ãã¥ãªãã£
- Elasticsearch ã¯ã©ã¹ã¿ãŒã®å€éšã§ã®ããŒã¿ã®ä¿è·
詳现ã¯ã«ããã®äžã«ãããŸãã
ããŒã«ããŒã¹ã®ããŒã¿ã¢ã¯ã»ã¹ã¢ãã«
Elasticsearch ãã€ã³ã¹ããŒã«ãããŸã£ãã調æŽããªãã£ãå Žåããã¹ãŠã®ã€ã³ããã¯ã¹ã«èª°ã§ãã¢ã¯ã»ã¹ã§ããããã«ãªããŸãã ãŸããã«ãŒã«ã䜿ãã人ã ãããåé¿ããããã«ãElasticsearch ã«ã¯ Basic ãµãã¹ã¯ãªãã·ã§ã³ (ç¡æ) ããå©çšã§ããããŒã« ã¢ãã«ããããŸãã æŠç¥çã«ã¯æ¬¡ã®ããã«ãªããŸãã

åçã«ã¯äœãåã£ãŠããŸãã
- ãŠãŒã¶ãŒãšã¯ãèªåã®è³æ Œæ å ±ã䜿çšããŠãã°ã€ã³ã§ãããã¹ãŠã®äººã ã§ãã
- ããŒã«ã¯äžé£ã®æš©å©ã§ãã
- æš©å©ã¯äžé£ã®ç¹æš©ã§ãã
- ç¹æš©ãšã¯ãæžã蟌ã¿ãèªã¿åããåé€ãªã©ã®æš©éã§ãã ()
- ãªãœãŒã¹ã¯ãã€ã³ããã¯ã¹ãããã¥ã¡ã³ãããã£ãŒã«ãããŠãŒã¶ãŒãããã³ãã®ä»ã®ã¹ãã¬ãŒãž ãšã³ãã£ãã£ã§ã (äžéšã®ãªãœãŒã¹ã®ããŒã« ã¢ãã«ã¯ãææãµãã¹ã¯ãªãã·ã§ã³ã§ã®ã¿å©çšå¯èœã§ã)ã
Elasticsearch ã®ããã©ã«ãã§ã¯ã ãããããåãä»ããããŠãã ã ã»ãã¥ãªãã£èšå®ãæå¹ã«ãããšãããã«äœ¿çšãéå§ã§ããŸãã
Elasticsearch èšå®ã§ã»ãã¥ãªãã£ãæå¹ã«ããã«ã¯ããããèšå®ãã¡ã€ã«ã«è¿œå ããå¿ èŠããããŸã (ããã©ã«ãã§ã¯ãã㯠elasticsearch/config/elasticsearch.yml) æ¹è¡:
xpack.security.enabled: trueèšå®ãã¡ã€ã«ã倿ŽããåŸã倿Žãæå¹ã«ããããã« Elasticsearch ãèµ·åãŸãã¯åèµ·åããŸãã æ¬¡ã®ã¹ãããã§ã¯ãBox ãŠãŒã¶ãŒã«ãã¹ã¯ãŒããå²ãåœãŠãŸãã 以äžã®ã³ãã³ãã䜿çšããŠãããã察話çã«å®è¡ããŠã¿ãŸãããã
[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 ãæ§æããŸãã ä»å®è¡ãããšãšã©ãŒã衚瀺ããããããããŒã¹ãã¢ãäœæããããšãéèŠã§ãã ãã㯠XNUMX ã€ã®ã³ãã³ã (ãŠãŒã¶ãŒ ããã ããã³ Elasticsearch ã®ãã¹ã¯ãŒãäœæã¹ãããã§å ¥åãããã¹ã¯ãŒã):
[elastic@node1 ~]$ ./kibana/bin/kibana-keystore add elasticsearch.username
[elastic@node1 ~]$ ./kibana/bin/kibana-keystore add elasticsearch.passwordãã¹ãŠãæ£ããå ŽåãKibana ã¯ãã°ã€ã³ãšãã¹ã¯ãŒãã®å ¥åãæ±ãå§ããŸãã Basic ãµãã¹ã¯ãªãã·ã§ã³ã«ã¯ãå éšãŠãŒã¶ãŒã«åºã¥ããããŒã« ã¢ãã«ãå«ãŸããŠããŸãã Gold 以éãå€éšèªèšŒã·ã¹ãã (LDAPãPKIãActive Directoryãã·ã³ã°ã« ãµã€ã³ãªã³ ã·ã¹ãã ) ã«æ¥ç¶ã§ããããã«ãªããŸããã

Elasticsearch å
ã®ãªããžã§ã¯ããžã®ã¢ã¯ã»ã¹æš©ãå¶éã§ããŸãã ãã ããããã¥ã¡ã³ããŸãã¯ãã£ãŒã«ãã«å¯ŸããŠåãããšãè¡ãã«ã¯ãææãµãã¹ã¯ãªãã·ã§ã³ãå¿
èŠã«ãªããŸã (ãã®è±ªè¯ãªãµãŒãã¹ã¯ãã©ãã ã¬ãã«ããå§ãŸããŸã)ã ãããã®èšå®ã¯ãKibana ã€ã³ã¿ãŒãã§ã€ã¹ãŸãã¯çµç±ã§å©çšã§ããŸãã ã ãã§ã«ããªãã¿ã® 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" : "pushkin@lyceum.edu",
"metadata" : {
"hometown" : "Saint-Petersburg"
}
}Elasticsearch ã¯ã©ã¹ã¿ãŒå ã®ããŒã¿ ã»ãã¥ãªãã£
Elasticsearch ãã¯ã©ã¹ã¿ãŒå ã§å®è¡ãããå Žå (ããã¯äžè¬çã§ã)ãã¯ã©ã¹ã¿ãŒå ã®ã»ãã¥ãªãã£èšå®ãéèŠã«ãªããŸãã ããŒãéã®å®å šãªéä¿¡ã®ããã«ãElasticsearch 㯠TLS ãããã³ã«ã䜿çšããŸãã ãããã®éã§å®å šãªå¯Ÿè©±ãèšå®ããã«ã¯ãèšŒææžãå¿ èŠã§ãã èšŒææžãšç§å¯ããŒã PEM 圢åŒã§çæããŸãã
[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-certutil ca --pemäžèšã®ã³ãã³ããå®è¡ãããšããã£ã¬ã¯ããªå ã§ /../elasticsearch ã¢ãŒã«ã€ãã衚瀺ãããŸã elastic-stack-ca.zipã ãã®äžã«ã¯ãèšŒææžãšæ¡åŒµåä»ãã®ç§å¯ããŒããããŸãã CRT О key ããããã ããããå ±æãªãœãŒã¹ã«é 眮ããã¯ã©ã¹ã¿ãŒå ã®ãã¹ãŠã®ããŒãããã¢ã¯ã»ã¹ã§ããããã«ããããšããå§ãããŸãã
åããŒãã«ã¯ãå ±æãã£ã¬ã¯ããªå ã®èšŒææžãšç§å¯éµã«åºã¥ããç¬èªã®èšŒææžãšç§å¯éµãå¿ èŠã«ãªããŸãã ã³ãã³ããå®è¡ãããšããã¹ã¯ãŒãã®èšå®ãæ±ããããŸãã 察話ããŒããå®å šã«æ€èšŒããã«ã¯ããªãã·ã§ã³ -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ãã XNUMX ã€ã®ã»ãã¥ãªã㣠ãªãã·ã§ã³ãšããŠãIP ã¢ãã¬ã¹ ãã£ã«ã¿ãªã³ã°ããããŸã (ãŽãŒã«ã ã¬ãã«ããã®ãµãã¹ã¯ãªãã·ã§ã³ã§å©çšå¯èœ)ã ããŒããžã®ã¢ã¯ã»ã¹ãèš±å¯ãã IP ã¢ãã¬ã¹ã®ãã¯ã€ã ãªã¹ããäœæã§ããŸãã
Elasticsearch ã¯ã©ã¹ã¿ãŒã®å€éšã§ã®ããŒã¿ã®ä¿è·
ã¯ã©ã¹ã¿ãŒã®å€åŽãšã¯ãå€éšããŒã« (KibanaãLogstashãBeatsããŸãã¯ãã®ä»ã®å€éšã¯ã©ã€ã¢ã³ã) ã«æ¥ç¶ããããšãæå³ããŸãã

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 æ¥ç¶èšå®ãå«ãè¡ã远å ããŸãã æåŸã® XNUMX è¡ã¯ããŠãŒã¶ãŒã®ãã©ãŠã¶ãš 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 ã¯ã©ã¹ã¿ãŒå ã®ããŒã¿ãžã®ã¢ã¯ã»ã¹ãæå·åãããŸãã
ç¡æãŸãã¯ææã®ãµãã¹ã¯ãªãã·ã§ã³ã§ã® Elastic Stack ã®æ©èœãã¿ã¹ã¯ã®ç£èŠããŸã㯠SIEM ã·ã¹ãã ã®äœæã«ã€ããŠè³ªåãããå Žåã¯ããªã¯ãšã¹ããæ®ããŠãã ããã ç§éã®ãŠã§ããµã€ãã§ã
Habré ã«é¢ãã Elastic Stack ã«é¢ããèšäºã®è©³çް:
åºæïŒ habr.com
