温馨提示×

如何确保CentOS Filebeat日志安全

小樊
35
2025-12-21 11:46:57
栏目: 智能运维

CentOS上保障Filebeat日志安全的实用清单

一 身份与访问控制

  • 以最小权限运行Filebeat:创建专用系统用户(如filebeat),禁止以root运行;仅授予其对日志目录与自身配置/密钥的读权限。
  • 保护配置文件与密钥:设置严格的文件权限与属主,例如:
    • /etc/filebeat/filebeat.yml:600,属主root:filebeat
    • /etc/filebeat/certs/:750,私钥(如client.key600,证书(如ca.crt/client.crt644
  • 启用Elasticsearch安全特性(如X-Pack Security):为Filebeat创建最小权限的专用用户,仅授予写入目标索引与必要监控的权限;在Kibana通过RBAC按索引前缀隔离各业务线访问。
  • 网络最小暴露:仅开放必要端口(如到Logstash 5044/TCP 或到Elasticsearch 9200/TCP),并限制来源网段。

二 传输加密与认证

  • 到Elasticsearch直连场景:启用TLS/HTTPS,配置CA与客户端证书,开启服务端与客户端证书校验。示例要点:
    • output.elasticsearch.hosts 使用 https://
    • 配置 ssl.certificate_authoritiesssl.certificatessl.key
    • 建议设置 ssl.verification_mode: certificate 或更高
  • 经Logstash中转场景:在Logstash的Beats输入启用SSL,并配置服务器证书与CA,要求客户端提供证书实现双向认证(mTLS)
    • input.beats 中启用 ssl => true
    • 设置 ssl_certificate_authorities(信任Filebeat证书)、ssl_certificate/ssl_key(服务器证书与密钥)
    • 设置 ssl_verify_mode: force_peer(强制校验客户端证书)
  • 证书管理:优先使用受信任CA签发证书;自签名证书需在所有端正确部署信任链;定期轮换证书与密钥。

三 系统与网络安全配置

  • 防火墙:仅放行必要端口(示例)
    • firewall-cmd --permanent --add-port=5044/tcp(Logstash)
    • firewall-cmd --permanent --add-port=9200/tcp(Elasticsearch)
    • firewall-cmd --reload
  • SELinux:优先采用“最小改动”原则,使用semanage fcontext/restorecon为日志路径与证书目录设置合适类型,而非直接关闭SELinux。
  • 网络隔离:将采集侧与存储/可视化侧置于受控网段/VPC,通过安全组或ACL限制来源IP。

四 日志与运行监控

  • 启用Filebeat自身日志:在filebeat.yml中配置logging.level: info(或debug用于排障),输出至**/var/log/filebeat/filebeat.log**;设置日志轮转(如logrotate)避免磁盘被占满。
  • 运行监控与自检:
    • 使用 systemd 监控服务状态:systemctl status/start/enable filebeat
    • 定期查看服务日志与连接状态,确认无异常重启与认证失败告警
  • 指标与告警:开启xpack.monitoring(或Metricbeat采集Filebeat指标),对连接失败、TLS握手失败、丢事件等设定阈值告警。

五 配置与维护最佳实践

  • 配置最小化:仅启用必要的inputs/modules,禁用不需要的模块与处理器,减少攻击面。
  • 密钥与凭据治理:私钥文件600且仅属主可读;避免在配置中明文写入凭据,优先使用密钥库/凭据管理或在受控目录部署。
  • 持续更新与补丁:及时升级Filebeat与依赖组件,修复已知漏洞。
  • 审计与复盘:定期审计filebeat.yml变更、证书有效期、用户权限与访问日志,形成变更记录与回滚预案。

附 关键配置示例

  • 直连Elasticsearch(TLS + 认证)
    • filebeat.inputs:
      • type: log enabled: true paths:
        • /var/log/*.log
    • output.elasticsearch: hosts: [“https://es.example.com:9200”] ssl.enabled: true ssl.verification_mode: certificate ssl.certificate_authorities: [“/etc/filebeat/certs/ca.crt”] ssl.certificate: “/etc/filebeat/certs/client.crt” ssl.key: “/etc/filebeat/certs/client.key” username: “filebeat_writer” password: “<strong_password>”
    • xpack.monitoring.enabled: true
    • xpack.monitoring.elasticsearch.hosts: [“https://es.example.com:9200”]
  • 经Logstash(TLS + mTLS)
    • filebeat.inputs:
      • type: log enabled: true paths:
        • /var/log/*.log
    • output.logstash: hosts: [“logstash.example.com:5044”] ssl.enabled: true ssl.certificate_authorities: [“/etc/filebeat/certs/logstash-ca.crt”] ssl.certificate: “/etc/filebeat/certs/filebeat.crt” ssl.key: “/etc/filebeat/certs/filebeat.key”
  • 文件权限示例
    • chown -R root:filebeat /etc/filebeat
    • chmod 600 /etc/filebeat/filebeat.yml
    • chmod 750 /etc/filebeat/certs
    • chmod 600 /etc/filebeat/certs/*.key
    • chmod 644 /etc/filebeat/certs/*.crt

0