在 Ubuntu 系统上为 Filebeat 配置数据加密,核心依赖 TLS/SSL 协议。这套方案既能确保传输中的数据不被窃听,也能通过可选的客户端/服务器双向认证,让通信双方的身份都得到严格验证。下面详细介绍操作步骤与关键要点。
一、传输层加密配置(基础步骤)
传输层加密是 Filebeat 与 Elasticsearch(或 Logstash)之间数据安全的基石——简单来说,就是利用 TLS/SSL 协议将数据完整封装后再发送,防止中途被篡改或泄露。
1. 安装 Filebeat
如果尚未安装 Filebeat,可直接通过 Ubuntu 官方仓库快速完成:
sudo apt-get update
sudo apt-get install filebeat
2. 生成 SSL 证书(自签名或 CA 签名)
证书的作用是验证身份并加密通信。生产环境建议使用 CA(证书颁发机构)签发的证书,可靠性更高。以下是完整的生成流程:
- 创建证书目录:
sudo mkdir -p /etc/filebeat/certs - 生成 CA 私钥与证书(用于签署后续所有证书):
sudo openssl req -x509 -nodes -days 3650 -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/client.key \ -out /etc/filebeat/certs/client.csr -subj "/C=US/ST=YourState/L=YourCity/O=YourOrganization/CN=filebeat_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 3650 - (可选)为 Elasticsearch 等目标服务生成服务器证书:步骤类似,注意
Common Name (CN)必须与服务端的 IP 或域名保持一致。
3. 配置 Filebeat 输出模块
编辑 Filebeat 的主配置文件 /etc/filebeat/filebeat.yml,在 output 部分(例如 Elasticsearch 或 Logstash)添加 SSL 相关参数:
output.elasticsearch:
hosts: ["https://your_elasticsearch_host:9200"]
ssl.verification_mode: certificate
ssl.certificate_authorities: ["/etc/filebeat/certs/ca.crt"]
ssl.certificate: "/etc/filebeat/certs/client.crt"
ssl.key: "/etc/filebeat/certs/client.key"
- 参数说明:
-ssl.verification_mode:设为certificate表示仅验证证书有效性,strict则会更严格地校验主机名是否匹配;
-ssl.certificate_authorities:指向 CA 证书,用于验证目标服务端的身份;
-ssl.certificate/ssl.key:Filebeat 自身的客户端证书和私钥,用于向服务端证明“我是合法的”。
4. 配置目标服务(以 Elasticsearch 为例)
目标服务也必须启用 SSL,才能与 Filebeat 正常握手。在 /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.keystore.path: elastic-certificates.p12
xpack.security.http.ssl.truststore.path: elastic-certificates.p12
简单来说,Elasticsearch 需要分别为 HTTP 层和 Transport 层启用 SSL,并正确配置自身的证书仓库(keystore)与信任仓库(truststore)。
5. 设置文件权限并重启服务
- 限制证书和配置文件的访问权限,防止无关用户窥探:
sudo chown -R root:filebeat /etc/filebeat/certs sudo chmod 640 /etc/filebeat/certs/* sudo chmod 644 /etc/filebeat/filebeat.yml - 重启 Filebeat 使配置生效:
sudo systemctl restart filebeat
6. 验证加密连接
查看 Filebeat 的日志文件 /var/log/filebeat/filebeat,确认连接状态:
sudo tail -f /var/log/filebeat/filebeat
如果看到类似 Successfully connected to Elasticsearch over SSL 的信息,说明加密传输已经成功建立。
二、可选:双向 TLS 认证(mTLS)
如果对安全性有更高要求——比如只允许持有有效证书的 Filebeat 连接到目标服务——可以配置双向 TLS 认证。实现起来并不复杂:
- 在 Elasticsearch 的配置中,将
xpack.security.transport.ssl.verification_mode改为strict,并设置要求客户端提供证书; - Filebeat 这边保持原有的 SSL 配置不变(因为已包含客户端证书),服务端会自动对其进行验证。
这样就形成了一个“互验”闭环:Filebeat 验证 Elasticsearch 的服务器证书,Elasticsearch 反过来验证 Filebeat 的客户端证书,确保双方身份都真实可信。
三、其他安全增强措施
传输层加密固然重要,但以下配套措施能让整体防护更全面:
- 使用非特权用户运行 Filebeat:切勿用 root 账户运行,以防漏洞被利用时造成更大风险;
- 严格配置文件权限:
filebeat.yml和证书文件仅允许必要用户(如 filebeat 用户)读写; - 定期更新证书:建议将证书有效期设为一年以内,避免过期导致连接中断;
- 监控与审计:利用 Filebeat 自带的监控功能或第三方工具,持续关注日志传输状态,发现异常及时处理。
按照上述步骤操作,你就能在 Ubuntu 上为 Filebeat 部署完整的传输加密方案,确保日志数据在传输过程中的机密性与完整性万无一失。
