Ubuntu 上保障 Filebeat 数据安全的可落地方案
一 传输加密与身份认证
- 启用 TLS/SSL 对传输通道进行加密,优先采用 双向认证(mTLS):为 Elasticsearch/Logstash 与 Filebeat 分别准备证书,服务端开启证书校验,客户端提供证书与私钥,防止中间人攻击与未授权上报。示例要点:
- Logstash input(端口 5044)开启 SSL,设置 ssl_verify_mode: force_peer,并指定信任的 CA 与服务器证书/私钥。
- Filebeat 输出到 Logstash 时配置 ssl.certificate_authorities、ssl.certificate、ssl.key;输出到 Elasticsearch 时使用 https:// 并提供 CA/客户端证书/私钥。
- 证书建议包含 SAN(IP/DNS),避免主机名不匹配导致握手失败。
- 若使用域名的 Let’s Encrypt 证书,可直接挂载 fullchain.pem 与 privkey.pem 到 Filebeat 证书目录并配置路径。
二 身份与访问控制
- 在 Elasticsearch 侧启用 安全功能(X-Pack),为 Filebeat 创建专用用户并授予最小权限(如仅允许写入目标索引、使用 API Key 或 基本认证),避免使用内置高权限账号。
- 对输出目标启用 认证与授权,并在 Filebeat 配置中填写 username/password 或 API Key,确保只有受控实例能写入。
- 在主机与网络层面进行最小暴露:仅开放必要端口(如 5044 到 Logstash,或 9200 到 Elasticsearch),使用 UFW/iptables 限制来源网段,必要时将采集器与后端置于 隔离网络/VPC。
三 运行与文件权限
- 以非 root 用户运行 Filebeat(如系统自带的 filebeat 用户或自建低权用户),并对证书、配置、日志目录设置严格权限:证书与密钥仅对 Filebeat 可读,配置 0644、日志 0640,属主属组指向运行用户。
- 仅启用必要的 inputs/modules,禁用不需要的模块与处理器,减少攻击面与资源占用。
- 启用 持久化队列(Persistent Queue) 提升可靠性:在重启或后端短暂不可用时降低数据丢失风险(示例:queue.type: persisted,queue.max_bytes: 1GB)。
四 运维与监控
- 保持 Filebeat 与 Elastic Stack 的及时更新,及时修补安全漏洞;结合 systemd 或进程监控对服务状态与健康度进行持续观测。
- 集中采集与审计 Filebeat 自身日志(如 /var/log/filebeat/filebeat),对异常连接、证书校验失败、频繁重启等进行告警;按需配置 logrotate 做日志轮转与留存控制。
五 最小配置示例
- 场景:Filebeat 通过 TLS 将日志发送到 Logstash(5044),采用双向认证。
- 生成证书(示例,生产请使用受控 CA 或 Let’s Encrypt)
- 创建 CA 与服务器证书(Logstash 端)
- mkdir -p /etc/filebeat/certs
- openssl req -x509 -newkey rsa:4096 -keyout /etc/filebeat/certs/ca.key -out /etc/filebeat/certs/ca.crt -days 3650 -nodes
- openssl req -newkey rsa:2048 -keyout /etc/filebeat/certs/logstash.key -out /etc/filebeat/certs/logstash.csr -nodes -subj “/CN=192.168.1.127”
- openssl x509 -req -in /etc/filebeat/certs/logstash.csr -CA /etc/filebeat/certs/ca.crt -CAkey /etc/filebeat/certs/ca.key -CAcreateserial -out /etc/filebeat/certs/logstash.crt -days 3650
- 生成客户端证书(Filebeat 端)
- openssl req -newkey rsa:2048 -keyout /etc/filebeat/certs/filebeat.key -out /etc/filebeat/certs/filebeat.csr -nodes -subj “/CN=192.168.1.128”
- openssl x509 -req -in /etc/filebeat/certs/filebeat.csr -CA /etc/filebeat/certs/ca.crt -CAkey /etc/filebeat/certs/ca.key -CAcreateserial -out /etc/filebeat/certs/filebeat.crt -days 3650
- Logstash 配置片段(input)
- input { beats { port => 5044 ssl => true ssl_certificate_authorities => [“/etc/filebeat/certs/filebeat.crt”] ssl_certificate => “/etc/filebeat/certs/logstash.crt” ssl_key => “/etc/filebeat/certs/logstash.key” ssl_verify_mode => “force_peer” } }
- Filebeat 配置片段(/etc/filebeat/filebeat.yml)
- filebeat.inputs:
- type: filestream
enabled: true
paths: [“/var/log/*.log”]
- output.logstash:
- hosts: [“192.168.1.127:5044”]
ssl.certificate_authorities: [“/etc/filebeat/certs/ca.crt”]
ssl.certificate: “/etc/filebeat/certs/filebeat.crt”
ssl.key: “/etc/filebeat/certs/filebeat.key”
- 权限与生效
- chown -R filebeat:filebeat /etc/filebeat /var/log/filebeat
- chmod 600 /etc/filebeat/certs/*.key
- systemctl restart filebeat && systemctl status filebeat
- 提示:若输出到 Elasticsearch,将 output 改为 https:// 并提供 CA/客户端证书/私钥;证书建议包含 SAN;生产请使用受控 CA 或 Let’s Encrypt 证书并定期轮换。