在 Debian 上,Filebeat 加密传输通常有三种常见场景,下面按最常用、最推荐到可选方案给你讲清楚,并附配置示例。
编辑配置文件:
sudo vim /etc/filebeat/filebeat.yml
示例:
output.elasticsearch:
hosts: ["https://es-node1:9200"]
username: "filebeat_writer"
password: "your_password"
ssl.certificate_authorities: ["/etc/filebeat/certs/ca.crt"]
ssl.certificate: "/etc/filebeat/certs/filebeat.crt"
ssl.key: "/etc/filebeat/certs/filebeat.key"
如果是 Elasticsearch 自签证书:
cp ca.crt /etc/filebeat/certs/
重启:
sudo systemctl restart filebeat
✅ 此时 传输层已加密(TLS)
input {
beats {
port => 5044
ssl => true
ssl_certificate => "/etc/logstash/certs/logstash.crt"
ssl_key => "/etc/logstash/certs/logstash.key"
ssl_certificate_authorities => ["/etc/logstash/certs/ca.crt"]
}
}
output.logstash:
hosts: ["logstash:5044"]
ssl.certificate_authorities: ["/etc/filebeat/certs/ca.crt"]
ssl.certificate: "/etc/filebeat/certs/filebeat.crt"
ssl.key: "/etc/filebeat/certs/filebeat.key"
重启:
sudo systemctl restart filebeat
如果你 不能改 ES / Logstash,可以用:
processors 做字段加密(AES)⚠️ 一般不推荐,复杂度高
sudo tcpdump -i any port 9200
若看到乱码(TLS)→ ✅ 已加密
sudo filebeat test output
❌ x509: certificate signed by unknown authority
→ CA 证书路径错误
❌ connection refused
→ ES / Logstash 未开 TLS
❌ 明文端口(http)
→ 一定要用 https 或 ssl => true
| 场景 | 推荐方式 |
|---|---|
| ES | TLS(HTTPS) |
| Logstash | Beats SSL |
| 云环境 | 托管 TLS |
如果你愿意,可以告诉我:
我可以给你 完整可复制的配置。