這章我們需要給elk增加安全權(quán)限訪問限制虽抄,可以使用官方的x-pack插件,x-pack在elk6.4.3中已經(jīng)內(nèi)置安裝樊破,并且已經(jīng)開源罕袋,但是功能是basic版的,沒有安全功能哈街,可以去申請(qǐng)更高權(quán)限的證書,我們使用免費(fèi)版的一個(gè)安全管理——search-guard。
本章的elk環(huán)境基于前兩章內(nèi)容搭建:
- ELK-搭建實(shí)時(shí)日志ELK分析系統(tǒng)
- ELK-搭建實(shí)時(shí)日志ELK分析系統(tǒng)(2)-配置日志合并废睦,@timestamp,根據(jù)不同beats來源建立不同索引
elasticsearch快速開始search-guard
- 查找對(duì)應(yīng)版本的search-guard,版本對(duì)應(yīng)养泡。
- 我的elk版本全部是6.4.3下載對(duì)應(yīng)插件嗜湃,上傳到服務(wù)器:
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í)行權(quán)限)
顯示如下信息:
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確認(rèn)澜掩。
- 這個(gè)時(shí)候觀察到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 ########
- 因?yàn)橐呀?jīng)內(nèi)置了x-pack,search-guard和x-pack的安全功能沖突肩榕,在elasticsearch.yml中增加以下配置:
xpack.security.enabled: false
- 重啟elasticsearch
配置kibana
- 下載對(duì)應(yīng)版本的插件刚陡,并上傳到服務(wù)器:
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是默認(rèn)內(nèi)置的角色,可以增刪改查kibana相關(guān)的索引。)
xpack.security.enabled: false
elasticsearch.url: "https://localhost:9200"
elasticsearch.ssl.verificationMode: none
elasticsearch.username: "kibanaserver"
elasticsearch.password: "kibanaserver"
- 啟動(dòng)kibana橘荠,會(huì)彈出登錄頁面屿附,使用默認(rèn)的admin:admin登錄,在kibana頁面會(huì)新增search-guard插件哥童,可以在此編輯相關(guān)權(quán)限和用戶挺份。
配置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啟動(dòng)加載的配置文件朵你,修改輸出到elasticsearch的部分:(logstash是內(nèi)置角色各聘,擁有增刪改查和創(chuàng)建索引
logstash-*
和*beat*
的權(quán)限,若更改了默認(rèn)索引的索引名稱抡医,可以在kibana中給該角色添加新的索引權(quán)限)
# 輸出到本機(jī)的 ES
output {
elasticsearch {
hosts => [ "localhost:9200" ]
index => "log-%{[log_source]}-%{+YYYY.MM.dd}"
user => logstash
password => logstash
ssl => true
ssl_certificate_verification => false
}
}
- 重啟logstash
更改默認(rèn)用戶密碼
- 切換到目錄
<Elasticsearch directory>/plugins/search-guard-6/tools
躲因,執(zhí)行命令:
./hash.sh -p 新密碼
- 復(fù)制生成的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默認(rèn)端口號(hào)镰矿,打開sgadmin_demo.sh文件,在其中執(zhí)行sgadmin.sh
腳本時(shí)加上-p 端口號(hào)
俘种。