在Ubuntu上为Filebeat配置数据加密:确保传输安全的关键步骤
在当今以数据为核心的运维体系中,保障日志传输过程的安全至关重要。为Filebeat启用SSL/TLS加密,是防止敏感运维数据在传输途中被拦截、窃取或恶意篡改的核心安全措施。本指南将详细讲解如何在Ubuntu操作系统上,为Filebeat与Elasticsearch之间的通信建立端到端的加密链路,为你的日志数据穿上“防护甲”。
1. 安装Filebeat
首先,确保你的Ubuntu系统已安装最新版本的Filebeat。若尚未安装,只需在终端中运行以下两条命令,即可完成软件源的更新与Filebeat的安装部署。
sudo apt-get update
sudo apt-get install filebeat
2. 配置Filebeat
接下来是核心配置环节,需要编辑Filebeat的主配置文件 /etc/filebeat/filebeat.yml。我们的目标是启用并精确配置SSL/TLS加密参数,以对接安全的Elasticsearch输出。
2.1 启用SSL/TLS
配置的重点在于output.elasticsearch部分。你需要指定通过HTTPS协议连接,并正确指向你的证书文件。请务必将示例中的 your_elasticsearch_host 替换为你实际的Elasticsearch服务器地址或域名。
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
processors:
- add_cloud_metadata: ~
output.elasticsearch:
hosts: ["https://your_elasticsearch_host:9200"]
ssl.verification_mode: certificate
ssl.certificate_authorities: ["/etc/filebeat/certs/ca.crt"]
ssl.certificate: "/etc/filebeat/certs/filebeat.crt"
ssl.key: "/etc/filebeat/certs/filebeat.key"
2.2 配置证书和密钥
加密通信依赖于数字证书。你需要生成一个私有CA(证书颁发机构)以及由该CA签发的Filebeat客户端证书。
生成CA证书
首先,创建一个自签名的根CA证书和密钥,它将用于签署后续的所有服务证书。执行命令时,请根据你的组织信息替换国家、省份、城市、组织名称和通用名等字段。
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/filebeat/certs/ca.key -out /etc/filebeat/certs/ca.crt -subj "/C=US/ST=YourState/L=YourCity/O=YourOrganization/CN=YourCA"
生成Filebeat证书和密钥
然后,为Filebeat生成私钥和证书签名请求(CSR),并使用上一步创建的CA为其签发最终的用户证书。此处的通用名(CN)建议设置为Elasticsearch服务器的可解析主机名或IP地址。
sudo openssl req -newkey rsa:2048 -nodes -keyout /etc/filebeat/certs/filebeat.key -out /etc/filebeat/certs/filebeat.csr -subj "/C=US/ST=YourState/L=YourCity/O=YourOrganization/CN=your_elasticsearch_host"
sudo openssl x509 -req -in /etc/filebeat/certs/filebeat.csr -CA /etc/filebeat/certs/ca.crt -CAkey /etc/filebeat/certs/ca.key -CAcreateserial -out /etc/filebeat/certs/filebeat.crt -days 365
2.3 配置Elasticsearch
为确保端到端安全,Elasticsearch服务端也必须启用安全特性并配置SSL。编辑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生成其专属的PKCS#12格式的密钥库文件,其中包含了服务端的证书和密钥。
sudo bin/elasticsearch-certutil ca --pem
sudo bin/elasticsearch-certutil cert --pem -out elastic-certificates.p12 -pass ""
3. 重启Filebeat和Elasticsearch
完成所有文件配置后,必须重启相关服务以使新的安全配置生效。按顺序执行以下重启命令。
sudo systemctl restart filebeat
sudo systemctl restart elasticsearch
4. 验证配置
配置的最后一步是验证加密通道是否已成功建立。通过实时查看Filebeat的服务日志,可以确认其是否通过SSL/TLS协议成功连接至Elasticsearch。
sudo journalctl -u filebeat -f
观察日志输出,若未出现“SSL handshake failed”或类似的证书验证错误,则表明Filebeat到Elasticsearch的加密数据传输链路已成功搭建。至此,你的日志数据在传输过程中获得了有效的加密保护,安全等级显著提升。
