ELK安全设置(简化版)

一、为ElasticSearch配置登录密码

    elasticsearch配置文件中添加:
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true   #这条不加,启动时报错
    启动elasticsearch
./bin/elasticsearch

设置用户密码,有两种方式,自动生成和手动生成,自动生成时系统会给每个用户生成随机密码,这个一定要单独记住;手动生成,根据提示给每个用户手动输入密码。

(1)自动生成密码:
./bin/elasticsearch-setup-passwords auto
(2)手动输入密码
./bin/elasticsearch-setup-passwords interactive
    配置kibana,在配置文件kibana.yml中添加
elasticsearch.username: "kibana_system"
    创建密码文件并设置密码对应用户的密码:

1、创建密码库

./bin/kibana-keystore create

2、存储密码

./bin/kibana-keystore add elasticsearch.password
    执行上述命令后,根据提示输入kibana_system用户的密码

3、启动kibana进行测试,这时再登录kibana会提示输入用户名和密码

./bin/kibana

二、设置通信加密

生成证书
在任一 Elasticsearch 节点上生成 CA 证书(记住密码,也可以不设置密码但不推荐)

证书输出默认位置 /usr/share/elasticsearch/elastic-stack-ca.p12(就是elasticsearch所在的文件夹的根目录)

/usr/share/elasticsearch/bin/elasticsearch-certutil ca

在刚才的节点上为集群节点生成证书和私钥
证书输出默认位置 /usr/share/elasticsearch/elastic-certificates.p12
elastic-certificates.p12 包含 node certificate、node key 和 CA 证书

/usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

将 elastic-certificates.p12 拷贝到集群所有节点的配置目录(与 elasticsearch.yml 同级),并修改文件 owner

sudo cp /usr/share/elasticsearch/elastic-certificates.p12 /etc/elasticsearch/
sudo chown elasticsearch:elasticsearch /etc/elasticsearch/elastic-certificates.p12

用 TLS 加密内部节点中的会话
本节的配置在所有节点进行
在 elasticsearch.yml里面配置 cluster.name、node.name
将证书密码存放到 Elasticsearch keystore

/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password

在集群所有节点重启 elasticsearch 实例

sudo systemctl restart elasticsearch

如果报权限错误:
java.nio.file.AccessDeniedException: /etc/elasticsearch/elastic-certificates.p12,修改证书所有者

sudo chown elasticsearch:elasticsearch /etc/elasticsearch/elastic-certificates.p12

在浏览器中访问测试:http://xx.xx.xx.xx:9200/

加密浏览器对 Elasticsearch 的访问

在开始生成 ca 证书的节点,生成 Certificate Signing Request (CSR)

/usr/share/elasticsearch/bin/elasticsearch-certutil http

Generate a CSR? [y/N] 第一步选 n,后面按提示输入 文件输出默认位置
/usr/share/elasticsearch/elasticsearch-ssl-http.zip

生成的 elasticsearch-ssl-http.zip 包含了 elasticsearch kibana 两个文件夹

/elasticsearch
|_ README.txt
|_ http.p12
|_ sample-elasticsearch.yml
/kibana
|_ README.txt
|_ elasticsearch-ca.pem
|_ sample-kibana.yml

将 elasticsearch/http.p12 文件拷贝到所有节点 Elasticsearch 的配置目录(与 elasticsearch.yml 同级)
打开配置文件 elasticsearch.yml,修改或添加以下内容

xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: http.p12

保存密码到 key

/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password

重启 ES 集群
在浏览器中访问测试 https://xx.xx.xx.xx:9200/
加密 Kibana 对 Elasticsearch 的访问
将 kibana/elasticsearch-ca.pem 拷贝到 Kibana 的配置目录(与 kibana.yml 同级)
打开配置文件 kibana.yml,修改或添加以下内容

elasticsearch.ssl.verificationMode: none
elasticsearch.ssl.certificateAuthorities: /etc/kibana/elasticsearch-ca.pem

elasticsearch.ssl.certificateAuthorities: [ "/etc/kibana/elasticsearch-ca.pem" ]

将 elasticsearch.hosts 的配置由 http 改为 https

重启 Kibana

sudo systemctl restart kibana

在浏览器中访问测试 http://xx.xx.xx.xx:5601/

三、快速配置浏览器 https 访问 Kibana

为 Kibana 服务器生成证书和私钥

./elasticsearch-certutil cert --pem -name kibana-server --out /home/appuser/elk/elasticsearch-7.16.2/config/certs/certs.zip

生成的 certs.zip 包含了 ca kibana-server 文件夹

./certs
├── ca
│   └── ca.crt
└── kibana-server    
├── kibana-server.crt    
└── kibana-server.key

将 kibana-server.crt kibana-server.key 拷贝到 Kibana 的配置目录(与 kibana.yml 同级)

cp ./kibana-server/kibana-server.* /etc/kibana/

打开配置文件 kibana.yml,修改或添加以下内容

server.ssl.enabled: true
server.ssl.certificate: /etc/kibana/kibana-server.crt
server.ssl.key: /etc/kibana/kibana-server.key

重启 Kibana

sudo systemctl restart kibana

在浏览器中用 https 访问测试 https://xx.xx.xx.xx:5601/
可将 ca.crt 导入浏览器所在的操作系统,避免浏览器报 不安全的 https
证书小知识
*.key
通常指私钥
*.csr
CSR 是Certificate Signing Request的缩写,即证书签名申请这不是证书,这是要求 CA 给证书签名的一种正是申请,该申请包含申请证书的实体的公钥及该实体店某些信息。该数据将成为证书的一部分。CSR 始终使用它携带的公钥所对应的私钥进行签名。
*.crt
CRT 即 certificate 的缩写,即证书

四、配置logstash


```handlebars
syslog.conf
input{
    syslog {
        type => "rsyslog"
        port => 514
    }
}
filter{
}
output{
    elasticsearch {
        hosts => ["https://172.20.4.21:9200"]
        index => "rsyslog-%{+YYYY.MM}"
        user => "elastic"
        password => "kbm6GG6P2oX3835rdltC"
        ssl_certificate_verification => true
        truststore => "/home/appuser/elk/logstash-7.16.2/config/certs/http.p12"     #先把上面生成的http.p12拷贝到logstash/config/certs目录里
        truststore_password => ""                                                   #没有密码就这么写,差这个参数程序不启动
    }
}


参考链接:
https://blog.csdn.net/qq_20143059/article/details/112992016
https://blog.csdn.net/Dhjie_king/article/details/126651672
https://xie.infoq.cn/article/17e7e5de164cabc48fe4b7b90
https://xie.infoq.cn/article/3f6ba28bddad16a92f8101de0
https://blog.csdn.net/UbuntuTouch/article/details/126868040


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值