Elasticsearch及ELK使用(三):使用search-guard加固安全为https访问

该博客介绍了如何在Linux环境下为Elasticsearch 6.8.3安装Search-Guard插件以增强安全性,实现HTTPS访问。通过停服、安装插件、配置用户权限、同步修改Kibana和Logstash配置,确保ES集群在添加认证后的正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、背景

二、环境(操作系统为Linux)

三、安装配置search-guard

四、同步修改Kibana配置

五、同步修改logstash配置


一、背景

    由于elasticsearch(简称ES)的HTTP访问,默认不需要密码。意味着谁都可以访问,谁都可以修改,这样非常不安全。
    因此需要增加一些安全机制。 对于ES 1.x的低版本可以使用http.basic, 但对于ES 2.x及以上,则应该使用search-guard。它作为ES的插件。

二、环境(操作系统为Linux)

    1、已经安装了logstash 6.8.3,接收filebeat的数据,并将数据转给ES。
    2、已经安装了 ES 6.8.3 并进行了配置,可以正常启动和Web访问(无需密码)。
    3、已经安装了 kibana 6.8.3  并进行了配置,可以正常启动使用。 kibana会访问ES。

    不同的ES版本需要使用不同search-guard版本的插件,两者版本对应关系及下载链接:search-guard-versions

    因此版本:ES 6.8.3 版本,  对应的 search-guard为:25.5。 

三、安装search-guard

   1、在linux上下载介质。 下载后无需解压。

wget https://releases.floragunn.com/search-guard-6/6.8.3-25.5/search-guard-6-6.8.3-25.5.zip

   2、停止ES运行。

   3、使用ES已有的插件工具,安装命令如下。会自动在ES的plugins目录下创建search-guard文件。

./elasticsearch-6.8.3/bin/elasticsearch-plugin install -b file:///home/zyplanke/es/search-guard-6-6.8.3-25.5.zip

   4、启用插件。进入插件目录:elasticsearch-6.8.3/plugins/search-guard-6/tools下,执行:

bash install_demo_configuration.sh      (按提示,输入三次Y)

     以上执行后,会自动给elasticsearch-6.8.3/config/elasticsearch.yml文件后面添加以下内容:

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
discovery.zen.minimum_master_nodes: 1
node.max_local_storage_nodes: 3
xpack.security.enabled: false

   5、重启ES,使用https访问。 https://IP:9200  

        会提示输入用户密码,说明插件已经生效。(默认管理员用户为admin;密码为admin)

   6、修改admin用户的密码。进入插件目录:elasticsearch-6.8.3/plugins/search-guard-6/tools下,执行:

bash hash.sh -p <新密码明文> 

    7、将得到的新密码密文串, 放入elasticsearch-6.8.3/plugins/search-guard-6/sgconfig/sg_internal_users.yml文件,修改文件admin用户下的hash值(使用刚才得到的新密码密文串)。 (建议同时把readonly设置为false,允许在kibana中修改admin的密码)

admin:
  readonly: false
  hash: $2y$12$/iFel04G0O.0YmK.f31vhuwJZJ3xx9Fv164EveHVv73a8T2XnhGAC
  roles:
    - admin
  attributes:
    #no dots allowed in attribute names
    attribute1: value1
    attribute2: value2
    attribute3: value3

(以下内容省略)

      注意:这个文件除了admin,还有其他用户,例如kibanaserver用户。

  8、初始化Search-Guard。进入插件目录:elasticsearch-6.8.3/plugins/search-guard-6/tools下,执行:

bash sgadmin_demo.sh    

(如果在ES已运行情况下,仍报“ERR: Seems there is no Elasticsearch running on localhost:9300”,有可能是ES监听的IP不对,建议ES监听host的IP配置为0.0.0.0)

  注:可以编辑sgadmin_demo.sh文件中的内容,在命令后面增加参数:例如-h XX.XX.XX.XX -p 123456 分别指定ES服务所在的IP地址和端口。

  9、不用重启ES,使用浏览器登录ES,可发现新密码已经生效。

四、同步修改Kibana配置

    1、由于kibana需要连接ES,当ES增加了search-guard插件后,kibana也需要同步修改。
    2、编辑kibana目录下的kibana.yml文件, 修改配置如下:

elasticsearch.hosts: ["https://IP:9200"]
elasticsearch.username: "kibanaserver"
elasticsearch.password: "kibanaserver"
elasticsearch.ssl.verificationMode: none
elasticsearch.requestHeadersWhitelist: [ "authorization","sgtenant" ]

    3、然后重启kibana,在kibana Web页面中,使用admin用户密码登录。 可成功登录。

五、同步修改logstash配置

  修改logstash配置logstash-sample.conf文件。参考格式如下

output {
    elasticsearch {
        hosts => ["https://IP:9200"]
        user => "admin"
        password => "password"
        ssl => false
        ssl_certificate_verification => false
        index => "nginx-%{+YYYY_MM}"
        codec => json
  }

      主要关注:hosts、user、password、ssl、ssl_certificate_verification的配置,其他配置结合自己的环境确定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值