這章我們需要給elk增加安全權限訪問限制,可以使用官方的x-pack插件,x-pack在elk6.4.3中已經(jīng)內(nèi)置安裝,并且已經(jīng)開源,但是功能是basic版的,沒有安全功能,可以去申請更高權限的證書,我們使用免費版的一個安全管理——search-guard。
本章的elk環(huán)境基于前兩章內(nèi)容搭建:
elasticsearch快速開始search-guard
- 查找對應版本的search-guard,版本對應。
- 我的elk版本全部是6.4.3下載對應插件,上傳到服務器:
search-guard-6-6.4.3-23.2.zip - 切換到elasticsearch的目錄下,執(zhí)行命令安裝插件:
bin/elasticsearch-plugin install -b file:///path/to/search-guard-6-6.4.3-23.2.zip - 顯示以下信息:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: plugin requires additional permissions @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.lang.RuntimePermission accessClassInPackage.sun.misc
* java.lang.RuntimePermission getClassLoader
* java.lang.RuntimePermission loadLibrary.*
* java.lang.reflect.ReflectPermission suppressAccessChecks
* java.security.SecurityPermission getProperty.ssl.KeyManagerFactory.algorithm
...
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.
- 切換到目錄
<Elasticsearch directory>/plugins/search-guard-6/tools,執(zhí)行命令:
./install_demo_configuration.sh(先賦予執(zhí)行權限)
顯示如下信息:
Search Guard 6 Demo Installer
** Warning: Do not use on production or publicly reachable systems **
Install demo certificates? [y/N] y
Initialize Search Guard? [y/N] y
Enable cluster mode? [y/N] n
按y確認。
- 這個時候觀察到elasticsearch.yml,增加了一下這些配置:
######## Start Search Guard Demo Configuration ########
# WARNING: revise all the lines below before you go into production
searchguard.ssl.transport.pemcert_filepath: esnode.pem
searchguard.ssl.transport.pemkey_filepath: esnode-key.pem
searchguard.ssl.transport.pemtrustedcas_filepath: root-ca.pem
searchguard.ssl.transport.enforce_hostname_verification: false
searchguard.ssl.http.enabled: true
searchguard.ssl.http.pemcert_filepath: esnode.pem
searchguard.ssl.http.pemkey_filepath: esnode-key.pem
searchguard.ssl.http.pemtrustedcas_filepath: root-ca.pem
searchguard.allow_unsafe_democertificates: true
searchguard.allow_default_init_sgindex: true
searchguard.authcz.admin_dn:
- CN=kirk,OU=client,O=client,L=test, C=de
searchguard.audit.type: internal_elasticsearch
searchguard.enable_snapshot_restore_privilege: true
searchguard.check_snapshot_restore_write_privileges: true
searchguard.restapi.roles_enabled: ["sg_all_access"]
cluster.routing.allocation.disk.threshold_enabled: false
cluster.name: searchguard_demo
discovery.zen.minimum_master_nodes: 1
node.max_local_storage_nodes: 3
######## End Search Guard Demo Configuration ########
- 因為已經(jīng)內(nèi)置了x-pack,search-guard和x-pack的安全功能沖突,在elasticsearch.yml中增加以下配置:
xpack.security.enabled: false - 重啟elasticsearch
配置kibana
- 下載對應版本的插件,并上傳到服務器:
search-guard-kibana-plugin-6.4.3-16.zip - 在kibana安裝路徑下執(zhí)行以下命令:
bin/kibana-plugin install file:///path/to/search-guard-kibana-plugin-6.4.3-16.zip - 編輯kibana.yml文件:(kibanaserver是默認內(nèi)置的角色,可以增刪改查kibana相關的索引。)
xpack.security.enabled: false
elasticsearch.url: "https://localhost:9200"
elasticsearch.ssl.verificationMode: none
elasticsearch.username: "kibanaserver"
elasticsearch.password: "kibanaserver"
- 啟動kibana,會彈出登錄頁面,使用默認的admin:admin登錄,在kibana頁面會新增search-guard插件,可以在此編輯相關權限和用戶。
配置head插件可以訪問
現(xiàn)在head已經(jīng)不能直接訪問es了,需要修改elasticsearch.yml,增加以下配置:
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
- 重啟elasticsearch,head可以使用admin用戶登錄。
配置logstash
- 編輯logstash啟動加載的配置文件,修改輸出到elasticsearch的部分:(logstash是內(nèi)置角色,擁有增刪改查和創(chuàng)建索引
logstash-*和*beat*的權限,若更改了默認索引的索引名稱,可以在kibana中給該角色添加新的索引權限)
# 輸出到本機的 ES
output {
elasticsearch {
hosts => [ "localhost:9200" ]
index => "log-%{[log_source]}-%{+YYYY.MM.dd}"
user => logstash
password => logstash
ssl => true
ssl_certificate_verification => false
}
}
- 重啟logstash
更改默認用戶密碼
- 切換到目錄
<Elasticsearch directory>/plugins/search-guard-6/tools,執(zhí)行命令:
./hash.sh -p 新密碼 - 復制生成的hash密碼,編輯文件
<Elasticsearch directory>/plugins/search-guard-6/sgconfi/sg_internal_users.yml,找到想要修改的用戶名,替換其下的hash值。 - 讓配置生效,執(zhí)行以下命令:
cd <Elasticsearch directory>/plugins/search-guard-6/tools
./sgadmin_demo.sh
如果更改過elasticsearch默認端口號,打開sgadmin_demo.sh文件,在其中執(zhí)行sgadmin.sh腳本時加上-p 端口號。