Filebeat保障日志安全的实用方案
一 传输加密与身份认证
output.logstash:
hosts: ["logstash.example.com:5044"]
ssl.certificate_authorities: ["/etc/filebeat/certs/ca.crt"]
示例(输出到 Elasticsearch,含双向认证):output.elasticsearch:
hosts: ["https://es.example.com:9200"]
username: "filebeat_writer"
password: "StrongPass!23"
ssl.enabled: true
ssl.certificate_authorities: ["/etc/filebeat/certs/ca.crt"]
ssl.certificate: "/etc/filebeat/certs/filebeat.crt"
ssl.key: "/etc/filebeat/certs/filebeat.key"
ssl.verification_mode: strict
证书建议由私有 CA 签发,并在 Logstash/ES 端开启服务端校验。若使用主机名或 IP 直连,证书需包含相应的 SAN(Subject Alternative Name),否则会出现证书校验失败(如“doesn’t contain any IP SANs”)。二 主机与文件安全
sudo useradd -r -s /sbin/nologin filebeat
sudo chown -R filebeat:filebeat /etc/filebeat /var/log/filebeat
sudo -u filebeat /usr/share/filebeat/bin/filebeat -e
sudo chmod 640 /etc/filebeat/filebeat.yml
sudo chmod 750 /etc/filebeat /var/log/filebeat
sudo chown -R filebeat:filebeat /etc/filebeat /var/log/filebeat
三 网络隔离与访问控制
# UFW 示例(仅本地访问 ES)
sudo ufw allow from 127.0.0.1 to any port 9200
sudo ufw enable
# firewalld 示例(开放 5044)
sudo firewall-cmd --permanent --add-port=5044/tcp
sudo firewall-cmd --reload
四 最小权限与功能治理
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
# 例如关闭不需要的 system 模块
# - module: system
# enabled: false
五 持续更新与可观测性
# Debian/Ubuntu
sudo apt update && sudo apt upgrade filebeat
# RHEL/CentOS
sudo yum update filebeat
# 或使用 dnf
sudo dnf upgrade filebeat
logging.level: info
logging.to_files: true
logging.files:
path: /var/log/filebeat
name: filebeat
keepfiles: 7
permissions: 0640