在本教程中,您将学习如何启用 Kibana HTTPS 连接。 HTTPS 连接可确保数据在传输过程中加密。
Kibana 仅支持 TLS 加密协议。 使用 TLS,X.509 证书用于加密传输中的数据。 这种加密是不对称的,因为每个证书都包含用于加密操作的公钥和私钥。 Kibana 支持 PEM 或 PKCS#12 格式的证书和私钥。
启用 Kibana HTTPS 连接
安装 ELK 堆栈
当然,您需要运行 ELK 或 Kibana 才能启用 HTTPS。
但是,如果您还没有 ELK 堆栈,则可以使用以下链接中的指南;
在 Ubuntu 20.04 上安装 ELK Stack
在 CentOS 8 上安装 ELK Stack
启用 Kibana HTTPS 连接
安装 Kibana/ELK 后,您可以继续使用 TLS/SSL 启用 Kibana,以加密浏览器和 Kibana 之间的流量。
获取 TLS 证书和私钥
您可以选择从您喜欢的公共 CA 获取商业上受信任的证书和密钥。
同样,您可以为非公开的 Kibana 使用自签名证书。
如果您选择使用自签名证书,则有两种选择。 您可以使用以下方法获取 TLS 证书和密钥;
- 开放式SSL
- elasticsearch-certutil 工具
使用 OpenSSL 生成 Kibana 自签名 TLS 证书和密钥
使用以下命令生成 Kibana 自签名 TLS 证书和密钥 openssl
,运行下面的命令。 请务必替换证书中的相应详细信息.
mkdir /etc/ssl/kibana
openssl genrsa -out /etc/ssl/kibana/kibana-key.key 2048
openssl req -new -x509 -sha512 -key /etc/ssl/kibana/kibana-key.key -out /etc/ssl/kibana/kibana-ca.crt -subj "/C=US/ST=Utah/L=Lehi/O=Kifarunix-demo/OU=IT/CN=*.kifarunix-demo.com"
openssl req -new -key /etc/ssl/kibana/kibana-key.key -out /etc/ssl/kibana/kibana-ca.csr -subj "/C=US/ST=Utah/L=Lehi/O=Kifarunix-demo/OU=IT/CN=*.kifarunix-demo.com"
openssl x509 -req -in /etc/ssl/kibana/kibana-ca.csr -CA /etc/ssl/kibana/kibana-ca.crt -CAkey /etc/ssl/kibana/kibana-key.key -CAcreateserial -sha512 -out /etc/ssl/kibana/kibana-cert.crt -days 3650
将 Kibana 设置为 TLS 证书和密钥的所有者;
chown -R kibana: /etc/ssl/kibana
使用 elasticsearch-certutil 生成 Kibana 自签名 TLS 证书
如果您不想使用 OpenSSL 生成 Kibana TLS 证书和密钥,则可以使用 elasticsearch-certutil
工具如下。
创建目录来存储证书文件;
mkdir /etc/ssl/kibana
生成证书:
/usr/share/elasticsearch/bin/elasticsearch-certutil cert -name kibana-certs -dns localhost,*.kifarunix-demo.com -s
该命令将使用您在命令行中提供的名称生成一个 PKCS#12 文件。 但是,它会提示您输入证书文件名以及是否使用密码。
样本输出。 对于每个,按 ENTER 选择提供的默认名称/空白密码或提供名称/密码并分别按 ENTER。
Please enter the desired output file [kibana-certs.p12]: Enter password for kibana-certs.p12 :
这会将证书文件放在 /usr/share/elasticsearch/
与名字 kibana-certs.p12.
您可以将其复制到为上述证书创建的目录中;
cp /usr/share/elasticsearch/kibana-certs.p12 /etc/ssl/kibana
确保 基巴纳 用户拥有此文件。
chown -R kibana: /etc/ssl/kibana
启用 Kibana HTTPS 连接
您可以根据您生成 TLS 证书的方式启用 Kibana HTTPS 连接。
在 Kibana 中安装 PEM 格式的 TLS 证书
如果您使用生成的证书和密钥 开放式SSL,然后打开 Kibana 配置文件, /etc/kibana/kibana.yml
, 用于编辑和取消注释行;
... #server.ssl.enabled: false #server.ssl.certificate: /path/to/your/server.crt #server.ssl.key: /path/to/your/server.key ... #elasticsearch.ssl.certificateAuthorities: [ "/path/to/your/CA.pem" ] ...
并更新生成的证书和密钥的路径。
vim /etc/kibana/kibana.yml
这样这条线可能看起来像;
... server.ssl.enabled: true server.ssl.certificate: /etc/ssl/kibana/kibana-cert.crt server.ssl.key: /etc/ssl/kibana/kibana-key.key ... # Optional server.ssl.certificateAuthorities: /etc/ssl/kibana/kibana-ca.crt ...
在 Kibana 中安装 PKCS#12 格式的 TLS 证书
如果您使用生成的证书和密钥 elasticsearch-certutil
,然后打开 Kibana 配置文件, /etc/kibana/kibana.yml
, 用于编辑和取消注释该行 #server.ssl.enabled: 假 并将值更改为 真的.
还添加了一行, server.ssl.keystore.path: "/path/to/p12/file"
只需运行下面的命令;
echo -e 'server.ssl.enabled: truenserver.ssl.keystore.path: "/etc/ssl/kibana/kibana-certs.p12"' >> /etc/kibana/kibana.yml
如果您的证书使用密码加密,请通过运行以下命令将解密密码添加到您的 Kibana 密钥库中;
/usr/share/kibana/bin/kibana-keystore add server.ssl.keyPassphrase
如果您使用空密码,则输入该行, server.ssl.keystore.password: ""
, 在 kibana.yml.
echo 'server.ssl.keystore.password: ""' >> /etc/kibana/kibana.yml
否则,您可能会遇到此类错误, Error: PKCS#12 MAC could not be verified. Invalid password
.
从 PKCS 证书文件生成 PEM 文件
如果您生成了 PKCS 文件,则可以按如下方式从中生成 PEM 文件;
- 生成CA证书;
openssl pkcs12 -in /etc/ssl/kibana/kibana-certs.p12 -nodes -nokeys -cacerts -out /etc/ssl/kibana/kibana-ca.crt
- 生成证书文件;
openssl pkcs12 -in /etc/ssl/kibana/kibana-certs.p12 -out /etc/ssl/kibana/kibana-cert.crt -nokeys
- 生成密钥文件
openssl pkcs12 -in /etc/ssl/kibana/kibana-certs.p12 -out /etc/ssl/kibana/kibana-key.key -nodes -nocerts
获得 PEM 格式后,将所有权更改为 Kibana 并可以如上所示安装它们;
chown -R kibana: /etc/ssl/kibana
重启 Kibana 服务
systemctl restart kibana
检查日志以确保 Kibana 工作正常。
验证 Kibana HTTPS 配置
curl -sk -vvv "https://elk.kifarunix-demo.com:5601" --capath /etc/ssl/kibana/ 2>&1 | awk 'BEGIN { cert=0 } /^* Server certificate:/ { cert=1 } /^*/ { if (cert) print }'
* Server certificate: * subject: C=US; ST=Utah; L=Lehi; O=Kifarunix-demo; OU=IT; CN=*.kifarunix-demo.com * start date: May 25 18:52:15 2021 GMT * expire date: May 23 18:52:15 2031 GMT * issuer: C=US; ST=Utah; L=Lehi; O=Kifarunix-demo; OU=IT; CN=*.kifarunix-demo.com * SSL certificate verify result: self signed certificate (18), continuing anyway. * Connection #0 to host elk.kifarunix-demo.com left intact
在浏览器上,您可以导航到 https://:5601
出现提示时,接受自签名 ssl 警告并继续。
我们关于如何启用 HTTPS 连接的指南到此结束。
参考
配置 Kibana 以启用 TLS
将 Wazuh Manager 与 ELK Stack 集成
使用 ElastAlert 配置 ELK 堆栈警报
在 ELK Stack 上可视化 WordPress 用户活动日志