一、前言
先废话一下,可跳过。最近一直研究企业安全监控方案,奈何,垂直部署(就是在原有的项目服务器中加入一台服务器作为监控服务器)可能会影响业务。几十台服务器,跑着解耦的项目,着实不敢乱来,怕影响了线上的商户和客户。这锅,真特么不敢背,要是出问题背下来,大概可以拿着饭碗回家吃饭了。
所有,从旁路部署吧,哪怕安全监控服务器挂了也没关系,不影响业务,最主要是,安全监控服务器随时随地的方便重启,折腾。
二、什么是垂直部署和旁路部署。
垂直部署:
利:能够实时监控数据流、分析数据并拦截恶意请求、完完全全融入到项目中的参与者角色
弊:变更规则需要重启服务、异常情况挂了影响业务、调试不方便
旁路部署:
利:规则变更及时生效、怕个卵业务影响、感觉监控丑就随时动手、完整的旁观者角色
弊:不能对请求做拦截处理,换句话说,它只是一个旁观者。
三、方案
1.未执行方案:部署nginx 1.13.4版本,添加mirror模块(镜像模块就是用来分发流量的)+ waf+elk
这个方案性能损耗小,7层转发请求,对转发出去的请求后的响应自动丢弃(happy)这就是mirror模块的好处。
蛋事,运维用了openresty,openresty虽然是linux内核,但是,版本没更上,并木有mirror模块,换nginx最终会导致自行添加的一下lua脚本废了…. 没辙,夭折了的方案。但是此方案用作初期的旁路部署,妥妥的方便。
附上mirror工作原理
2.已经测试中的方案
Packetbeat + Elasticsearch + kibana
这个方案怎么说呢,packetbeat支持多种协议和第三方协议的添加,配置文件里可直接配置你要监听的协议,这货还自带心跳检测监听主机的存活状态.属于四层转发数据,对于性能有影响,不占用内存和交换区,但是会占用CPU资源
其工作原理如下图:
获取网络通讯数据
解码网络协议(因为支持多种协议,所以,它得把捕获的数据解码后,匹配对应的协议,然后转发给es,敲黑板:这里是损耗性能的关键)
关联请求与响应
提取需要的信息(packetbeat.template.json,修改这个模板中对应的协议信息可提取指字段数据)
整理集合成json数据,发送到ES
…
发送到ES之后,通过Kibana做成自己想要的图出来,监控http中需要的信息画像。
配置方面Packetbeat + Elasticsearch + kibana百度断断续续能凑齐一篇完整的文章,这里就不多赘述了。