• 使用Nginx实现采集端和数据分析平台的数据加密传输


    1. 需求描述

    目前鸿鹄暴露出来的重要ports如下表:

    图片

    在实际的生产环境中,结合我司的使用场景,需要在鸿鹄前端安装proxy,用以解决如下两个问题:

    1.1 实现http到https的强制跳转

    企业环境中,一般会关闭http 80端口,但用户有时候会输入http://, 如果完全关闭的话,用户会抱怨连不上服务。所以实际的使用场景中,一般还是会开启80端口,但是会强制跳转到https 443端口。

    1.2 实现数据采集端到鸿鹄之间的数据加密传输

    图片

    如上图所示鸿鹄安装在VPC A内,对于VPC A内的应用程序来说,通过非加密传输,把日志传入鸿鹄系统,相对来说还算比较安全。

    不过在企业级的环境中,有更多的应用程序处在VPC B和VPC C内,此时需要通过加密的方式,把日志Sink到鸿鹄内,要不然可能存在较大的信息泄漏风险。

    2. 解决方案

    2.1 安装Nginx

    以CentOS 7为例,执行如下命令即可

    图片

    2.2 实现http到https的强制跳转

    图片

    把以上配置信息, 写入/etc/nginx/conf.d/nginx.conf; 此配置文件主要实现如下功能:

    • 监听80 和 443端口,443端口配置为加密通信

    • 如果用户以http协议请求,则执行强制跳转到https协议

    • 设置合适的proxy buffers size以避免 “upstream sent too big header while reading response header from upstream”错误(鸿鹄返回的header,特别是cookie,size超过了nginx的默认值)

    • 把请求代理到鸿鹄的18080端口

    2.3 配置stream加密通信且代理到鸿鹄Vector 20000端口

    2.3.1 前提条件

    nginx只有在1.9.0及以上,才实现对stream的代理,所以首先需确保nginx的版本在1.9.0以上

    图片

    nginx的stream是一个单独模块,需要在编译的时候,增加option "--with-stream", 执行nginx -V后,能看到系统安装的nginx编译的时候指定了option --with-stream=dynamic

    图片

    由于nginx的编译参数为--with-stream=dynamic, 这样需要安装额外的nginx stream动态库来支持对stream的代理服务,如下执行安装即可

    图片

    2.3.2 配置ngnix实现stream代理

    图片

    把以上配置信息, 添加到/etc/nginx/nginx.conf; 此配置文件主要实现如下功能:

    • 监听30000端口(由于鸿鹄和Nginx处在同一个机器上,因此Nginx这边配置为30000端口),且配置为加密通信

    • 把请求代理到鸿鹄Vector的20000端口

    2.3.3 重启Nginx后,验证端口30000是否已正确配置为加密传输

    图片

    图片

    如上图所示,Nginx 30000端口已经正确配置TLS加密传输。

    2.4 正确配置Vector采集端

    默认情况下,Vector采集端会以非加密的方式和鸿鹄Vector建立连接,所以在鸿鹄生成的Vector配置基础上,基于上述配置,需要修改port为30000,同时设置tls.enabled = true, 如下所示:

    图片

    后续工作

    企业级应用中,加密传输是最基本的需求,上面的措施目前只实现了加密传输,采集端和接收端之间未进行认证。这就需要配合额外的措施来增加安全性,比如在鸿鹄主机上设置防火墙策略或者如果你的主机在云上,可以设置相应的网络安全组来增强安全机制。

    题外话:截止本文写作时,Vector之间的通信还未实现认证机制( https://github.com/vectordotdev/vector/issues/2017), 希望Vector能尽快实现这一机制,届时,鸿鹄一定会更好地集成Vector新的功能,以更好地满足企业级的数据安全通信需求。

  • 相关阅读:
    A-Level经济真题每期一练(23)
    CDN:加速型与高防型的不同
    前端开发必看:高效调试技巧大揭秘
    Excel使用过程中的参考资料
    1949-2020年各省市农业全要素生产率(年度)
    Mysql基本语法
    设计模式之【工厂模式】
    Git 版本控制工具
    【设计模式】Java 设计模式之工厂模式(Factory Pattern)
    CMake教程系列-02-使用cmake代码生成二进制
  • 原文地址:https://blog.csdn.net/Yhpdata888/article/details/133888467