在 CentOS 上通过 Filebeat 加密数据,通常是指 三种场景之一(或组合):
✅ 传输加密(Filebeat → Elasticsearch / Logstash)
✅ 文件内容加密(本地日志文件)
✅ 磁盘 / 文件系统加密(操作系统层)
下面按 最常见、最推荐 的方式说明,基本可以覆盖 90% 的企业需求。
目标:防止日志在 Filebeat → Elasticsearch / Logstash 过程中被窃听或篡改。
如果你使用的是 Elasticsearch 安全功能(TLS 已开启):
# 查看证书
ls /etc/elasticsearch/certs/
常见文件:
ca.crtelasticsearch.crtelasticsearch.key编辑:
vim /etc/filebeat/filebeat.yml
示例(ES 作为输出):
output.elasticsearch:
hosts: ["https://es-node1:9200"]
username: "filebeat"
password: "密码"
ssl:
enabled: true
certificate_authorities:
- "/etc/filebeat/certs/ca.crt"
复制 CA 证书到 Filebeat 主机:
scp root@es-node:/etc/elasticsearch/certs/ca.crt /etc/filebeat/certs/
chmod 600 /etc/filebeat/certs/ca.crt
重启:
systemctl restart filebeat
input {
beats {
port => 5044
ssl => true
ssl_certificate => "/etc/logstash/certs/logstash.crt"
ssl_key => "/etc/logstash/certs/logstash.key"
ssl_ca => "/etc/logstash/certs/ca.crt"
}
}
output.logstash:
hosts: ["logstash:5044"]
ssl:
enabled: true
certificate_authorities:
- "/etc/filebeat/certs/ca.crt"
| 场景 | 推荐方案 |
|---|---|
| 防止磁盘被窃取 | LUKS / 磁盘加密 |
| 防止误操作 | 文件权限 600 |
| 防止敏感字段泄露 | Filebeat 脱敏(processors) |
processors:
- dissect:
tokenizer: "%{message}"
- script:
lang: javascript
source: >
function process(event) {
var msg = event.Get("message");
msg = msg.replace(/\d{11}/g, "***********");
event.Put("message", msg);
}
lsblk
cryptsetup luksFormat /dev/sdb1
cryptsetup open /dev/sdb1 secure_log
mkfs.xfs /dev/mapper/secure_log
mount /dev/mapper/secure_log /var/log
✅ 即使硬盘被拿走,数据也无法读取
firewall-cmd --add-port=9200/tcp --permanent
firewall-cmd --reload
filebeat test output
或:
curl -X GET "https://es-node:9200" -u filebeat:密码 --cacert /etc/filebeat/certs/ca.crt
✅ 生产环境必做
✅ 可选增强
如果你愿意,可以告诉我:
我可以给你 一份可直接用的完整配置文件。