如何配置Filebeat安全地传输日志
导读:配置 Filebeat 安全传输日志 一 安全原则与总体架构 启用传输加密:优先使用 TLS 1.2+ 对客户端与服务端之间的通信进行加密,避免明文传输。 强身份认证:对服务端进行 CA 证书校验,必要时启用 双向 TLS(mTLS);对...
配置 Filebeat 安全传输日志
一 安全原则与总体架构
- 启用传输加密:优先使用 TLS 1.2+ 对客户端与服务端之间的通信进行加密,避免明文传输。
- 强身份认证:对服务端进行 CA 证书校验,必要时启用 双向 TLS(mTLS);对 Elasticsearch 输出同时配置 用户名/密码或 API Key。
- 最小权限:为 Filebeat 创建 最小权限角色(仅允许写入目标索引、创建/写入 ILM 等必要操作)。
- 机密保护:证书、密钥、凭据使用 文件权限 0600,并通过 Vault/KMS/环境变量 管理,避免硬编码。
- 网络与系统加固:仅开放必要端口(如 5044/9200),配合 防火墙/安全组 与 主机加固。
二 证书与密钥准备
- 推荐自建 私有 CA,为服务端签发证书,并为需要双向认证的客户端签发客户端证书。
- 示例(OpenSSL,生成 CA 与服务器/客户端证书):
# 1) 生成 CA openssl req -x509 -newkey rsa:2048 -keyout ca.key -out ca.crt -days 3650 -nodes -subj "/CN=MyRootCA" # 2) 生成服务器证书(供 ES 或 Logstash 使用) openssl req -newkey rsa:2048 -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 365 # 3) 生成客户端证书(供 Filebeat 使用,可选 mTLS) openssl req -newkey rsa:2048 -keyout client.key -out client.csr -nodes -subj "/CN=filebeat-client" openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 365 # 4) 校验 openssl x509 -in server.crt -noout -text - 将证书与密钥分发到目标主机,建议目录:/etc/filebeat/certs/,权限 0600,属主 root:filebeat。
三 配置 Filebeat 输出加密
- 直连 Elasticsearch(HTTPS + 基本认证 + 证书校验)
filebeat.inputs: - type: log enabled: true paths: - /var/log/*.log output.elasticsearch: hosts: ["https://es.example.com:9200"] username: "filebeat_writer" password: "${ FILEBEAT_PWD} " # 推荐从环境变量读取 ssl.enabled: true ssl.verification_mode: certificate ssl.certificate_authorities: ["/etc/filebeat/certs/ca.crt"] # 如需 mTLS,取消下行注释 # ssl.certificate: "/etc/filebeat/certs/client.crt" # ssl.key: "/etc/filebeat/certs/client.key" - 经由 Logstash(Beats 输入启用 TLS)
# filebeat.yml output.logstash: hosts: ["logstash.example.com:5044"] ssl.enabled: true ssl.verification_mode: certificate ssl.certificate_authorities: ["/etc/filebeat/certs/ca.crt"] # 如需 mTLS,取消下行注释 # ssl.certificate: "/etc/filebeat/certs/client.crt" # ssl.key: "/etc/filebeat/certs/client.key" # logstash.conf 片段(input) input { beats { port => 5044 ssl => true ssl_certificate => "/etc/pki/tls/certs/server.crt" ssl_key => "/etc/pki/tls/certs/server.key" ssl_ca => "/etc/pki/tls/certs/ca.crt" ssl_verify_mode => "force_peer" # 强制校验证书 } } - 关键参数说明
- ssl.verification_mode:建议设为 certificate(校验证书链);不建议 none(禁用校验,仅测试用)。
- ssl.certificate_authorities:指定 CA 证书路径,用于验证服务端。
- ssl.certificate / ssl.key:启用 mTLS 时配置客户端证书与私钥。
四 服务端与安全策略配置
- Elasticsearch 启用安全与 TLS(示例)
说明:上述启用 HTTP 层 TLS 后,Filebeat 必须使用 https:// 与 证书校验 才能连接。# elasticsearch.yml xpack.security.enabled: true xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.keystore.path: /etc/elasticsearch/certs/elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: /etc/elasticsearch/certs/elastic-certificates.p12 xpack.security.http.ssl.enabled: true xpack.security.http.ssl.certificate: /etc/elasticsearch/certs/server.crt xpack.security.http.ssl.key: /etc/elasticsearch/certs/server.key - 网络与系统加固
- 防火墙仅放行 9200(ES)/5044(Logstash) 等必要端口,限制来源网段。
- 文件与目录权限:证书与密钥 0600,配置 0640,属主 root:filebeat。
- 凭据管理:使用 环境变量/密钥管理服务(如 Vault) 注入密码或 API Key,避免明文。
五 启动、验证与运维
- 启动与开机自启
systemctl enable --now filebeat - 验证连接与证书
# 查看 Filebeat 日志 journalctl -u filebeat -f # 如启用 Logstash,查看 Logstash 日志 journalctl -u logstash -f # 可选:用 curl 验证 ES HTTPS 可达与证书 curl -vk https://es.example.com:9200 - 常见问题与要点
- 出现证书不受信任:确认 ca.crt 已正确配置且链路完整(中间 CA 需一并信任)。
- 出现 “certificate verify failed”:将 ssl.verification_mode 从 none 改为 certificate,并提供 CA。
- 性能与稳定性:合理设置 bulk_max_size、worker、queue 等参数,避免丢数。
- 合规与轮换:证书建议 ≤ 365 天,建立 轮换与吊销 流程,并保留 审计日志。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何配置Filebeat安全地传输日志
本文地址: https://pptw.com/jishu/763152.html
