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新的功能,以更好地满足企业级的数据安全通信需求。

相关文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: