当你在CentOS上成功完成Filebeat的基础安装与配置后,下一步关键任务就是确保数据传输的安全性。明文传输如同裸奔,存在严重的信息泄露风险。因此,需要在Elasticsearch端配置SSL/TLS加密,为数据提供坚实的保护屏障。

下面将具体操作步骤梳理如下:
第一步:确认Filebeat安装状态
如果Filebeat尚未部署,使用YUM包管理器进行安装:sudo yum install filebeat。这是基础的前置准备,无需过多赘述。
第二步:修改Filebeat核心配置文件
重点编辑 /etc/filebeat/filebeat.yml 文件,核心在于 outputs.elasticsearch 配置段。你需要找到或手动添加以下配置:
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
output.elasticsearch:
hosts: ["your_elasticsearch_host:9200"]
ssl.enabled: true
ssl.certificate_authorities: ["/path/to/ca.crt"]
ssl.certificate: "/path/to/client.crt"
ssl.key: "/path/to/client.key"
user: "your_elasticsearch_user"
password: "your_elasticsearch_password"
以下是关键参数说明:
- hosts:指向Elasticsearch服务端的地址与端口,请替换为实际地址。
- ssl.enabled:必须设为
true,这是开启加密的核心开关。 - ssl.certificate_authorities:CA根证书路径,用于让Filebeat验证Elasticsearch服务器身份,防止中间人攻击。
- ssl.certificate 和 ssl.key:分别为客户端证书与私钥路径,用于Filebeat向Elasticsearch证明自身合法性。
- user 和 password:Elasticsearch的用户名与密码,用于身份认证。
第三步:准备SSL证书
如果尚无证书,可使用OpenSSL生成自签名证书应急(生产环境建议使用CA颁发的正式证书)。生成过程相当于构建一条内部信任链:
mkdir -p /etc/filebeat/certs
# 生成根CA证书和私钥
openssl req -x509 -newkey rsa:4096 -keyout ca.key -out ca.crt -days 3650 -nodes
# 生成Filebeat的私钥和证书请求(CSR)
openssl req -newkey rsa:4096 -keyout filebeat.key -out filebeat.csr -nodes
# 用根CA对Filebeat的CSR进行签名,生成正式的客户端证书
openssl x509 -req -in filebeat.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out filebeat.crt -days 3650
经过上述步骤,形成了CA“万能钥匙”锁定所有凭证的完整信任链。
第四步:确保Elasticsearch端支持SSL
仅配置Filebeat不够,Elasticsearch本身必须开启加密通道,否则加密传输无法生效。打开Elasticsearch配置文件 /etc/elasticsearch/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: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
关键点:Elasticsearch需要拥有自己的PKCS12格式证书文件(或JKS格式),验证模式设为certificate,即仅验证证书有效性,不验证主机名。
第五步:重启服务并验证连接
配置修改后必须重启服务才能生效:
sudo systemctl restart filebeat
sudo systemctl restart elasticsearch
最后,使用curl验证加密连接是否打通:
curl -u your_elasticsearch_user:your_elasticsearch_password --cacert /path/to/ca.crt --cert /path/to/client.crt --key /path/to/client.key https://your_elasticsearch_host:9200
若一切正常,将收到Elasticsearch的响应信息,包含集群名称、版本号等。这意味着Filebeat与Elasticsearch之间的通信通道已被SSL/TLS加密完全保护。
