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. ΠΡΠ»ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΅Ρ ΡΠ΅ΠΉΡΠ°Ρ, ΠΏΠΎΡΡΠΏΠ»ΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉ. ΠΠ΅Π»Π°Π΅ΡΡΡ, ΡΡΠΎ Π² Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ (ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ kibana ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ, Π²Π²Π΅Π΄ΡΠ½Π½ΡΠΉ Π½Π° ΡΠ°Π³Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ Π² 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 ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Single sign-on.
ΠΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ Π²Π½ΡΡΡΠΈ Elasticsearch ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ. ΠΡΠ°Π²Π΄Π°, ΡΡΠΎΠ±Ρ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π»Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅ΠΉ, ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ»Π°ΡΠ½Π°Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ° (ΡΡΠ° ΡΠΎΡΠΊΠΎΡΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΡΡΠΎΠ²Π½Ρ Platinum). ΠΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ Kibana ΠΈΠ»ΠΈ ΡΠ΅ΡΠ΅Π·
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠ»ΠΈ
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 ΠΈ key ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΡ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ»ΠΎΠΆΠΈΡΡ Π½Π° shared ΡΠ΅ΡΡΡΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΡΠΎ Π²ΡΠ΅Ρ Π½ΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°.
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ΄Ρ ΡΠ΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½Ρ ΡΠ²ΠΎΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ ΠΈ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅Ρ , ΡΡΠΎ Π»Π΅ΠΆΠ°Ρ Π² shared Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ. ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠΎΠΏΡΠΎΡΡΡ Π·Π°Π΄Π°ΡΡ ΠΏΠ°ΡΠΎΠ»Ρ. ΠΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠΏΡΠΈΠΈ —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 Π² keystore ΠΈ truststore Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ΄Π΅:
[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-Π°Π΄ΡΠ΅ΡΠΎΠ² (Π΄ΠΎΡΡΡΠΏΠ½Π° Π² ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠ°Ρ ΠΎΡ ΡΡΠΎΠ²Π½Ρ Gold). ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π±Π΅Π»ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ 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
Π’.ΠΊ. ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ Π·Π°ΡΠΈΡΡΠ½ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Π³ΠΎ Π² keystore ΠΈ truststore Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΎΠ΄Π΅:
[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 ΠΈ Π΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ. ΠΠ° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΆΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡΠ½ Π² shared Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ, ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ Π² 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-ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΡΡΠΈ ΡΡΡΠΎΠΊΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ 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-ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΡΡΠ°Π²ΡΡΠ΅ Π·Π°ΠΏΡΠΎΡ Π²
ΠΡΡ Π½Π°ΡΠΈ ΡΡΠ°ΡΡΠΈ ΠΎΠ± Elastic Stack Π½Π° Π₯Π°Π±ΡΠ΅:
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com