在 CentOS 系统上使用 Filebeat 实现日志加密传输,是许多运维人员在安全合规要求严格的环境下会遇到的常见需求。本文将从安装到验证,完整梳理整个配置流程,帮助你一步到位完成 TLS 加密日志传输的设置。

1. 安装 Filebeat
首先,确认你的 CentOS 环境已安装 Filebeat。推荐直接从 Elastic 官方仓库下载对应版本的安装包,随后进行安装。以下以 7.10.0 版本为例演示安装步骤:
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.10.0-amd64.deb
sudo dpkg -i filebeat-7.10.0-amd64.deb
如果你的 CentOS 属于 RHEL 系列,也可以使用 rpm 包完成安装。安装完成后,主要任务就是进行配置文件调整。
2. 配置 Filebeat
编辑配置文件 /etc/filebeat/filebeat.yml,重点修改输出部分的设置。下面分步骤说明。
2.1 启用 TLS 加密
在 output.elasticsearch 段落下,指定 Elasticsearch 的 HTTPS 地址,并填写 SSL 证书与密钥的存放路径:
output.elasticsearch:
hosts: ["https://your_elasticsearch_host:9200"]
ssl.certificate_authorities: ["/etc/filebeat/certs/ca.crt"]
ssl.certificate: "/etc/filebeat/certs/filebeat.crt"
ssl.key: "/etc/filebeat/certs/filebeat.key"
一个小提示:证书路径可以根据实际环境调整,但建议统一存放在一个目录下,便于后续管理和维护。
2.2 配置证书和密钥
接下来需要自行生成一套 SSL 证书。首先创建 CA 证书,然后签发 Filebeat 使用的客户端证书。
生成 CA 证书
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/filebeat/certs/ca.key \
-out /etc/filebeat/certs/ca.crt \
-subj "/C=US/ST=YourState/L=YourCity/O=YourOrganization/CN=YourCA"
生成 Filebeat 证书和密钥
sudo openssl req -newkey rsa:2048 -nodes \
-keyout /etc/filebeat/certs/filebeat.key \
-out /etc/filebeat/certs/filebeat.csr \
-subj "/C=US/ST=YourState/L=YourCity/O=YourOrganization/CN=your_elasticsearch_host"
sudo openssl x509 -req \
-in /etc/filebeat/certs/filebeat.csr \
-CA /etc/filebeat/certs/ca.crt \
-CAkey /etc/filebeat/certs/ca.key \
-CAcreateserial \
-out /etc/filebeat/certs/filebeat.crt \
-days 365
实际部署时,请将 your_elasticsearch_host 替换为你的 Elasticsearch 服务器域名或 IP。生产环境建议使用域名,以免后续 IP 变更造成额外调整。
2.3 配置 Elasticsearch
仅配置 Filebeat 还不够,Elasticsearch 也需要允许 TLS 连接。编辑 /etc/elasticsearch/elasticsearch.yml 并添加以下内容:
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
然后使用 Elasticsearch 自带的 elasticsearch-certutil 工具生成节点证书:
sudo /usr/share/elasticsearch/bin/elasticsearch-certutil ca --pem --out /etc/elasticsearch/certs/ca.crt
sudo /usr/share/elasticsearch/bin/elasticsearch-certutil cert --pem \
-in /etc/elasticsearch/certs/ca.crt \
-out /etc/elasticsearch/certs/elastic-certificates.p12 \
-pass ""
注意:生成的 elastic-certificates.p12 文件需确保 Filebeat 客户端能够通过 CA 证书进行验证。
3. 重启 Filebeat 和 Elasticsearch
所有配置完成后,重启服务使变更生效:
sudo systemctl restart filebeat
sudo systemctl restart elasticsearch
建议先重启 Elasticsearch,再重启 Filebeat,这样可以避免 Filebeat 启动时因 Elasticsearch 尚未就绪而产生连接错误。
4. 验证配置
验证过程并不复杂。查看 Elasticsearch 的日志文件,如果 Filebeat 成功通过 TLS 连接并发送数据,日志中通常会有连接成功的记录,或者不会出现明显的 SSL 错误信息。
sudo tail -f /var/log/elasticsearch/filebeat.log
你也可以直接在 Filebeat 端查看其日志:
sudo journalctl -u filebeat -f
如果一切正常,日志加密传输配置就算成功落地了。后续在生产环境中,建议定期更新证书(例如每半年或一年),同时将证书密码设置得足够复杂——安全防护永远不能松懈。
