zoukankan      html  css  js  c++  java
  • 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:不能进行角色创建与管理。

  • 相关阅读:
    迭代器和生成器
    案例:复制大文件
    案例:使用seek倒查获取日志文件的最后一行
    Leetcode165. Compare Version Numbers比较版本号
    Leetcode137. Single Number II只出现一次的数字2
    Leetcode129. Sum Root to Leaf Numbers求根到叶子节点数字之和
    Leetcode116. Populating Next Right Pointers in Each Node填充同一层的兄弟节点
    Leetcode114. Flatten Binary Tree to Linked List二叉树展开为链表
    Leetcode113. Path Sum II路径总和2
    C++stl中vector的几种常用构造方法
  • 原文地址:https://www.cnblogs.com/wzj-qwerty/p/14649301.html
Copyright © 2011-2022 走看看