在Ubuntu系统上为Filebeat配置数据传输加密(SSL/TLS),虽然整体流程不算繁琐,但每个环节若配置有误,后续排查将十分困难。本文将详细拆解整个配置过程,每一步均提供具体命令与配置示例,方便您直接参考执行。

1. 生成SSL/TLS证书与密钥
首先需要创建SSL/TLS证书及对应的私钥。我们将使用系统自带的OpenSSL工具,这一标准工具链已预装在绝大多数Ubuntu发行版中。
生成自签名SSL证书
建议在系统中创建一个专用目录用于存放证书文件,随后依次执行以下命令生成私钥、证书签名请求(CSR)以及自签名证书:
# 创建目录
mkdir -p /etc/filebeat/ssl
# 生成私钥
openssl genrsa -out /etc/filebeat/ssl/filebeat.key 2048
# 生成证书签名请求 (CSR)
openssl req -new -key /etc/filebeat/ssl/filebeat.key -out /etc/filebeat/ssl/filebeat.csr -subj "/CN=filebeat/O=your_organization"
# 生成自签名证书(有效期365天)
openssl x509 -req -days 365 -in /etc/filebeat/ssl/filebeat.csr -signkey /etc/filebeat/ssl/filebeat.key -out /etc/filebeat/ssl/filebeat.crt
需要注意,-subj中的CN(通用名称)和O(组织名称)请根据实际环境修改,例如替换为服务器主机名或所在组织。
将证书与密钥部署至Elasticsearch服务器
将生成的filebeat.crt和filebeat.key文件复制到Elasticsearch服务器上。存放位置虽无严格限制,但建议放置于Elasticsearch的配置目录中以便统一管理。接下来,需要编辑Elasticsearch的主配置文件elasticsearch.yml,启用SSL/TLS相关项:
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
若您未使用p12格式证书库,而是采用上述步骤生成的crt和key文件,则需根据实际路径调整上述配置。官方更推荐使用p12格式统一管理证书,若不希望额外操作,可直接利用elasticsearch-certutil工具生成p12文件,流程更为简便。
2. 配置Filebeat
接下来进入Filebeat端,编辑其主配置文件filebeat.yml,在output段落中配置SSL/TLS参数:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
output.elasticsearch:
hosts: ["https://your_elasticsearch_host:9200"]
ssl.verification_mode: certificate
ssl.certificate_authorities: ["/etc/filebeat/ssl/filebeat.crt"]
ssl.certificate: "/etc/filebeat/ssl/filebeat.crt"
ssl.key: "/etc/filebeat/ssl/filebeat.key"
请注意以下几点关键事项:hosts中的Elasticsearch地址必须以https开头,否则SSL/TLS加密将无法生效;ssl.verification_mode设置为certificate表示仅验证证书的合法性而不校验主机名,若需更严格的安全策略,可改为full以同时校验主机名。
3. 重启Filebeat服务
完成配置修改后,需重启Filebeat服务以加载新配置文件:
sudo systemctl restart filebeat
若此前未设置开机自启动,建议同时执行sudo systemctl enable filebeat,确保系统重启后Filebeat自动启动。
4. 验证SSL/TLS加密连接
配置完成后务必验证连接是否成功建立。可使用curl命令进行测试:
curl -k --cacert /etc/filebeat/ssl/filebeat.crt \
--cert /etc/filebeat/ssl/filebeat.crt \
--key /etc/filebeat/ssl/filebeat.key \
https://your_elasticsearch_host:9200
如果Elasticsearch返回正常响应,表明SSL/TLS连接已成功建立。若遇到证书错误或连接失败,常见原因包括证书路径配置错误或Elasticsearch端的SSL设置不匹配。此时应首先检查Elasticsearch的日志文件(通常位于/var/log/elasticsearch/),查找相关错误信息进行排查。
通过上述步骤,即可实现Filebeat与Elasticsearch之间的加密数据传输。整个流程并不复杂,但证书生成、文件路径配置及服务重启顺序等环节较易出错,建议每完成一步即进行验证,避免事后大量排查工作。
