Filebeat在Ubuntu上的数据加密方法
在Ubuntu系统上,Filebeat的数据加密主要通过TLS/SSL协议实现,覆盖传输层加密(保护数据在传输中的安全)和可选的客户端/服务器双向认证(验证双方身份)。以下是具体配置步骤及关键说明:
传输层加密是保障Filebeat与目标服务(如Elasticsearch、Logstash)之间数据传输安全的核心措施,通过TLS/SSL协议对数据进行加密。
若尚未安装Filebeat,可通过Ubuntu官方仓库安装:
sudo apt-get update
sudo apt-get install filebeat
SSL证书用于验证通信双方身份及加密数据,推荐使用CA(证书颁发机构)签名证书(更安全)。以下是生成步骤:
sudo mkdir -p /etc/filebeat/certs
sudo openssl req -x509 -nodes -days 3650 -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"
sudo openssl req -newkey rsa:2048 -nodes -keyout /etc/filebeat/certs/client.key \
  -out /etc/filebeat/certs/client.csr -subj "/C=US/ST=YourState/L=YourCity/O=YourOrganization/CN=filebeat_client"
sudo openssl x509 -req -in /etc/filebeat/certs/client.csr \
  -CA /etc/filebeat/certs/ca.crt -CAkey /etc/filebeat/certs/ca.key \
  -CAcreateserial -out /etc/filebeat/certs/client.crt -days 3650
server.key)和证书(server.crt),确保证书的Common Name (CN)与目标服务的IP或域名一致。编辑Filebeat的主配置文件/etc/filebeat/filebeat.yml,在output部分(如Elasticsearch或Logstash)添加SSL配置:
output.elasticsearch:
  hosts: ["https://your_elasticsearch_host:9200"]  # 目标服务地址(HTTPS)
  ssl.verification_mode: certificate                # 启用证书验证
  ssl.certificate_authorities: ["/etc/filebeat/certs/ca.crt"]  # 指定CA证书路径
  ssl.certificate: "/etc/filebeat/certs/client.crt"             # Filebeat客户端证书
  ssl.key: "/etc/filebeat/certs/client.key"                     # Filebeat客户端私钥
ssl.verification_mode:设为certificate(验证证书有效性)或strict(更严格,需匹配主机名);ssl.certificate_authorities:指向CA证书,用于验证目标服务的身份;ssl.certificate/ssl.key:Filebeat的客户端证书和私钥,用于向目标服务证明自身身份。若目标服务是Elasticsearch,需在其配置文件/etc/elasticsearch/elasticsearch.yml中启用SSL:
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
truststore)和自身的证书/私钥(keystore)。filebeat用户):sudo chown -R root:filebeat /etc/filebeat/certs
sudo chmod 640 /etc/filebeat/certs/*
sudo chmod 644 /etc/filebeat/filebeat.yml
sudo systemctl restart filebeat
查看Filebeat日志(/var/log/filebeat/filebeat),确认连接状态:
sudo tail -f /var/log/filebeat/filebeat
若日志中出现Successfully connected to Elasticsearch over SSL,则表示加密传输已生效。
若需更高级的身份验证(确保只有持有有效证书的Filebeat能连接目标服务),可配置双向TLS认证(目标服务验证Filebeat证书,Filebeat也验证目标服务证书):
elasticsearch.yml中,将xpack.security.transport.ssl.verification_mode设为strict,并要求客户端提供证书;output.elasticsearch的SSL配置不变(已包含客户端证书),目标服务会验证该证书的有效性。除传输层加密外,还需配合以下措施提升整体安全性:
root用户运行,降低权限滥用风险;filebeat.yml及证书文件的权限仅限必要用户访问;monitoring功能或第三方工具监控日志传输状态,及时发现异常。通过以上步骤,可在Ubuntu上为Filebeat配置完善的数据加密方案,保障日志数据在传输过程中的机密性与完整性。