在 Debian 上,Filebeat 加密传输通常指两件事之一(或两者同时做):
下面以最常见、官方推荐的方式:使用 TLS 加密 Filebeat 到 Elasticsearch / Logstash 的传输为例说明。
sudo apt update
sudo apt install filebeat
通常由 Elasticsearch 生成:
/usr/share/elasticsearch/bin/elasticsearch-certutil ca
/usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
你会得到:
elastic-stack-ca.p12(CA)elasticsearch.p12(节点证书)将 CA 证书 复制到 Filebeat 所在机器:
scp elastic-stack-ca.p12 debian:/etc/filebeat/ca.p12
编辑 /etc/filebeat/filebeat.yml:
output.elasticsearch:
hosts: ["https://es-node1:9200"]
username: "filebeat_writer"
password: "your_password"
ssl:
enabled: true
certificate_authorities:
- /etc/filebeat/ca.p12
verification_mode: full
如果是
.crt而不是.p12,可写:ssl.certificate_authorities: ["/etc/filebeat/ca.crt"]
sudo systemctl restart filebeat
sudo systemctl enable filebeat
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:
enabled: true
certificate_authorities:
- /etc/filebeat/ca.crt
verification_mode: full
ssl.supported_protocols: [TLSv1.2, TLSv1.3]
ssl.certificate: "/etc/filebeat/filebeat.crt"
ssl.key: "/etc/filebeat/filebeat.key"
elastic 超级用户sudo filebeat test output
或抓包确认:
sudo tcpdump -i any port 9200
应看到 TLS 握手,而非明文 JSON。
❌ “Filebeat 可以加密日志文件本身”
→ 不推荐,日志通常在磁盘明文,重点是传输加密
❌ “SSL 和 TLS 不一样”
→ Filebeat 中 ssl.* 实际指 TLS
如果你能告诉我:
我可以给你一份可直接用的完整配置示例。