在CentOS中为Filebeat数据流加上“安全锁”
首先需要明确的是,Filebeat本身并不直接提供数据加密功能。但这绝不意味着您的日志数据在传输过程中只能处于“明文裸奔”的不安全状态。在当今数据安全至关重要的运维环境下,为日志传输通道部署加密层,已成为一项基础且必要的安全实践。幸运的是,我们拥有多种成熟可靠的方案来实现这一目标。

接下来,我们将深入探讨两种在CentOS系统上主流的Filebeat数据加密实现方案,帮助您根据自身架构选择最合适的“安全锁”。
1. 使用TLS/SSL加密传输
这是最直接、也最被广泛推荐的方案:在Filebeat与Elasticsearch之间建立端到端的TLS/SSL加密隧道。此方法的核心在于数字证书的生成、管理与配置。
首先,您需要准备加密通信的“信任凭证”——即数字证书。通常,您需要创建一个私有证书颁发机构(CA),并基于此CA分别为Elasticsearch服务和Filebeat客户端签发对应的证书。具体操作流程可遵循以下步骤:
安装并配置Certbot等证书管理工具,它是自动化处理证书生命周期的高效助手。
准备Certbot的配置文件,在其中明确指定用于Elasticsearch节点和Filebeat客户端的域名或IP地址。
执行Certbot命令,自动生成所需的服务器证书、客户端证书以及对应的私钥文件。
将生成的CA证书、服务器证书及私钥安全地分发并放置到Elasticsearch和Filebeat各自的配置目录下。
证书准备完毕后,接下来的关键步骤是配置两端启用TLS/SSL。
对于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
对于Filebeat客户端,则需要修改filebeat.yml配置文件。配置需关注输出部分(指向Elasticsearch),若输入源也需加密(如监听安全端口),则输入部分也需配置。核心配置示例如下:
output.elasticsearch.ssl.enabled: true
output.elasticsearch.ssl.certificate_authorities: ["/etc/pki/tls/certs/ca.crt"]
output.elasticsearch.ssl.certificate: "/etc/pki/tls/certs/filebeat.crt"
output.elasticsearch.ssl.key: "/etc/pki/tls/private/filebeat.key"
output.elasticsearch.ssl.verify_mode: "certificate"
# 若输入源(如某些安全日志端口)要求SSL,可配置如下:
filebeat.inputs.ssl.enabled: true
filebeat.inputs.ssl.certificate_authorities: ["/etc/pki/tls/certs/ca.crt"]
filebeat.inputs.ssl.certificate: "/etc/pki/tls/certs/filebeat.crt"
filebeat.inputs.ssl.key: "/etc/pki/tls/private/filebeat.key"
filebeat.inputs.ssl.verify_mode: "certificate"
所有配置修改完成后,务必重启Elasticsearch服务和Filebeat客户端,以使安全设置生效。
2. 使用Logstash进行加密传输
如果您的日志处理架构中已经包含了Logstash作为数据处理管道,或者您更倾向于由Logstash来统一负责数据的接收、加工与安全转发,那么此方案更为合适。其核心思路是:Filebeat通过加密方式将日志发送至Logstash,再由Logstash通过另一条加密通道将处理后的数据转发至Elasticsearch。
同样,证书是构建信任的基础。在此方案中,您需要为Elasticsearch和Logstash(而非Filebeat)生成并交换证书,步骤与方案一类似。
配置的核心在于Logstash的管道配置文件。编辑您的logstash.conf文件,关键是在input(接收Filebeat数据)和output(发送数据到Elasticsearch)两个部分均启用SSL/TLS加密。
input {
beats {
port => 5044
ssl => true
ssl_certificate => "/etc/pki/tls/certs/logstash.crt"
ssl_key => "/etc/pki/tls/private/logstash.key"
ssl_ca => "/etc/pki/tls/certs/ca.crt"
ssl_verify_mode => "force_peer"
}
}
output {
elasticsearch {
hosts => ["https://localhost:9200"]
ssl => true
ssl_certificate => "/etc/pki/tls/certs/logstash.crt"
ssl_key => "/etc/pki/tls/private/logstash.key"
ssl_ca => ["/etc/pki/tls/certs/ca.crt"]
ssl_verify_mode => "force_peer"
}
}
此配置清晰地构建了一条双重加密的日志流水线:Filebeat到Logstash的5044端口通信受到SSL保护,同时Logstash到Elasticsearch的9200端口通信也启用了SSL加密。配置完成后,重启Logstash服务即可。
通过以上任一方案,您都能在CentOS环境中,为Filebeat的日志数据传输链路披上一件可靠的“加密铠甲”,有效保障数据从采集端到存储端的全流程机密性与完整性。方案的选择,最终取决于您的现有技术栈、运维习惯以及对架构复杂度的考量。
