ELK-搭建实时日志ELK分析系统(3)-集成search-guard

96
ccsyy
0.1 2018.11.27 16:28* 字数 779

这章我们需要给elk增加安全权限访问限制,可以使用官方的x-pack插件,x-pack在elk6.4.3中已经内置安装,并且已经开源,但是功能是basic版的,没有安全功能,可以去申请更高权限的证书,我们使用免费版的一个安全管理——search-guard
本章的elk环境基于前两章内容搭建:

elasticsearch快速开始search-guard

  • 查找对应版本的search-guard,版本对应
  • 我的elk版本全部是6.4.3下载对应插件,上传到服务器:
    search-guard-6-6.4.3-23.2.zip
  • 切换到elasticsearch的目录下,执行命令安装插件:
    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,执行命令:
    ./install_demo_configuration.sh(先赋予执行权限)
    显示如下信息:
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 ########
  • 因为已经内置了x-pack,search-guard和x-pack的安全功能冲突,在elasticsearch.yml中增加以下配置:
    xpack.security.enabled: false
  • 重启elasticsearch

配置kibana

  • 下载对应版本的插件,并上传到服务器:
    search-guard-kibana-plugin-6.4.3-16.zip
  • 在kibana安装路径下执行以下命令:
    bin/kibana-plugin install file:///path/to/search-guard-kibana-plugin-6.4.3-16.zip
  • 编辑kibana.yml文件:(kibanaserver是默认内置的角色,可以增删改查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插件可以访问

现在head已经不能直接访问es了,需要修改elasticsearch.yml,增加以下配置:

http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
  • 重启elasticsearch,head可以使用admin用户登录。

配置logstash

  • 编辑logstash启动加载的配置文件,修改输出到elasticsearch的部分:(logstash是内置角色,拥有增删改查和创建索引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,执行命令:
    ./hash.sh -p 新密码
  • 复制生成的hash密码,编辑文件<Elasticsearch directory>/plugins/search-guard-6/sgconfi/sg_internal_users.yml,找到想要修改的用户名,替换其下的hash值。
  • 让配置生效,执行以下命令:
    cd <Elasticsearch directory>/plugins/search-guard-6/tools
    ./sgadmin_demo.sh
    如果更改过elasticsearch默认端口号,打开sgadmin_demo.sh文件,在其中执行sgadmin.sh脚本时加上 -p 端口号
日记本
Web note ad 1