一、为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