Ubuntu 上 Filebeat 数据传输安全加固指南
一 加密传输配置
- 使用 TLS 对链路进行加密,优先启用双向认证(mTLS),确保客户端与服务端相互校验身份,防止中间人攻击与数据泄露。
- 证书建议由私有 CA 签发,证书中包含明确的 CN/SAN(主机名或 IP),避免使用通用或过期证书。
- 典型配置示例(按目标输出选择其一或组合):
- 输出到 Logstash(beats 输入,推荐 mTLS)
- Logstash 侧(input.beats)
- ssl: true
- ssl_certificate: /path/logstash.crt
- ssl_key: /path/logstash.key
- ssl_certificate_authorities: /path/filebeat.crt
- ssl_verify_mode: force_peer
- Filebeat 侧(output.logstash)
- hosts: [“logstash.example.com:5044”]
- ssl.certificate_authorities: [“/path/logstash.crt”]
- ssl.certificate: “/path/filebeat.crt”
- ssl.key: “/path/filebeat.key”
- 输出到 Elasticsearch(HTTPS)
- Elasticsearch 侧启用 xpack.security.http.ssl.enabled: true,并配置 keystore/truststore(可用 elasticsearch-certutil 生成 PKCS#12 证书)。
- Filebeat 侧(output.elasticsearch)
- hosts: [“https://es.example.com:9200”]
- protocol: https
- ssl.verification_mode: certificate(生产建议)/ full
- ssl.certificate_authorities: [“/path/ca.crt”]
- 如需客户端证书:补充 ssl.certificate / ssl.key
- 证书生成要点(OpenSSL,示例)
- 生成 CA:openssl req -x509 -newkey rsa:4096 -keyout ca.key -out ca.crt -days 3650 -nodes -subj “/CN=YourCA”
- 生成服务端证书(ES 或 Logstash):openssl req -newkey rsa:4096 -keyout server.key -out server.csr -nodes -subj “/CN=es.example.com”
- 签发:openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650
- 生成客户端证书(Filebeat):openssl req -newkey rsa:4096 -keyout client.key -out client.csr -nodes -subj “/CN=filebeat01”
- 签发:openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 3650
- 验证命令
- 查看服务状态:sudo systemctl status filebeat
- 实时看日志:sudo journalctl -u filebeat -f
- 连接性测试:filebeat test output(可快速验证到 ES/Logstash 的 TLS 与认证是否可用)。
二 认证与访问控制
- Elasticsearch 启用安全功能(X-Pack Security):开启 xpack.security.enabled: true,为 HTTP 层 与 传输层 都启用 TLS,并使用基于角色的访问控制(如内置角色 filebeat_system 或自定义最小权限角色)。
- Filebeat 到 ES 的认证方式
- 基本认证:在 output.elasticsearch 中配置 username / password。
- API Key:在 ES 创建 API Key 并在 Filebeat 使用(推荐,便于密钥轮换与审计)。
- Logstash 侧认证
- 若 Logstash 前接 Elasticsearch 输出插件,同样应启用 HTTPS + 认证(用户名/密码或 API Key)。
- 最小权限原则
- 为 Filebeat 分配仅能写入目标索引、创建/写入模板与读取监控所需的最小角色,避免使用超级用户。
三 网络与系统加固
- 网络与端口
- 仅开放必要端口(如 5044/9200/9300),使用 UFW/iptables/firewalld 限制来源 IP,禁止公网直连采集端口。
- 在 VPC/VLAN/安全组 层面做网络隔离,采集网与存储/管理网分离。
- 运行身份与文件权限
- 以非 root用户运行 Filebeat(如创建专用系统用户),配置文件与证书权限最小化(仅 Filebeat 可读)。
- 证书与密钥存储在受控目录(如 /etc/filebeat/certs),权限 600/644 分级控制。
- 采集范围与内容
- 仅采集必要日志,避免包含敏感信息;必要时在 processors 中做 drop_fields / anonymize 等脱敏处理。
四 运维与审计
- 证书与密钥生命周期
- 设置证书到期提醒(如有效期 365–730 天),定期轮换;轮换时先部署新证书到服务端信任库,再滚动更新客户端并重启 Filebeat。
- 更新与补丁
- 及时更新 Filebeat/Elasticsearch/Logstash 与依赖组件,修复已知漏洞。
- 监控与告警
- 监控 Filebeat 的 运行状态、连接失败、TLS 握手失败、吞吐异常 等,结合日志与指标设置告警。
- 审计与合规
- 启用 审计日志(ES 审计或外部 SIEM),记录索引创建、写入、模板变更与认证失败事件,定期复盘。
五 快速检查清单
| 检查项 |
期望状态/做法 |
| 传输加密 |
到 Logstash/ES 的链路均启用 TLS;生产建议 mTLS |
| 证书管理 |
使用私有 CA;证书包含 CN/SAN;设置到期提醒与轮换流程 |
| 服务端认证 |
ES 开启 HTTPS + 认证(用户/密码或 API Key);Logstash 侧校验客户端证书 |
| 网络防护 |
仅放通 5044/9200/9300;来源 IP 白名单;采集/存储网隔离 |
| 运行身份 |
非 root 运行;证书 600/644 权限;配置与日志目录受控 |
| 采集最小化 |
仅采集必要日志;必要时脱敏;避免记录凭据/密钥 |
| 监控告警 |
监控 连接/握手失败、吞吐异常;异常即告警 |
| 审计合规 |
启用 审计日志;定期复盘与安全评估 |
以上配置与做法可显著提升 Ubuntu 上 Filebeat 数据传输的机密性、完整性与可审计性,并降低被窃听、篡改与滥用风险。