基于Openresty+的WEB安全防护系统架构
作者:糖果
0×00 概要
随着时间的推移,我们在实践中也不断的演进我们的服务部署方案,希望WEB防护,不只是单独的云WAF来保护服务,而有其它的相关服务,对WAF进行增强加固的合理配合。我们使用Openresty+系统构建了WAF,而在实际的应用场景中,WAF也要嵌入我们的已有防护体系中,与其它系统一起协同工作。我们从最开始的服务无保护状态,到日志分析威胁,到流量镜像,都是渐进发展的过程,有了基本的蓝图构想,可以使用各种技术手段去完成安全防护系统的建设。
0×01 无保护业务系统
从多种的角度出发,我们可以基于被保护系统,构建复合的安全保护方案,代码审计、WAF、反抓站DDOS、日志分析、蜜罐、IDS等各种安全子系统,构建较丰富立体的安全防护系统解决方案,但最开始的系统,往往都是只有纯业务系统,并没有更多的安全系统为其护航,面对各种攻击,显的比较脆弱,被黑客利用漏洞,上传木马、篡改页面等危险攻击操作。
0×02 代码审计系统
典型的WEB服务,都会涉及到域名解析,负载均衡和代理服务的,多层WEB服务结构,而WEB服务的保护会涉及到,对源代码的安全审计,便于发现被挂马和被恶意篡改的威胁问题。可以用很多的开源审计工具,也可以买商业审计工具,来进行定期的代码审计。审计工具只是一种威胁发现的手段,当我们挖掘出了一些威胁规则,可以通过WAF提供的接口服务,将涉及工具的检查规则,转换成WAF可以理解的安全策略规则,推送给WAF系统进行拦截。
0×03 反抓站与DDOS防护
在没有WAF系统之前,或者说,如果不用传统的7层流量监听的WAF,我们也可以把各个WEB服务应用的访问志进行落地收集,然后通过大数据统计的方式,挖掘日志中存在的威胁,识别抓站,进行CC或是DDOS的防护,然后通过告诉代理服务器,对统计出的威胁目标进行封禁。今天,基于ZK、Kafka、Spark的大数据工具,可以很好的完成数据统计分析任务,优良的算法,可以实时高效的进行防护拦截攻击。
因为有负载均衡和代理服务器存在,让日志收集可以变的更集中方便。
0×04 传统云WAF
大数据分析固然很好, 但是做HTTP请求到日志落地也会损失一些数据,比如Post、session、cookies这些数据的检查,使用直接7层HTTP流量分析的模式可以获取更多的一手数据。这种情况,在服务的7层引入了WAF防火墙拦截监听服务,这种传统WAF模式,可以更直接深入到HTTP请求的协议的内部数据,过去我们将业务系统的日志,直接发给反抓站系统,当引入云WAF的时候,我们也可以通过WAF向其推送数据。
之前都是业务系统通过向kafka队列推送数据给反抓站系统进行数据分析,如果使用WAF向反抓站系统推日志数据也可以,是对地集群内的结点收集发送数据有管理成本。对反抓站系统来说WAF就是一个拦截模块,对于WAF来说反抓站就是一个分析模块, 反抓站可以把分析的结果告诉WAF进行拦截,子系统之间进行互动。
0×05 WAF与蜜罐
WAF与业务服务的连接方式,把原有域名指向,指向WAF集群,再由WAF集群回源到服务的负载均衡,完成http流量的分的拦截到放过,交给原有业务服务响应。WAF系统本身也提供了类似REST接口,将代码审计的威胁和反抓站DDOS的威胁,通过接口传给WAF拦截。这种模式,意味着,如是有人直接攻击WAF,使用UDP等垃圾数据攻击。这种情况,保留流量包pcap的原始数据,对后期分析就比较有意义了。
0×06 攻击流量记载
如果我们不想把WAF和业务进行串接,只想做流量监听,我们也可以不把DNS指向WAF集群,而是在代量服务那层通过HTTP-MIRROR等类似镜像技术,将HTTP流量复制一份到WAF,然后不做回源,将流量引入fake upstream,fake upsatream的响应会被上层的服务丢弃,如果我们想将威胁流量和威胁流量进行分开引流,可以再加入一个honeypot的upstream,收集威胁流量,这样主干业务上,请求的都是正常请求响应的,而在镜像给WAF的流量中,可以识别生产流量中存在的威胁请求,将威胁请求切到honeypot上进行威胁分流,因为不回源,只能做分类,不能做诱导性的数据收集,串接WAF的方式就可以,但如果真是把威胁流量引到真的honeypot上,honeypot本身也会发出报警,并收集payload。
0×07 日志中心
如果不满足于,只是将威胁流量记录到Honeypot上,也可以将流量在动态切换到Honeypot的服务时, 通过pcap录制技术将流量包记载,类似netflow的模式,按时间分割流量保存,并可重放。这样就不仅仅有日志文本、payload、还有原始的请求包,通过类似wireshark等工具仔细分析,后期也可以通过重放技术,把当时攻击发生时的流量,重放到靶机测机上,进行案发现场分析。
0×08 大数据与威胁报警
关WAF日志部分,WAF通过传统的Syslog吐出高中低危的报警事件和数据,更便于我们对攻击的行为的分析和定位,我们也可以将syslog日志数据收集到,自建的数据中心中,进行后期的分析与预警,有了报警数据,我们也可以将数据与其它子系统进行数据对碰。
0×09 总结
围绕被保护的WEB构建代码审计服务、WAF、反抓站分析、蜜罐、日志分析报警和Payload流量记载等多种方式,来监听WEB服务,发现攻击威胁,定位威胁。可以根据实际的应用场景和自身情况,选择商用服务、开源服务、或是自主构建安全系统都可以。 采用模块化的构建方法,每个子系统可能都有多种的实现解决方案,但始终离不开的都是流量的监听、数据落地、与后期分析、预警报告等阶段,后面我们也会选择使用具体的工具,来完成图上的安全系统建设。