在CentOS中为Filebeat配置数据传输加密
在数据采集和传输过程中,安全性是绝不能妥协的一环。好在,Filebeat原生支持通过TLS/SSL协议对传输通道进行加密,这就像给你的日志数据穿上了一件“防弹衣”。下面,我们就来手把手完成这套加密配置。

1. 安装Filebeat
万事开头先装好。如果你的系统里还没有Filebeat,用下面这条命令就能轻松搞定:
sudo yum install filebeat
2. 配置Filebeat
接下来是重头戏:编辑Filebeat的主配置文件 /etc/filebeat/filebeat.yml。我们的目标是在这里启用TLS/SSL加密设置。
2.1 生成证书和密钥
建立加密通信,首先得有自己的“身份证”和“钥匙”,也就是证书和密钥。使用OpenSSL工具可以一站式生成所有必需文件。
生成Elasticsearch证书和密钥
为Elasticsearch服务端生成一套:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/elasticsearch-key.pem -out /etc/pki/tls/certs/elasticsearch-cert.pem -subj "/CN=elasticsearch"
生成Filebeat证书和密钥
再为Filebeat客户端生成一套:
sudo openssl req -newkey rsa:2048 -nodes -keyout /etc/pki/tls/private/filebeat-key.pem -out /etc/pki/tls/certs/filebeat-cert.pem -subj "/CN=filebeat"
生成CA证书
最后,生成一个权威的根证书(CA),用来给上面两套证书“背书”:
sudo openssl req -x509 -newkey rsa:2048 -days 365 -nodes -keyout /etc/pki/tls/private/ca-key.pem -out /etc/pki/tls/certs/ca-cert.pem -subj "/CN=ca"
2.2 配置Elasticsearch
证书齐了,现在该告诉Elasticsearch怎么用。先把相关文件拷贝过去:
sudo cp /etc/pki/tls/certs/elasticsearch-cert.pem /etc/elasticsearch/config/
sudo cp /etc/pki/tls/private/elasticsearch-key.pem /etc/elasticsearch/config/
sudo cp /etc/pki/tls/certs/ca-cert.pem /etc/elasticsearch/config/
# 编辑elasticsearch.yml
sudo vi /etc/elasticsearch/config/elasticsearch.yml
然后,在 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
xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: elastic-certificates.p12
xpack.security.http.ssl.truststore.path: elastic-certificates.p12
2.3 配置Filebeat
Elasticsearch那边准备好了,Filebeat这边也得同步配置。同样,先拷贝证书文件:
sudo cp /etc/pki/tls/certs/filebeat-cert.pem /etc/filebeat/config/
sudo cp /etc/pki/tls/private/filebeat-key.pem /etc/filebeat/config/
sudo cp /etc/pki/tls/certs/ca-cert.pem /etc/filebeat/config/
# 编辑filebeat.yml
sudo vi /etc/filebeat/filebeat.yml
接下来,在 filebeat.yml 文件中进行关键配置。这里需要关注两个部分:一是输入端的SSL设置(如果日志源支持SSL),二是输出到Elasticsearch的SSL设置。
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
fields:
ssl.enabled: true
ssl.certificate_authorities: ["/etc/filebeat/config/ca-cert.pem"]
ssl.certificate: "/etc/filebeat/config/filebeat-cert.pem"
ssl.key: "/etc/filebeat/config/filebeat-key.pem"
output.elasticsearch:
hosts: ["https://localhost:9200"]
ssl.verification_mode: certificate
ssl.certificate_authorities: ["/etc/filebeat/config/ca-cert.pem"]
ssl.certificate: "/etc/filebeat/config/filebeat-cert.pem"
ssl.key: "/etc/filebeat/config/filebeat-key.pem"
3. 重启服务
配置完成后,别忘了重启服务,让所有改动生效。依次执行:
sudo systemctl restart filebeat
sudo systemctl restart elasticsearch
4. 验证配置
最后一步,也是至关重要的一步:验证加密通道是否真的建立起来了。一个直接的方法是查看Filebeat的实时日志,观察连接状态:
sudo journalctl -u filebeat -f
如果看到Filebeat成功连接至Elasticsearch,并且没有SSL握手错误,那么恭喜你,从Filebeat到Elasticsearch的数据传输链路已经处于TLS/SSL加密的保护之下了。
