在Ubuntu上用Filebeat传输日志,数据加密是绕不开的安全底线。下面是一套经过验证的SSL/TLS配置流程,从安装到验证全覆盖,照着做就行。
1. 安装Filebeat
如果还没装Filebeat,直接跑下面两行命令搞定:
sudo apt-get update
sudo apt-get install filebeat
耐心等几分钟,安装完成后就可以进入配置环节了。
2. 配置Filebeat
核心配置文件是/etc/filebeat/filebeat.yml,我们需要在里面加入SSL/TLS相关的参数。但在此之前,先得准备好证书和密钥。
2.1 生成SSL证书和密钥
手头没有证书?用OpenSSL生成一个自签名证书,简单高效:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/filebeat.key -out /etc/ssl/certs/filebeat.crt
这条命令会生成一个有效期365天的自签名证书,生产环境建议换成CA签发的正式证书,但测试阶段用这个完全够用。
2.2 配置Filebeat使用SSL/TLS
打开/etc/filebeat/filebeat.yml,把下面这段配置填进去:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
ssl.enabled: true
ssl.certificate_authorities: ["/etc/ssl/certs/filebeat.crt"]
ssl.certificate: "/etc/ssl/certs/filebeat.crt"
ssl.key: "/etc/ssl/private/filebeat.key"
output.elasticsearch:
hosts: ["https://your_elasticsearch_host:9200"]
ssl.enabled: true
ssl.certificate_authorities: ["/etc/ssl/certs/filebeat.crt"]
ssl.certificate: "/etc/ssl/certs/filebeat.crt"
ssl.key: "/etc/ssl/private/filebeat.key"
注意把your_elasticsearch_host换成你的Elasticsearch服务器地址。同时,两端的SSL配置必须完全一致——证书路径、密钥路径都要对上,否则会出现握手失败。
3. 重启Filebeat
修改完配置后,重启服务让改动生效:
sudo systemctl restart filebeat
没有任何报错信息?那说明配置已经成功加载了。
4. 验证配置
最直接的验证方式是看日志:
sudo tail -f /var/log/filebeat/filebeat
如果日志中间出现了类似“Connected to Elasticsearch”或“SSL handshake completed”的提示,恭喜你,加密传输已经跑起来了。
注意事项
- Elasticsearch那边也必须开启SSL/TLS,证书和Filebeat这边要匹配,否则连接会被拒绝。
- 自签名证书会导致Kibana等客户端报“不受信任的证书”,需要在客户端手动添加信任。
- 生产环境请使用由正规CA签发的证书,避免因证书问题导致数据泄露或服务中断。
以上步骤走一遍,Ubuntu上的Filebeat日志传输就能实现端到端加密。安全无小事,SSL/TLS配置值得花时间仔细核对。
