在CentOS系统上配置Filebeat日志加密,本质上就是为日志传输通道添加强加密保护。数据在网络上裸奔的风险有多大,相信无需过多强调——无论出于合规要求还是内部安全策略,加密传输都是底线。下面直接进入实操环节,梳理一套经过验证的完整配置流程。
1. 安装Filebeat
前提是CentOS系统已经安装好Filebeat。如果没有,一条命令即可完成:
sudo yum install filebeat
安装完成后,先不要急着启动,后续的配置才是核心。
2. 配置Filebeat
核心配置文件为 /etc/filebeat/filebeat.yml。打开它,你需要定义Filebeat采集哪些日志、发送到何处,以及最关键的部分——如何启用SSL/TLS加密。以下是一个典型的生产环境配置示例:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
output.elasticsearch:
hosts: ["your_elasticsearch_host:9200"]
ssl.enabled: true
ssl.certificate_authorities: ["/etc/filebeat/certs/ca.crt"]
ssl.certificate: "/etc/filebeat/certs/client.crt"
ssl.key: "/etc/filebeat/certs/client.key"
setup.template.enabled: false
这里的重点:ssl.enabled: true 表示开启加密传输,后面三个路径分别指定CA证书、客户端证书和私钥文件。如果缺少其中任何一个,SSL握手阶段就会直接失败。
3. 生成SSL证书
要启用SSL加密,必须拥有证书。可以使用OpenSSL快速生成一套自签名证书,适用于测试或内部环境。生产环境建议使用受信任的CA签发的证书,但原理相同。以下是生成步骤:
# 创建证书存放目录
sudo mkdir -p /etc/filebeat/certs
# 生成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"
# 生成客户端证书签名请求
sudo openssl req -newkey rsa:2048 -nodes \
-keyout /etc/filebeat/certs/client.key \
-out /etc/filebeat/certs/client.csr \
-subj "/C=US/ST=YourState/L=YourCity/O=YourOrganization/CN=client"
# 使用CA签发客户端证书
sudo openssl x509 -req -in /etc/filebeat/certs/client.csr \
-CA /etc/filebeat/certs/ca.crt \
-CAkey /etc/filebeat/certs/ca.key \
-CAcreateserial -out /etc/filebeat/certs/client.crt -days 365
请将 -subj 中的国家、州、城市、组织等信息替换为实际值。生成的证书有效期默认设为一年,记得在到期前及时更新。
4. 配置Elasticsearch
仅Filebeat一端配置好还不够,Elasticsearch同样需要开启SSL。编辑 /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
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.certificate: /etc/elasticsearch/certs/http.crt
xpack.security.http.ssl.key: /etc/elasticsearch/certs/http.key
这里涉及两个层面的SSL:节点间传输层加密,以及HTTP API层面的加密。Filebeat通过HTTP接口发送数据,因此主要关注 xpack.security.http.ssl.* 部分。请确保证书和密钥的路径实际存在,且文件权限正确。
5. 重启服务
所有配置修改完成后,必须重启Filebeat和Elasticsearch才能生效:
sudo systemctl restart filebeat
sudo systemctl restart elasticsearch
如果Elasticsearch以集群模式运行,建议采用滚动重启方式,避免中断服务。重启后可通过系统日志确认服务是否正常启动。
6. 验证配置
最后一步,也是最让人安心的一步——验证加密是否真正生效。使用以下命令实时跟踪Filebeat日志:
sudo journalctl -u filebeat -f
观察输出中是否出现 TLS handshake successful 或类似提示。如果没有报错,且日志能正常发送到Elasticsearch,说明加密通道已成功建立。也可以尝试抓包检查,确认数据包内容不可读。
以上是从零开始配置Filebeat日志加密的完整步骤。生产环境中,建议使用权威CA签发的证书,并将私钥妥善保管。加密只是安全体系的一环,配合访问控制、审计日志等策略才能形成完整防护。如果在配置过程中遇到证书验证失败、连接超时等问题,可以重点检查证书路径、文件权限以及两端SSL配置的一致性。
