使用filebeat进行数据加密传输和区别不同的日志源

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 打开微信扫一扫,关注微信公众号【数据与算法联盟】 转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.com/thinkgamer写在前边的话数据在远程传输过程中,可能被劫持和获取,继而造成的后果是数据信息泄露,那么如何有效的进行数据传输呢,在ELK Stack中filebeat 提供了这样的一个解决方案,其不仅可以监听指定文件夹的数据,还可以对数据进行TLS 双向认证加密,从而保证数据传输过程中的可靠性。


这里写图片描述
打开微信扫一扫,关注微信公众号【数据与算法联盟】

转载请注明出处:http://blog.csdn.net/gamer_gyt
博主微博:http://weibo.com/234654758
Github:https://github.com/thinkgamer


写在前边的话

数据在远程传输过程中,可能被劫持和获取,继而造成的后果是数据信息泄露,那么如何有效的进行数据传输呢,在ELK Stack中filebeat 提供了这样的一个解决方案,其不仅可以监听指定文件夹的数据,还可以对数据进行TLS 双向认证加密,从而保证数据传输过程中的可靠性。


环境说明

Ubuntu 16.04
ELK 5.2.1 (elk在192.168.1.127上)
Filebeat 5.2.1 (fb在192.168.1.128上)


Filebeat区别不同的日志源

filebeat.yaml 文件配置如下:

filebeat.prospectors:

# Each - is a prospector. Most options can be set at the prospector level, so
# you can use different prospectors for various configurations.
- input_type: log
  paths:
    - /home/thinkgamer/test/*.log
  document_type: test_log

- input_type: log

  paths:
    - /var/log/*.log
  document_type: auth_log

这里得document_type 就是对应filter中对应的log的type,在logstash的解析文件中可以这样写

input {
    beats {
        port => 5044
    }
}

filter {
    if [type] == 'auth_log'{
    }
    else if [type] == 'test_log'{
     }
}

output {
    elasticsearch {
        hosts => ["http://localhost:9200"]
        index =>"%{type}-%{+YYYY.MM.dd}" 
    }
}

Filebeat传输数据加密

上边基本环境里介绍到logstash和filebeat的ip地址分别为127和128 上,分别在两个机器上生成证书
logstash(127 机器):

cd ~
mkdir -p pki/tls/certs
mkdir -p pki/tls/private
openssl req -subj '/CN=192.168.1.127/' -x509 -days $((100 * 365)) -batch -nodes -newkey rsa:2048 -keyout pki/tls/private/logstash.key -out pki/tls/certs/logstash.crt

配置logstash的input为如下形式:

input {
    beats {
        port => 5044
        ssl => true
        ssl_certificate_authorities => ["/home/thinkgamer/pki/tls/certs/filebeat.crt"]
        ssl_certificate => "/home/thinkgamer/pki/tls/certs/logstash.crt" 
        ssl_key => "/home/thinkgamer/pki/tls/private/logstash.key" 
        ssl_verify_mode => "force_peer" 
    }
}

ssl:true 表示开启 Logstash 的 SSL/TLS 安全通信功能;
ssl_certificate_authorities:配置 Logstash 使其信任所有由该 CA 证书发行的证书;
ssl_certificate & ssl_key:Logstash server 证书和 key 文件。Logstash 使用它们向 Filebeat client 证明自己的可信身份;
ssl_verify_mode:表明 Logstash server 是否验证 Filebeat client 证书。有效值有 peer 或 force_peer。如果是 force_peer,表示如果 Filebeat 没有提供证书,Logstash server 就会关闭连接。

Filebeat(128机器):

cd ~
mkdir -p pki/tls/certs
mkdir -p pki/tls/private
openssl req -subj '/CN=192.168.1.128/' -x509 -days $((100 * 365)) -batch -nodes -newkey rsa:2048 -keyout pki/tls/private/filebeat.key -out pki/tls/certs/filebeat.crt

filebeat.yaml 配置文件中修改output logstash:

output.logstash:
  # The Logstash hosts
  hosts: ["192.168.1.127:5044"]

  # Optional SSL. By default is off.
  # List of root certificates for HTTPS server verifications
  ssl.certificate_authorities: ["/home/master/pki/tls/certs/logstash.crt"]

  # Certificate for SSL client authentication
  ssl.certificate: "/home/master/pki/tls/certs/filebeat.crt" 

  # Client Certificate Key
  ssl.key: "/home/master/pki/tls/private/filebeat.key" 

certificate_authorities:CA 证书,即用来签署证书的证书。这里表示配置 Filebeat 使其信任所有由该 CA 证书发行的证书。因为自签名证书的发行者和证书主体相同,所以这里直接使用 Logstash 证书使 Filebeat 信任使用该证书的 Logstash server;
certificate & certificate_key:Filebeat 证书和 key 文件。Filebeat 将使用它们向 Logstash server 证明自己的可信身份。

至此配置over了,在两个机器上分别启动logstash和filebeat,报错如下:

cannot validate certificate for 10.10.11.109 because it doesn't contain any IP SANs 

解决办法参考下边《遇到的问题和解决办法》


遇到的问题和解决办法

在配置好证书之后启动filebeat和logstash,filebeat并不能将数据传输给logstash,报出了下边的错误

cannot validate certificate for 10.10.11.109 because it doesn't contain any IP SANs 

解决办法是:
删除之前产生的证书,对openssl进行重新配置

sudo vim /etc/ssl/openssl.cnf

找到 [ v3_ca ]
加入下边一行:

subjectAltName = IP:这里写ip地址

比如我的两个机器便为:

subjectAltName = IP:192.168.1.127
subjectAltName = IP:192.168.1.128

重新生成证书,进行copy 配置即可


加密多个日志源问题

在生产环境中有多个日志源这是个很常见的问题,那么如果我们需要对多个日志源的数据进行加密传输时该怎么办呢?
答案是肯定得,这里有多种解决办法
1:每个filebeat分别发送到logstash监听的不同端口,比如说Filebeat A 发送到logstash的 5044端口,Filebeat B发送到logstash的5045 端口,这样做肯定是没有任何问题的
input 的输入是类似于下面这样的

input {
    beats {
        port => 5044
    }
    beats {
        port => 5044
    }
}

2:每个filebeat所在的机器都发送到logstash 的5044 端口,这样做在没有加密保护的情况下也是可以的(已经尝试过了),那如果是在加密的情况下该怎么做呢?是否能成功呢?

回答:当然是可以的,用同样的方法在另外一台安装filebeat的机器上生成证书,和logstash所在的机器进行证书的互相copy和配置,logstash的机器的input差不多应该是下面的这种

input {
    beats {
        port => 5044
        ssl => true
        ssl_certificate_authorities => ["/home/thinkgamer/pki/tls/certs/filebeat.crt","/home/thinkgamer/pki/tls/certs/filebeat1.crt"]
        ssl_certificate => "/home/thinkgamer/pki/tls/certs/logstash.crt" 
        ssl_key => "/home/thinkgamer/pki/tls/private/logstash.key" 
        ssl_verify_mode => "force_peer" 
    }
}

引深应用

以上仅仅是对数据从发源地到logstash收集过程进行解释,但是filebeat进行数据传输加密也可以应用别的方面,比如说A公司的两个数据点之间(B,C)要进行数据的传递,这个时候便可以使用filebeat了,在B和C地点分别生成证书和配置,在C地点可以使用logstash的output将传输过来的数据输出到指定文件夹中即可。

相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
2月前
|
SQL 人工智能 监控
SLS Copilot 实践:基于 SLS 灵活构建 LLM 应用的数据基础设施
本文将分享我们在构建 SLS SQL Copilot 过程中的工程实践,展示如何基于阿里云 SLS 打造一套完整的 LLM 应用数据基础设施。
495 53
|
2月前
|
数据采集 运维 监控
不重启、不重写、不停机:SLS 软删除如何实现真正的“无感数据急救”?
SLS 全新推出的「软删除」功能,以接近索引查询的性能,解决了数据应急删除与脏数据治理的痛点。2 分钟掌握这一数据管理神器。
168 19
|
3月前
|
存储 缓存 Apache
StarRocks+Paimon 落地阿里日志采集:万亿级实时数据秒级查询
A+流量分析平台是阿里集团统一的全域流量数据分析平台,致力于通过埋点、采集、计算构建流量数据闭环,助力业务提升流量转化。面对万亿级日志数据带来的写入与查询挑战,平台采用Flink+Paimon+StarRocks技术方案,实现高吞吐写入与秒级查询,优化存储成本与扩展性,提升日志分析效率。
391 1
|
6月前
|
存储 缓存 Apache
StarRocks+Paimon 落地阿里日志采集:万亿级实时数据秒级查询
本文介绍了阿里集团A+流量分析平台的日志查询优化方案,针对万亿级日志数据的写入与查询挑战,提出基于Flink、Paimon和StarRocks的技术架构。通过Paimon存储日志数据,结合StarRocks高效计算能力,实现秒级查询性能。具体包括分桶表设计、数据缓存优化及文件大小控制等措施,解决高并发、大数据量下的查询效率问题。最终,日志查询耗时从分钟级降至秒级,显著提升业务响应速度,并为未来更低存储成本、更高性能及更多业务场景覆盖奠定基础。
|
4月前
|
存储 安全 数据处理
探讨对称加密与非对称加密的区别
综上所述,对称加密和非对称加密的选用取决于不同的安全需求、性能考量和应用情境。了解各自的特点和限制,才能有效地部署合理的加密策略,以确保数据通信的安全性和效率。
498 13
|
7月前
|
SQL 监控 数据挖掘
SLS 重磅升级:超大规模数据实现完全精确分析
SLS 全新推出的「SQL 完全精确」模式,通过“限”与“换”的策略切换,在快速分析与精确计算之间实现平衡,满足用户对于超大数据规模分析结果精确的刚性需求。标志着其在超大规模日志数据分析领域再次迈出了重要的一步。
525 117
|
3月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
234 0
|
3月前
|
数据采集 运维 监控
|
5月前
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
536 4

热门文章

最新文章