Ubuntu 上安全运行 Filebeat 的实用清单
一 身份与权限最小化
- 创建专用系统用户并加入 adm 组,便于读取系统日志,同时避免以 root 运行:
sudo useradd --system --no-create-home --ingroup adm filebeat
sudo chown -R filebeat:adm /etc/filebeat /var/log/filebeat
- 通过 systemd 强制以非特权用户运行:
sudo systemctl edit filebeat
写入:
[Service]
User=filebeat
Group=adm
然后:sudo systemctl daemon-reload && sudo systemctl restart filebeat
- 严格管控文件与目录权限:
sudo chmod 600 /etc/filebeat/filebeat.yml
sudo chmod 700 /etc/filebeat/certs
sudo chmod 640 /var/log/filebeat/.log && sudo chown filebeat:adm /var/log/filebeat/.log
- 将明文密码移入 Filebeat keystore,避免硬编码:
sudo filebeat keystore create
sudo filebeat keystore add ES_PASSWORD
在 filebeat.yml 中使用:output.elasticsearch.password: “${ES_PASSWORD}”。
二 传输加密与身份认证
- 启用 TLS/SSL 加密传输(Elasticsearch 示例):
output.elasticsearch:
hosts: [“https://elasticsearch.example.com:9200”]
ssl.certificate_authorities: [“/etc/filebeat/certs/ca.crt”]
ssl.certificate: “/etc/filebeat/certs/client.crt”
ssl.key: “/etc/filebeat/certs/client.key”
ssl.verification_mode: certificate
证书可用 OpenSSL 生成并分发给客户端与服务端,生产环境建议使用有效 CA 或 Let’s Encrypt。
- 启用 X-Pack 安全 并使用专用账号:
Elasticsearch 端创建最小权限角色与用户(示例仅授予读取与监控所需权限),Filebeat 侧配置 basic_auth:
output.elasticsearch:
hosts: [“https://elasticsearch.example.com:9200”]
username: “filebeat_user”
password: “${ES_PASSWORD}”
如需双向 TLS(mTLS),在 Filebeat 配置客户端证书,在 ES 端配置对应信任链与客户端证书校验。
三 输入与采集最小化
- 仅启用必要的输入与模块,禁用未使用的模块(如 mysql、docker 等),减少攻击面与噪声数据。
- 明确采集路径与过滤规则,避免收集敏感信息:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/auth.log
- /var/log/syslog
exclude_lines: [“DEBUG”, “TRACE”]
ignore_older: 72h
- 如需采集受保护文件,确保 filebeat 用户具备相应读取权限,或通过权限下放与审计策略控制风险。
四 系统与网络安全
- 启用 seccomp 限制系统调用,遵循最小特权原则;在部分旧版本(如 7.10.2)遇到 glibc ≥ 2.35 缺少 rseq 导致的崩溃时,应优先升级到包含修复的版本(如 ≥7.17.2),而非长期关闭 seccomp。
- 使用 UFW 或云安全组限制访问:仅允许来自受控网段的 5044/TCP(Logstash)、9200/TCP(Elasticsearch) 等必要通信;必要时将采集器与后端分置不同网络/安全域,减少暴露面。
- 将 Filebeat 纳入 logrotate 与日志审计:
- 配置 /etc/logrotate.d/filebeat 定期轮转与压缩,保留合理天数;
- 启用 Filebeat 自身日志并限制权限:
logging.level: info
logging.to_files: true
logging.files:
path: /var/log/filebeat
name: filebeat
keepfiles: 7
permissions: 0640。
五 更新、配置审计与合规
- 保持 Filebeat 与依赖 的及时更新,及时获取安全补丁:
sudo apt-get update && sudo apt-get upgrade filebeat
- 对 /etc/filebeat/filebeat.yml 实施变更审计(如 Git 管理),保留历史与责任人;定期审查采集范围、认证凭据、TLS 证书有效期与防火墙规则。
- 建立运行监控与告警:持续观察 Filebeat 服务状态与日志,关注认证失败、连接异常、配置重载失败等安全事件,并结合 Elasticsearch/Kibana 的监控能力进行可视化与告警。