配置 Filebeat 安全传输日志
一 安全原则与总体架构
二 证书与密钥准备
# 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
三 配置 Filebeat 输出加密
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"
# 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" # 强制校验证书
}
}
四 服务端与安全策略配置
# 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
说明:上述启用 HTTP 层 TLS 后,Filebeat 必须使用 https:// 与 证书校验 才能连接。五 启动、验证与运维
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