教程 2:保护自管型 Elastic Stack
编辑教程 2:保护自管型 Elastic Stack编辑
本教程是教程 1:安装自管型 Elastic Stack的后续内容。第一个教程介绍了如何配置多节点 Elasticsearch 集群,然后设置 Kibana,接着是 Fleet Server 和 Elastic Agent。在生产环境中,建议在完成 Kibana 设置后直接进行本教程以配置您的 SSL 证书。这些步骤将指导您完成该过程,然后介绍如何在证书到位的情况下配置 Fleet Server 和 Elastic Agent。
保护 Elastic Stack
从 Elastic 8.0 开始,Elastic Stack 默认启用安全性,这意味着 Elasticsearch 节点之间以及 Kibana 和 Elasticsearch 之间的流量是 SSL 加密的。虽然这适用于测试 Elastic 平台的非生产可行性,但大多数生产网络对使用受信任的 CA 签署的证书有要求。这些步骤演示了如何使用您自己的受信任 CA 签署的证书更新开箱即用的自签名证书。
为了对 Elasticsearch 集群节点之间以及 Kibana 和 Elasticsearch 之间的流量进行加密,必须为传输层(Elasticsearch 节点间通信)和 HTTP 层(用于 Elasticsearch REST API)创建 SSL 证书。同样,在设置 Fleet Server 时,您将生成和配置新的证书包,然后 Elastic Agent 使用生成的证书与 Fleet Server 和 Elasticsearch 进行通信。设置过程如下:
完成这些步骤大约需要一到两个小时。
先决条件和假设编辑
在开始之前,您需要按照教程 1:安装自管型 Elastic Stack中的步骤设置本地 Elasticsearch 集群和 Kibana。
本指南中的示例使用 RPM 软件包在运行 Red Hat Enterprise Linux 8 的主机上安装 Elastic Stack 组件。其他安装方法和操作系统的步骤类似,可以在每个部分链接的文档中找到。
此处不涉及防火墙和代理服务器等特殊注意事项。
步骤 1:生成新的自签名 CA 证书编辑
在生产环境中,您通常会使用您自己组织的 CA 证书,以及为安装 Elastic Stack 的主机生成的证书文件。出于演示目的,我们将使用 Elastic 证书实用程序来配置自签名 CA 证书。
-
在 Elasticsearch 集群的第一个节点上,停止 Elasticsearch 服务
sudo systemctl stop elasticsearch.service
-
使用提供的证书实用程序
elasticsearch-certutil
生成 CA 证书。请注意,该实用程序的位置取决于您用于安装 Elasticsearch 的安装方法。有关命令详细信息,请参阅elasticsearch-certutil;有关整个过程的详细信息,请参阅使用不同的 CA 更新安全证书。运行以下命令。出现提示时,请为输出文件指定一个唯一的名称,例如
elastic-stack-ca.zip
sudo /usr/share/elasticsearch/bin/elasticsearch-certutil ca -pem
-
将输出文件移动到
/etc/elasticsearch/certs
目录。安装 Elasticsearch 时会自动创建此目录。sudo mv /usr/share/elasticsearch/elastic-stack-ca.zip /etc/elasticsearch/certs/
-
解压缩文件
sudo unzip -d /etc/elasticsearch/certs /etc/elasticsearch/certs/elastic-stack-ca.zip
-
查看解压缩到新
ca
目录中的文件sudo ls /etc/elasticsearch/certs/ca/
-
ca.crt
- 生成的证书(或者您可以将其替换为您自己的证书,由您组织的证书颁发机构签名)
-
ca.key
- 证书颁发机构的私钥
这些生成新的自签名 CA 证书的步骤只需要在第一个 Elasticsearch 节点上完成。其他 Elasticsearch 节点将使用相同的
ca.crt
和ca.key
文件。 -
-
在
/etc/elasticsearch/certs/ca/
目录中,将新创建的 CA 证书导入 Elasticsearch 信任库。此步骤可确保您的集群信任新的 CA 证书。在新安装中,会自动创建新的密钥库和信任库。如果您在现有的 Elasticsearch 安装上运行这些步骤,并且您知道密钥库和信任库的密码,请按照使用不同的 CA 更新安全证书中的说明导入 CA 证书。
运行如下所示的
keytool
命令,将<password>
替换为信任库的唯一密码,并安全地存储该密码sudo /usr/share/elasticsearch/jdk/bin/keytool -importcert -trustcacerts -noprompt -keystore /etc/elasticsearch/certs/elastic-stack-ca.p12 -storepass <password> -alias new-ca -file /etc/elasticsearch/certs/ca/ca.crt
-
确保新密钥已添加到密钥库中
keytool -keystore elastic-stack-ca.p12 -list
keytool 实用程序作为 Elasticsearch 安装的一部分提供,位于 RPM 安装的
/usr/share/elasticsearch/jdk/bin/keytool
。出现提示时输入您的密码。结果应显示新添加密钥的详细信息
Keystore type: jks Keystore provider: SUN Your keystore contains 1 entry new-ca, Jul 12, 2023, trustedCertEntry, Certificate fingerprint (SHA-256): F0:86:6B:57:FC...
步骤 2:为传输层生成新证书编辑
本指南假设使用自签名证书,但导入 CA 签署的证书的过程是相同的。如果您使用的是您组织提供的 CA,则需要生成证书签名请求 (CSR),然后在此步骤中使用签名的证书。无论证书是自签名还是 CA 签署,一旦生成证书,步骤都是相同的。
-
在 Elasticsearch 安装目录中,使用新创建的 CA 证书和私钥,为您的 elasticsearch 节点创建新证书
sudo /usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca-cert /etc/elasticsearch/certs/ca/ca.crt --ca-key /etc/elasticsearch/certs/ca/ca.key
出现提示时,请选择输出文件名(您可以使用默认值
elastic-certificates.p12
)和证书密码。 -
将生成的文件移动到
/etc/elasticsearch/certs
目录sudo mv /usr/share/elasticsearch/elastic-certificates.p12 /etc/elasticsearch/certs/
如果您在已包含数据的生产集群上运行这些步骤
- 在具有多个 Elasticsearch 节点的集群中,在继续之前,您首先需要从您要更新密钥库的节点开始执行滚动重启。在
执行任何必要的更改
步骤停止,然后继续执行本指南中的下一步。 - 在单节点集群中,请务必先停止 Elasticsearch,然后再继续。
- 在具有多个 Elasticsearch 节点的集群中,在继续之前,您首先需要从您要更新密钥库的节点开始执行滚动重启。在
-
因为您创建了新的信任库和密钥库,所以您需要使用新的信任库和密钥库文件名更新
/etc/elasticsearch/elasticsearch.yml
设置文件。在文本编辑器中打开 Elasticsearch 配置文件,并调整以下值以反映新创建的密钥库和信任库文件名和路径
xpack.security.transport.ssl: ... keystore.path: /etc/elasticsearch/certs/elastic-certificates.p12 truststore.path: /etc/elasticsearch/certs/elastic-stack-ca.p12
更新 Elasticsearch 密钥库编辑
Elasticsearch 使用单独的密钥库来保存密钥库和信任库的密码,这些密钥库和信任库包含在先前步骤中创建的 CA 和节点证书。对该密钥库的访问是通过使用名为 elasticsearch-keystore
的实用程序进行的。
-
在 Elasticsearch 安装目录中,列出现有密钥库的内容
sudo /usr/share/elasticsearch/bin/elasticsearch-keystore list
结果应如下所示
keystore.seed xpack.security.http.ssl.keystore.secure_password xpack.security.transport.ssl.keystore.secure_password xpack.security.transport.ssl.truststore.secure_password
请注意,以下各项都有条目
- 包含 CA 证书的
transport.ssl.truststore
- 包含 CA 签署的证书的
transport.ssl.keystore
-
HTTP 层的
http.ssl.keystore
这些条目是在安装时创建的,需要替换为新创建的信任库和密钥库的密码。
- 包含 CA 证书的
-
删除默认传输密钥库和信任库的现有密钥库值
sudo /usr/share/elasticsearch/bin/elasticsearch-keystore remove xpack.security.transport.ssl.keystore.secure_password sudo /usr/share/elasticsearch/bin/elasticsearch-keystore remove xpack.security.transport.ssl.truststore.secure_password
-
使用在先前步骤中创建的新密钥库和信任库的密码更新
elasticsearch-keystore
。这可确保 Elasticsearch 可以读取新的存储sudo /usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password sudo /usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
步骤 3:为 HTTP 层生成新证书编辑
现在 Elasticsearch 节点之间的通信(传输层)已使用 SSL 证书进行了保护,必须对使用 REST API 的通信执行相同的操作,包括 Kibana、客户端和 HTTP 层上的任何其他组件。
-
与传输层的过程类似,在 Elasticsearch 集群的第一个节点上,使用证书实用程序为 HTTP 通信生成 CA 证书
sudo /usr/share/elasticsearch/bin/elasticsearch-certutil http
按如下方式响应命令提示符
- 当询问您是否要生成 CSR 时,请输入
n
。 -
当询问您是否要使用现有 CA 时,请输入
y
。如果您使用的是您组织的 CA 证书,请在以下两个步骤中指定该证书和密钥。
- 提供新创建的 CA 证书的绝对路径:
/etc/elasticsearch/certs/ca/ca.crt
。 - 提供新创建的 CA 密钥的绝对路径:
/etc/elasticsearch/certs/ca/ca.key
。 - 输入证书的到期值。您可以输入以年、月或天为单位的有效期。例如,输入
1y
表示一年。 -
当询问您是否要为每个节点生成一个证书时,请输入
y
。您将逐步完成为每个节点创建证书的过程。每个证书都有自己的私钥,并将针对特定的主机名或 IP 地址颁发。
-
输入您的第一个 Elasticsearch 节点的主机名,例如
mynode-es1
。mynode-es1
- 出现提示时,请确认设置正确。
-
添加客户端可以用来连接到第一个 Elasticsearch 节点的网络 IP 地址。这与教程 1:安装自管型 Elastic Stack步骤 2 中描述的值相同,例如
10.128.0.84
10.128.0.84
- 出现提示时,请确认设置正确。
- 出现提示时,选择生成其他证书,然后重复上述步骤为 Elasticsearch 集群中的每个节点添加主机名和 IP 设置。
- 为生成的
http.p12
密钥库文件提供密码。 -
生成的文件将包含在 zip 存档中。在提示符下,提供应在其中创建存档的路径和文件名。
在本例中,我们使用:
/etc/elasticsearch/certs/elasticsearch-ssl-http.zip
What filename should be used for the output zip file? [/usr/share/elasticsearch/elasticsearch-ssl-http.zip] /etc/elasticsearch/certs/elasticsearch-ssl-http.zip
-
- 当询问您是否要生成 CSR 时,请输入
-
之前,当您为传输层生成证书时,默认文件名是
elastic-certificates.p12
。现在,当为 HTTP 层生成证书时,默认文件名是http.p12
。这与首次安装初始 Elasticsearch 集群时现有的 HTTP 层证书文件的名称相匹配。为了避免任何可能的名称冲突,请重命名现有的
http.p12
文件,以区别于新创建的密钥库。sudo mv /etc/elasticsearch/certs/http.p12 /etc/elasticsearch/certs/http-old.p12
-
解压缩生成的
elasticsearch-ssl-http.zip
存档。sudo unzip -d /usr/share/elasticsearch/ /etc/elasticsearch/certs/elasticsearch-ssl-http.zip
-
解压缩存档后,证书文件将位于每个 Elasticsearch 节点和 Kibana 节点的单独目录中。
您可以运行递归
ls
命令来查看文件结构。ls -lR /usr/share/elasticsearch/{elasticsearch,kibana}
elasticsearch: total 0 drwxr-xr-x. 2 root root 56 Dec 12 19:13 mynode-es1 drwxr-xr-x. 2 root root 72 Dec 12 19:04 mynode-es2 drwxr-xr-x. 2 root root 72 Dec 12 19:04 mynode-es3 elasticsearch/mynode-es1: total 8 -rw-r--r--. 1 root root 1365 Dec 12 19:04 README.txt -rw-r--r--. 1 root root 845 Dec 12 19:04 sample-elasticsearch.yml elasticsearch/mynode-es2: total 12 -rw-r--r--. 1 root root 3652 Dec 12 19:04 http.p12 -rw-r--r--. 1 root root 1365 Dec 12 19:04 README.txt -rw-r--r--. 1 root root 845 Dec 12 19:04 sample-elasticsearch.yml elasticsearch/mynode-es3: total 12 -rw-r--r--. 1 root root 3652 Dec 12 19:04 http.p12 -rw-r--r--. 1 root root 1365 Dec 12 19:04 README.txt -rw-r--r--. 1 root root 845 Dec 12 19:04 sample-elasticsearch.yml kibana: total 12 -rw-r--r--. 1 root root 1200 Dec 12 19:04 elasticsearch-ca.pem -rw-r--r--. 1 root root 1306 Dec 12 19:04 README.txt -rw-r--r--. 1 root root 1052 Dec 12 19:04 sample-kibana.yml
-
用新的密钥库替换现有的密钥库。证书目录的位置可能与此处显示的不同,具体取决于您选择的安装方法。
运行
mv
命令,将<es1-hostname>
替换为初始 Elasticsearch 节点的主机名。sudo mv /usr/share/elasticsearch/elasticsearch/<es1-hostname>/http.p12 /etc/elasticsearch/certs/
-
因为这是一个新的密钥库,所以需要使用其位置的路径更新 Elasticsearch 配置文件。打开
/etc/elasticsearch/elasticsearch.yml
并使用新路径更新 HTTP SSL 设置。xpack.security.http.ssl: enabled: true #keystore.path: certs/http.p12 keystore.path: /etc/elasticsearch/certs/http.p12
-
由于您还生成了新的密钥库密码,因此还需要更新 Elasticsearch 密钥库。在 Elasticsearch 安装目录中,首先删除现有的 HTTP 密钥库条目。
sudo /usr/share/elasticsearch/bin/elasticsearch-keystore remove xpack.security.http.ssl.keystore.secure_password
-
使用为此密钥库生成的密码添加更新后的 HTTP 密钥库密码。
sudo /usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
-
因为在本教程中,我们已将文件添加到 Elasticsearch 配置目录中,所以在重新启动 Elasticsearch 之前,我们需要确保权限和所有权正确无误。
-
将文件更改为归
root:elasticsearch
所有。sudo chown -R root:elasticsearch /etc/elasticsearch/certs/
-
将
/etc/elasticsearch/certs
中的文件设置为所有者(root
)具有读写权限,elastic
用户具有读取权限。sudo chmod 640 /etc/elasticsearch/certs/elastic-certificates.p12 sudo chmod 640 /etc/elasticsearch/certs/elastic-stack-ca.p12 sudo chmod 640 /etc/elasticsearch/certs/http_ca.crt sudo chmod 640 /etc/elasticsearch/certs/http.p12
-
将
/etc/elasticsearch/certs
和/etc/elasticsearch/certs/ca
目录更改为可由所有者执行。sudo chmod 750 /etc/elasticsearch/certs sudo chmod 750 /etc/elasticsearch/certs/ca
-
-
重新启动 Elasticsearch 服务。
sudo systemctl start elasticsearch.service
-
运行 status 命令以确认 Elasticsearch 正在运行。
sudo systemctl status elasticsearch.service
如果出现任何问题,您还可以通过跟踪 Elasticsearch 日志文件来监视 Elasticsearch 日志以查找任何问题。
sudo tail -f /var/log/elasticsearch/elasticsearch-demo.log
日志文件中类似于以下内容的行表示 SSL 已正确配置。
[2023-07-12T13:11:29,154][INFO ][o.e.x.s.Security ] [es-ssl-test] Security is enabled
步骤 4:在其他 Elasticsearch 节点上配置安全性编辑
现在第一个 Elasticsearch 节点的安全性已配置完毕,需要在每个其他 Elasticsearch 节点上重复一些步骤。
-
为避免文件名冲突,请在每个其他 Elasticsearch 节点上重命名
/etc/elasticsearch/certs/
目录中现有的http.p12
文件。mv http.p12 http-old.p12
-
复制您在第一个 Elasticsearch 节点上生成的 CA 和信任库文件,以便可以在所有其他节点上重复使用它们。
- 将
/ca
目录(包含ca.crt
和ca.key
)从第一个 Elasticsearch 节点上的/etc/elasticsearch/certs/
复制到所有其他 Elasticsearch 节点上的相同路径。 - 将
elastic-stack-ca.p12
文件从/etc/elasticsearch/certs/
复制到所有其他 Elasticsearch 节点上的/etc/elasticsearch/certs/
目录。 - 将
http.p12
文件从/usr/share/elasticsearch/elasticsearch
中的每个节点目录(即elasticsearch/mynode-es1
、elasticsearch/mynode-es2
和elasticsearch/mynode-es3
)复制到每个相应集群节点上的/etc/elasticsearch/certs/
目录。
- 将
-
在每个 Elasticsearch 节点上,重复为传输层生成新证书的步骤。
-
停止 Elasticsearch 服务。
sudo systemctl stop elasticsearch.service
-
在
/etc/elasticsearch/certs
目录中,为 Elasticsearch 节点创建一个新证书。sudo /usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca-cert /etc/elasticsearch/certs/ca/ca.crt --ca-key /etc/elasticsearch/certs/ca/ca.key
出现提示时,请选择输出文件名并指定证书的密码。在本例中,我们将使用
/etc/elasticsearch/certs/elastic-certificates.p12
。 -
使用新的信任库和密钥库文件名和路径更新
/etc/elasticsearch/elasticsearch.yml
设置文件。xpack.security.transport.ssl: ... keystore.path: /etc/elasticsearch/certs/elastic-certificates.p12 truststore.path: /etc/elasticsearch/certs/elastic-stack-ca.p12
-
列出 Elasticsearch 密钥库的内容。
/usr/share/elasticsearch/bin/elasticsearch-keystore list
结果应如下所示
keystore.seed xpack.security.http.ssl.keystore.secure_password xpack.security.transport.ssl.keystore.secure_password xpack.security.transport.ssl.truststore.secure_password
-
删除默认传输密钥库和信任库的现有密钥库值
sudo /usr/share/elasticsearch/bin/elasticsearch-keystore remove xpack.security.transport.ssl.keystore.secure_password sudo /usr/share/elasticsearch/bin/elasticsearch-keystore remove xpack.security.transport.ssl.truststore.secure_password
-
使用新密钥库和信任库的密码更新
elasticsearch-keystore
。sudo /usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password sudo /usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
-
-
对于 HTTP 层,已在第一个 Elasticsearch 节点上生成了证书。每个其他 Elasticsearch 节点只需要配置为使用新证书即可。
-
使用新的信任库和密钥库文件名更新
/etc/elasticsearch/elasticsearch.yml
设置文件。xpack.security.http.ssl: enabled: true #keystore.path: certs/http.p12 keystore.path: /etc/elasticsearch/certs/http.p12
-
删除现有的 HTTP 密钥库条目。
sudo /usr/share/elasticsearch/bin/elasticsearch-keystore remove xpack.security.http.ssl.keystore.secure_password
-
添加更新后的 HTTP 密钥库密码。
sudo /usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
-
将证书文件更改为归
root:elasticsearch
组所有。sudo chown -R root:elasticsearch /etc/elasticsearch/certs/
-
将
/etc/elasticsearch/certs
中的文件设置为所有者(root
)具有读写权限,elastic
用户具有读取权限。chmod 640 *
-
将
/etc/elasticsearch/certs
和/etc/elasticsearch/certs/ca
目录更改为可由所有者执行。chmod 750 /etc/elasticsearch/certs chmod 750 /etc/elasticsearch/certs/ca
-
-
重新启动 Elasticsearch 服务。
sudo systemctl start elasticsearch.service
-
运行 status 命令以确认 Elasticsearch 正在运行。
sudo systemctl status elasticsearch.service
步骤 5:为 Kibana 生成服务器端和客户端证书编辑
现在传输层和 HTTP 层已使用新证书配置了加密,要实现与 Elasticsearch 的端到端连接,还需要完成两项任务:设置用于加密 Kibana 和 Elasticsearch 之间以及客户端浏览器和 Kibana 之间的证书。有关任何这些步骤的更多详细信息,请参阅 Kibana 和 Elasticsearch 之间的相互 TLS 身份验证 和 加密浏览器和 Kibana 之间的流量。
-
在步骤 3 中,当您为 HTTP 层生成新证书时,该过程创建了一个存档
elasticsearch-ssl-http.zip
。从扩展存档中的
kibana
目录中,将elasticsearch-ca.pem
私钥文件复制到 Kibana 主机。 -
在 Kibana 主机上,将
elasticsearch-ca.pem
复制到 Kibana 配置目录(根据您使用的安装方法,配置目录的位置可能与显示的不同)。mv elasticsearch-ca.pem /etc/kibana
-
停止 Kibana 服务。
sudo systemctl stop kibana.service
-
更新
/etc/kibana/kibana.yml
设置文件以反映elasticsearch-ca.pem
的位置。elasticsearch.ssl.certificateAuthorities: [/etc/kibana/elasticsearch-ca.pem]
-
登录到第一个 Elasticsearch 节点并使用证书实用程序为 Kibana 服务器生成证书包。此证书将用于加密 Kibana 和客户端浏览器之间的流量。在命令中,将 <DNS 名称> 和 <IP 地址> 替换为 Kibana 服务器主机名和 IP 地址。
sudo /usr/share/elasticsearch/bin/elasticsearch-certutil cert --name kibana-server --ca-cert /etc/elasticsearch/certs/ca/ca.crt --ca-key /etc/elasticsearch/certs/ca/ca.key --dns <DNS name> --ip <IP address> --pem
出现提示时,请为输出文件指定一个唯一的名称,例如
kibana-cert-bundle.zip
。 -
将生成的存档复制到您的 Kibana 主机并解压缩。
sudo unzip kibana-cert-bundle.zip
解压缩的存档将创建一个目录
kibana-server
,其中包含新的 Kibana 密钥和证书。ls -l kibana-server/ total 8 -rw-r--r--. 1 root root 1208 May 3 16:08 kibana-server.crt -rw-r--r--. 1 root root 1675 May 3 16:08 kibana-server.key
-
将证书和密钥复制到
/etc/kibana
中。sudo cp kibana-server.crt /etc/kibana/ sudo cp kibana-server.key /etc/kibana/
-
更新证书文件的权限以确保它们可读。在
/etc/kibana
目录中,运行。sudo chmod 640 *.crt sudo chmod 640 *.key
-
打开
/etc/kibana/kibana.yml
并进行以下更改。server.ssl.certificate: /etc/kibana/kibana-server.crt server.ssl.key: /etc/kibana/kibana-server.key server.ssl.enabled: true
为下一步保留文件打开状态。
-
为确保 Kibana 会话不会失效,请通过为
xpack.security.encryptionKey
设置分配任何 32 个字符或更长的字符串来设置加密密钥(此字符串将在kibana.yml
中配置,无需记住)。要生成随机字符串,您可以使用以下 bash 命令。cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 32 | head -n 1
使用您自己的字符串或上述命令序列的输出,将加密密钥设置添加到
/etc/kibana/kibana.yml
中。xpack.security.encryptionKey: previously_create_string
保存并关闭文件。
-
重新启动 Kibana 服务。
sudo systemctl start kibana.service
-
确认 Kibana 正在运行。
sudo systemctl status kibana.service
如果一切配置正确,将建立与 Elasticsearch 的连接,并且 Kibana 将正常启动。
-
您还可以查看 Kibana 日志文件以收集更多详细信息。
tail -f /var/log/kibana/kibana.log
在日志文件中,您应该找到一条
Kibana 现已可用
消息。 -
现在,您应该拥有一个端到端加密的 Elasticsearch 和 Kibana 部署,该部署提供集群节点和 Kibana 之间的加密,以及对 Kibana 的 HTTPS 访问。
在 Web 浏览器中打开 Kibana 主机的外部 IP 地址:
https://<kibana-host-address>:5601
。请注意,URL 应使用https
协议而不是http
协议。 - 使用您在 教程 1:安装自管型 Elastic Stack 的步骤 1 中配置的
elastic
用户和密码登录。
恭喜!您已成功更新 Elasticsearch 和 Kibana 之间的 SSL 证书。
步骤 6:安装配置了 SSL 证书的 Fleet编辑
现在 Kibana 已启动并运行,您可以继续安装 Fleet Server,它将管理我们将在稍后步骤中设置的 Elastic Agent。
如果您想详细了解这些步骤,请参阅 Fleet 和 Elastic Agent 指南中的 在本地和自管型部署。您可以在 为自管型 Fleet Server 配置 SSL/TLS 中找到生成和配置证书的详细步骤。
-
登录到第一个 Elasticsearch 节点并使用证书实用程序为 Fleet Server 生成证书包。在命令中,将
<DNS 名称>
和IP 地址
替换为您的 Fleet Server 主机名和 IP 地址。sudo /usr/share/elasticsearch/bin/elasticsearch-certutil cert --name fleet-server --ca-cert /etc/elasticsearch/certs/ca/ca.crt --ca-key /etc/elasticsearch/certs/ca/ca.key --dns <DNS name> --ip <IP address> --pem
出现提示时,请为输出文件指定一个唯一的名称,例如
fleet-cert-bundle.zip
。 -
在您的 Fleet Server 主机上,为证书文件创建一个目录。
sudo mkdir /etc/fleet
-
将生成的存档复制到您的 Fleet Server 主机并将其解压缩到
/etc/fleet/
中。-
/etc/fleet/fleet-server.crt
-
/etc/fleet/fleet-server.key`
-
-
从第一个 Elasticsearch 节点复制
ca.crt
文件,并将其粘贴到 Fleet Server 主机上的/etc/fleet/
目录中。为了便于识别,我们还将其重命名为es-ca.crt
。-
/etc/fleet/es-ca.crt
-
-
更新证书文件的权限,确保它们可读。在
/etc/fleet
目录中,运行以下命令:sudo chmod 640 *.crt sudo chmod 640 *.key
-
现在证书文件已就位,在 Fleet Server 主机上为安装包创建一个工作目录。
mkdir fleet-install-files
-
切换到新目录。
cd fleet-install-files
- 在终端中,运行
ifconfig
命令并复制主机 inet IP 地址的值(例如,10.128.0.84
)。稍后您将需要此值。 - 返回 Web 浏览器,打开 Kibana 菜单并转到 管理 → Fleet。Fleet 打开时会显示一条消息,提示您需要添加 Fleet Server。
- 单击 添加 Fleet Server。添加 Fleet Server 弹出窗口打开。
- 在弹出窗口中,选择 高级 选项卡。
-
在 为 Fleet Server 创建策略 步骤中,保留默认的 Fleet Server 策略名称,并将所有高级选项保留为默认值。
保留收集系统日志和指标的选项。单击 创建策略。创建策略大约需要一分钟时间。
- 在 选择安全部署模式 步骤中,选择 生产 选项。这使您可以提供自己的证书。
-
在 添加您的 Fleet Server 主机 步骤中:
- 为您的 Fleet Server 主机指定一个名称,例如
Fleet Server
。 -
指定主机 URL 以及 Elastic Agent 将到达 Fleet Server 的位置,包括默认端口
8220
。例如,https://10.128.0.203:8220
。URL 是您从
ifconfig
输出中复制的 inet 值。有关默认端口分配的详细信息,请参阅本地 Fleet Server 安装文档中的 默认端口分配。
- 单击 添加主机。
- 为您的 Fleet Server 主机指定一个名称,例如
- 在 生成服务令牌 步骤中,生成令牌并保存输出。令牌也将自动传播到安装 Fleet Server 的命令。
-
在 将 Fleet Server 安装到集中式主机 步骤中,在本例中,我们选择 Linux Tar 选项卡,但您可以选择适合您要设置 Fleet Server 的主机操作系统的选项卡。
请注意,建议使用 TAR/ZIP 软件包而不是 RPM/DEB 系统软件包,因为只有前者支持使用 Fleet 升级 Fleet Server。
-
在 Fleet Server 主机的终端中逐个运行前三个命令。
这些命令将分别:
- 从 Elastic Artifact Registry 下载 Fleet Server 软件包。
- 解压缩软件包存档。
- 切换到包含安装二进制文件的目录。
-
在运行提供的
elastic-agent install
命令之前,您需要进行一些更改:-
将路径更新为正确的文件位置:
- Elasticsearch CA 文件 (
es-ca.crt
) - Fleet Server 证书 (
fleet-server.crt
) - Fleet Server 密钥 (
fleet-server.key
)
- Elasticsearch CA 文件 (
-
还需要更新
fleet-server-es-ca-trusted-fingerprint
。在您的任何 Elasticsearch 主机上,运行以下命令以获取要使用的正确指纹:grep -v ^- /etc/elasticsearch/certs/ca/ca.crt | base64 -d | sha256sum
保存指纹值。稍后您将需要它。
将
fleet-server-es-ca-trusted-fingerprint
设置替换为返回的值。您更新后的命令应类似于以下内容:sudo ./elastic-agent install -url=https://10.128.0.208:8220 \ --fleet-server-es=https://10.128.0.84:9200 \ --fleet-server-service-token=AAEAAWVsYXN0aWMvZmxlZXQtc2VydmPyL6Rva2VuLTE5OTg4NzAxOTM4NDU6X1I0Q1RrRHZTSWlyNHhkSXQwNEJoQQ \ --fleet-server-policy=fleet-server-policy \ --fleet-server-es-ca-trusted-fingerprint=92b51cf91e7fa311f8c84849224d448ca44824eb \ --certificate-authorities=/etc/fleet/es-ca.crt \ --fleet-server-cert=/etc/fleet/fleet-server.crt \ --fleet-server-cert-key=/etc/fleet/fleet-server.key \ --fleet-server-port=8220
有关所有安装命令选项的详细信息,请参阅 Elastic Agent 命令参考中的
elastic-agent install
。
-
-
完成所需的更新后,运行
elastic-agent install
命令以安装 Fleet Server。出现提示时,确认 Elastic Agent 应作为服务运行。如果一切顺利,安装将成功完成。
Elastic Agent has been successfully installed.
想知道为什么该命令指的是 Elastic Agent 而不是 Fleet Server?Fleet Server 实际上是一个在 Elastic Agent 内部运行的子进程,它具有特殊的 Fleet Server 策略。有关详细信息,请参阅 什么是 Fleet Server。
- 返回 Kibana 添加 Fleet Server 弹出窗口,等待确认 Fleet Server 已连接。
- 确认连接后,忽略 继续注册 Elastic Agent 选项并关闭弹出窗口。
Fleet Server 现已完全设置完毕!
在继续安装 Elastic Agent 之前,需要执行一些步骤来使用 Elasticsearch CA 指纹更新 kibana.yml
设置文件。
-
在您的 Kibana 主机上,停止 Kibana 服务。
sudo systemctl stop kibana.service
- 打开
/etc/kibana/kibana.yml
进行编辑。 - 找到
xpack.fleet.outputs
设置。 -
将
ca_trusted_fingerprint
更新为您之前在 Elasticsearchca.crt
文件上运行grep
命令时捕获的值。kibana.yml
中的更新后的条目应如下所示:xpack.fleet.outputs: [{id: fleet-default-output, name: default, is_default: true, is_default_monitoring: true, type: elasticsearch, hosts: [`https://10.128.0.84:9200`], ca_trusted_fingerprint: 92b51cf91e7fa311f8c84849224d448ca44824eb}]
- 保存您的更改。
-
重新启动 Kibana。
sudo systemctl start kibana.service
Kibana 现在已配置 Elastic Agent 访问 Elasticsearch 的正确指纹。您现在可以设置 Elastic Agent 了!
步骤 7:安装 Elastic Agentedit
接下来,我们将在另一台主机上安装 Elastic Agent,并使用 System 集成来监控系统日志和指标。您可以在 为自管 Fleet Server 配置 SSL/TLS 中找到有关这些步骤的更多详细信息。
- 登录到您要设置 Elastic Agent 的主机。
-
为 Elasticsearch 证书文件创建一个目录。
sudo mkdir /etc/agent
-
从第一个 Elasticsearch 节点复制
ca.crt
文件,并将其粘贴到 Fleet Server 主机上的/etc/agent/
目录中。为了便于识别,我们还将其重命名为es-ca.crt
。-
/etc/fleet/es-ca.crt
-
-
为安装包创建一个工作目录。
mkdir agent-install-files
-
切换到新目录。
cd agent-install-files
- 打开 Kibana 并转到 管理 → Fleet。
- 在 代理 选项卡上,您应该会看到您的新 Fleet Server 策略正在运行,状态良好。
- 单击 添加代理。添加代理 弹出窗口打开。
- 在弹出窗口中,选择一个代理策略名称,例如
Demo Agent Policy
。 - 保留 收集系统日志和指标 启用。这会将 System 集成 添加到 Elastic Agent 策略。
- 单击 创建策略。
- 对于 注册 Fleet? 步骤,保留 注册 Fleet 选中。
-
在 在您的主机上安装 Elastic Agent 步骤中,在本例中,我们选择 Linux Tar 选项卡,但您可以选择适合您要设置 Fleet Server 的主机操作系统的选项卡。
与 Fleet Server 一样,请注意,建议使用 TAR/ZIP 软件包而不是 RPM/DEB 系统软件包,因为只有前者支持使用 Fleet 升级 Elastic Agent。
-
在 Elastic Agent 主机的终端中逐个运行前三个命令。
这些命令将分别:
- 从 Elastic Artifact Registry 下载 Elastic Agent 软件包。
- 解压缩软件包存档。
- 切换到包含安装二进制文件的目录。
-
在运行提供的
elastic-agent install
命令之前,您需要进行一些更改:- 对于
--url
参数,确认端口号为8220
(这是本地 Fleet Server 的默认端口)。 -
添加一个
--certificate-authorities
参数,其中包含 CA 证书文件的完整路径。例如,--certificate-authorities=/etc/agent/es-ca.crt
。结果应如下所示:
sudo ./elastic-agent install \ --url=https://10.128.0.203:8220 \ --enrollment-token=VWCobFhKd0JuUnppVYQxX0VKV5E6UmU3BGk0ck9RM2HzbWEmcS4Bc1YUUM== \ --certificate-authorities=/etc/agent/es-ca.crt
- 对于
-
运行
elastic-agent install
命令。在提示符下,输入
Y
以安装 Elastic Agent 并将其作为服务运行。等待安装完成。如果一切顺利,安装将成功完成。
Elastic Agent has been successfully installed.
- 在 Kibana 添加代理 弹出窗口中,等待确认 Elastic Agent 已连接。
- 等待 确认传入数据 步骤完成。这可能需要几分钟时间。
- 确认数据正在流动后,关闭弹出窗口。
您的新 Elastic Agent 现已安装并注册到 Fleet Server。
步骤 8:查看您的系统数据edit
现在所有组件都已安装完毕,是时候查看您的系统数据了。
查看您的系统日志数据:
- 打开 Kibana 菜单并转到 分析 → 仪表板。
- 在查询字段中,搜索
Logs System
。 - 选择
[Logs System] Syslog dashboard
链接。Kibana 仪表板打开,其中包含 Syslog 事件、主机名和进程等的可视化。
查看您的系统指标数据:
- 打开 Kibana 菜单并返回到 分析 → 仪表板。
- 在查询字段中,搜索
Metrics System
。 -
选择
[Metrics System] Host overview
链接。Kibana 仪表板打开,其中包含主机指标的可视化,包括 CPU 使用率、内存使用率、正在运行的进程等。
恭喜!您已使用自己的受信任 CA 签署的证书成功为 Elasticsearch、Kibana、Fleet 和 Elastic Agent 配置了安全性。
下一步是什么?编辑
- 您是否有准备好摄取到新设置的 Elastic Stack 中的数据?了解如何将数据添加到 Elasticsearch。
- 使用Elastic 可观测性统一您的日志、基础设施指标、正常运行时间和应用程序性能数据。
- 想要保护您的端点免受安全威胁?试试Elastic 安全。添加端点保护只是您添加到代理策略中的另一个集成!