• ELK日志收集(二)- ES集群内部加密


    一:ES集群搭建

    ES集群由多台ES单节点组合而成,当某一台ES故障时集群能够自动切换以保证集群正常工作。

    修改单台集群的配置文件,形成集群。

    1.cluster.name: XXXX          # 集群名称,在同一集群的ES机器应保证集群名称相同

    2.node.name: es-3             #单台ES机器的名字不能重复

    3.discovery.zen.ping.unicast.hosts: ["172.16.1.73", "172.16.1.71"]      #不必将集群中的每个ip地址写出来,只要相互关联即可

    4.discovery.zen.minimum_master_nodes: 2                                 #选举原则,遵循过半原则  当某台机器故障时实现自我转移

    二:集群内部加密

    通过elasticsearch自带的elasticsearch-certutil的命令生成证书,然后各节点通过该证书可以进行安全通信。
    【需要账号与密码访问ES集群,kibana页面】


    1.证书级别了解
    证书认证的不同级别:
    Certificate:         节点加入集群需要使用想用CA签发的证书
    Full Verfication:   节点加入集群需要使用想用CA签发的证书,还需要验证Hostname或IP地址
    No Verfication:    任何节点都可以加入,开发环境用于诊断目的
    企业中一般选择Certificate级别即可。


    2.部署步骤

    1) 环境准备

    cd /usr/share/elasticsearch
    使用yum方式安装的可执行文件路径

    2)生成CA证书

    bin/elasticsearch-certutil ca (CA证书:elastic-stack-ca.p12)

    执行命令后会出现提示,第一个是指定证书位置,第二个是为证书设置密码。
    注意:位置不用指定会有默认位置【在哪个位置执行生成命令证书就在该目录下】,不要设置密码,直接回车密码为空。设置密码后后面会很麻烦,很麻烦,很麻烦!!

    3)生成节点证书

    bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 (节点证书:elastic-certificates.p12)

    执行后也会出现相应提示,第一个是输入ca证书的密码,ca证书密码为空直接回车。第二个是指定从节点证书的存放位置,同样不输入会有默认存放位置。第三个是指定从节点证书的密码,一定还是直接回车,不要设置密码,不要设置密码!!

    4)检查证书是否生成成功

    此时证书的存放目录是/usr/share/elasticsearch,可以在该目录下查看是否有elastic-stack-ca.p12(ca证书)
    和elastic-certificates.p12(从节点证书)。


    5)移动证书位置并授权
    注意:在本机生成的证书需要更改证书权限:`chmod 644 elastic-certificates.p12` (若是使用运行es程序的用户创建证书,则不用更改证书权限)
    默认证书权限是600,运行elasticsearch程序的用户没有权限读取,会造成elasticsearch启动失败

    mv /usr/share/elasticsearch/elastic-stack-ca.p12 /etc/elasticsearch

    mv /usr/share/elasticsearch/elastic-certificates.p12 /etc/elasticsearch

    chmod 644 /etc/elasticsearch/elastic-stack-ca.p12

    chmod 644 /etc/elasticsearch/elastic-certificates.p12

    chown root.elasticsearch /etc/elasticsearch/elastic-stack-ca.p12

    chown root.elasticsearch /etc/elasticsearch/elastic-certificates.p12


    6)编辑配置文件,增加xpack(5条)【主节点上操作】

    xpack.security.enabled: true

    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

    最后两行注意是证书的位置,直接存放在/etc/elasticsearch目录下,配置文件中使用相对路径即可。
    问:为啥证书密码建议都设置为空?
    答:如果设置了证书密码就需要注意xpack,它读取不到密码就会造成ES重启不成功。配置xpack目前没找到资料怎么去配置,所以请直接把证书密码设置为空。


    7)重启es服务

    systemctl restart elasticsearch.service

    重启后一定检查是否成功启动,如果没有成功请注意你是否设置了证书密码,没有设置的情况下检查证书文件的授权与位置是否正确。


    8)推送证书到集群从节点
    *将主节点产生的证书文件推送到其他两台机器的/etc/elasticsearch目录下,并编辑配置文件【仍是增加xpack那5条配置】

    xpack.security.enabled: true

    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

    完成推送后重启ES服务,也请注意检查服务是否启动成功。

    9)创建账号与密码

    启动三个节点,待节点启动完毕之后,进入主节点elasticsearch目录,执行以下命令,进行账号,密码设置:

    设置密码的两种方式:

    /usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto

    系统随机创建密码 (建议使用随机创建,创建成功后保存好即可)

    /usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive       #自定义密码


    考虑到会生成es,kibana,filebeat,logstash的账号与密码,我们选择系统随机生成即可。

    创建:/usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto

    输出结果:

    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 # 输入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]


    注意:生成后记得保存好自己的账号与密码,后期登录要用它们才能登录页面。
             账号密码支持新生成,如果需要生成新账号密码,执行生成命令即可。生成的新密码默认覆盖之前的。

    9)访问测试
    访问es页面,提示需要账号与密码
    注意:使用了head插件可能导致401报错,因为此时es集群已有密码。
    解决:在es的.yml这个配置文件中增加一条配置即可。
    http.cors.allow-headers: Authorization,content-type

    10)使用logstash或者filebeat收集日志

    在收集的配置文件中增加es的用户名与密码即可

    #举例:
    output.elasticsearch:
    hosts: ["http://192.168.80.104:9200"]
    username: "elastic"
    password => "elkstack123456" # 密码是上面步骤设置随机生成的
    }
    }

    注意:配置账户和密码的时候有坑,账号对应的是username,之前百度出来有文档写的是user,一开始用的user,ES一直收集不到日志,排查发现是这里的坑!!改成username就可以了


    11)#测试kibana访问页面
    登陆kibana提示需要输入用户与密码 【安全机制:访问页面需要输入账号密码登录】

    在kibana的配置文件中填写用户与密码 【kibana与ES集群相连接,需要账号与密码】
    注意:不管是页面登录还是配置文件中都可以用kibana的账号,也能用ES的账号,【ES】账号属于超级用户账号。

    配置文件kibana.yml中需要加入以下配置:【使用了es账号】
    elasticsearch.username: "elastic"
    elasticsearch.password: "elkstack123456"


    #kibana页面登录不同账号的区别:
    使用es:在Management下面的Kibana最后出现一个Security,有User和Role,方便kibana多用户创建及角色权限控制【先创建规则,在创建用户时绑定该规则即可】
    使用kibana:不能进行角色创建与管理。

  • 相关阅读:
    贝塞尔曲线
    行为树
    Astar寻路算法
    vuex入门
    关于用户留存率的计算的几个层次-费元星
    linux命令执行返回值(附错误对照表)费元星
    rabbitmqadmin安装与使用
    分布式锁服务 分布式协调系统
    记录一次使用react异步不更新数据的问题
    从0到1搭建前端异常监控系统(Vue + Webpack + Node.js + Egg.js + Jest)
  • 原文地址:https://www.cnblogs.com/wzj-qwerty/p/14649301.html
Copyright © 2020-2023  润新知