随着时间的推移,我们在实践中也不断的演进我们的服务部署方案,希望WEB防护,不只是单独的云WAF来保护服务,而有其它的相关服务,对WAF进行增强加固的合理配合。我们使用Openresty+系统构建了WAF,而在实际的应用场景中,WAF也要嵌入我们的已有防护体系中,与其它系统一起协同工作。

概要

随着时间的推移,我们在实践中也不断的演进我们的服务部署方案,希望WEB防护,不只是单独的云WAF来保护服务,而有其它的相关服务,对WAF进行增强加固的合理配合。我们使用Openresty+系统构建了WAF,而在实际的应用场景中,WAF也要嵌入我们的已有防护体系中,与其它系统一起协同工作。我们从最开始的服务无保护状态,到日志分析威胁,到流量镜像,都是渐进发展的过程,有了基本的蓝图构想,可以使用各种技术手段去完成安全防护系统的建设。

1 无保护业务系统

从多种的角度出发,我们可以基于被保护系统,构建复合的安全保护方案,代码审计、WAF、反抓站DDOS、日志分析、蜜罐、IDS等各种安全子系统,构建较丰富立体的安全防护系统解决方案,但最开始的系统,往往都是只有纯业务系统,并没有更多的安全系统为其护航,面对各种攻击,显的比较脆弱,被黑客利用漏洞,上传木马、篡改页面等危险攻击操作。

2 代码审计系统

典型的WEB服务,都会涉及到域名解析,负载均衡和代理服务的,多层WEB服务结构,而WEB服务的保护会涉及到,对源代码的安全审计,便于发现被挂马和被恶意篡改的威胁问题。可以用很多的开源审计工具,也可以买商业审计工具,来进行定期的代码审计。审计工具只是一种威胁发现的手段,当我们挖掘出了一些威胁规则,可以通过WAF提供的接口服务,将涉及工具的检查规则,转换成WAF可以理解的安全策略规则,推送给WAF系统进行拦截。

3 反抓站与DDOS防护

在没有WAF系统之前,或者说,如果不用传统的7层流量监听的WAF,我们也可以把各个WEB服务应用的访问志进行落地收集,然后通过大数据统计的方式,挖掘日志中存在的威胁,识别抓站,进行CC或是DDOS的防护,然后通过告诉代理服务器,对统计出的威胁目标进行封禁。今天,基于ZK、Kafka、Spark的大数据工具,可以很好的完成数据统计分析任务,优良的算法,可以实时高效的进行防护拦截攻击。

因为有负载均衡和代理服务器存在,让日志收集可以变的更集中方便。

4 传统云WAF

大数据分析固然很好, 但是做HTTP请求到日志落地也会损失一些数据,比如Post、session、cookies这些数据的检查,使用直接7层HTTP流量分析的模式可以获取更多的一手数据。这种情况,在服务的7层引入了WAF防火墙拦截监听服务,这种传统WAF模式,可以更直接深入到HTTP请求的协议的内部数据,过去我们将业务系统的日志,直接发给反抓站系统,当引入云WAF的时候,我们也可以通过WAF向其推送数据。

之前都是业务系统通过向kafka队列推送数据给反抓站系统进行数据分析,如果使用WAF向反抓站系统推日志数据也可以,是对地集群内的结点收集发送数据有管理成本。对反抓站系统来说WAF就是一个拦截模块,对于WAF来说反抓站就是一个分析模块, 反抓站可以把分析的结果告诉WAF进行拦截,子系统之间进行互动。

5 WAF与蜜罐

WAF与业务服务的连接方式,把原有域名指向,指向WAF集群,再由WAF集群回源到服务的负载均衡,完成http流量的分的拦截到放过,交给原有业务服务响应。WAF系统本身也提供了类似REST接口,将代码审计的威胁和反抓站DDOS的威胁,通过接口传给WAF拦截。这种模式,意味着,如是有人直接攻击WAF,使用UDP等垃圾数据攻击。这种情况,保留流量包pcap的原始数据,对后期分析就比较有意义了。

6 攻击流量记载

如果我们不想把WAF和业务进行串接,只想做流量监听,我们也可以不把DNS指向WAF集群,而是在代量服务那层通过HTTP-MIRROR等类似镜像技术,将HTTP流量复制一份到WAF,然后不做回源,将流量引入fake upstream,fake upsatream的响应会被上层的服务丢弃,如果我们想将威胁流量和威胁流量进行分开引流,可以再加入一个honeypot的upstream,收集威胁流量,这样主干业务上,请求的都是正常请求响应的,而在镜像给WAF的流量中,可以识别生产流量中存在的威胁请求,将威胁请求切到honeypot上进行威胁分流,因为不回源,只能做分类,不能做诱导性的数据收集,串接WAF的方式就可以,但如果真是把威胁流量引到真的honeypot上,honeypot本身也会发出报警,并收集payload。

7 日志中心

如果不满足于,只是将威胁流量记录到Honeypot上,也可以将流量在动态切换到Honeypot的服务时, 通过pcap录制技术将流量包记载,类似netflow的模式,按时间分割流量保存,并可重放。这样就不仅仅有日志文本、payload、还有原始的请求包,通过类似wireshark等工具仔细分析,后期也可以通过重放技术,把当时攻击发生时的流量,重放到靶机测机上,进行案发现场分析。

8 大数据与威胁报警

关WAF日志部分,WAF通过传统的Syslog吐出高中低危的报警事件和数据,更便于我们对攻击的行为的分析和定位,我们也可以将syslog日志数据收集到,自建的数据中心中,进行后期的分析与预警,有了报警数据,我们也可以将数据与其它子系统进行数据对碰。

9 总结

围绕被保护的WEB构建代码审计服务、WAF、反抓站分析、蜜罐、日志分析报警和Payload流量记载等多种方式,来监听WEB服务,发现攻击威胁,定位威胁。可以根据实际的应用场景和自身情况,选择商用服务、开源服务、或是自主构建安全系统都可以。 采用模块化的构建方法,每个子系统可能都有多种的实现解决方案,但始终离不开的都是流量的监听、数据落地、与后期分析、预警报告等阶段,后面我们也会选择使用具体的工具,来完成图上的安全系统建设。

基于Openresty+的WEB安全防护系统架构--转的更多相关文章

  1. 打破基于OpenResty的WEB安全防护(CVE-2018-9230)

    原文首发于安全客,原文链接:https://www.anquanke.com/post/id/103771 0x00 前言 ​ OpenResty® 是一个基于 Nginx 与 Lua 的高性能 We ...

  2. 基于Hadoop开发网络云盘系统架构设计方案

    基于Hadoop开发网络云盘系统架构设计方案第一稿 引言 云计算技术的发展,各种网络云盘技术如雨后春笋,层出不穷,百度.新浪.网易都推出了自己的云盘系统,本文基于开源框架Hadoop设计实现了一套自己 ...

  3. 基于Flume的美团日志收集系统 架构和设计 改进和优化

    3种解决办法 https://tech.meituan.com/mt-log-system-arch.html 基于Flume的美团日志收集系统(一)架构和设计 - https://tech.meit ...

  4. 基于Hadoop开发网络云盘系统架构设计方案第一稿

    引言 云计算技术的发展,各种网络云盘技术如雨后春笋,层出不穷,百度.新浪.网易都推出了自己的云盘系统,本文基于开源框架Hadoop设计实现了一套自己的网络云盘系统,方案为初步设计方案,不断完善中. 一 ...

  5. python_基于反射模拟Web框架路由系统

    根据用户输入的内容,导入模块 #根据用户输入的内容,导入模块 inp = input("请输入模块名: ") print(inp,type(inp)) dd = __import_ ...

  6. 系统架构:Web应用架构的新趋势---前端和后端分离的一点想法

    最近研究servlet,看书时候书里讲到了c/s架构到b/s架构的演变,讲servlet的书都很老了,现在的b/s架构已经不是几年前的b/s架构,其实b/s架构就是web应用开发,对于这样的架构我们现 ...

  7. 基于HTML5气3D仿真培训系统

    根据最近的上线HTML5的燃气3D培训仿真系统.曾经的老系统是採用基于C++和OpenGL的OpenSceneGraph引擎设计的,OSG引擎性能和渲染效果各方面还是不错的,但由于这次新产品需求要求能 ...

  8. 基于Hadoop开发网络云盘系统客户端界面设计初稿

    基于Hadoop开发网络云盘系统客户端界面设计初稿 前言: 本文是<基于Hadoop开发网络云盘系统架构设计方案>的第二篇,针对界面原型原本考虑有两个方案:1.类windows模式,文件夹 ...

  9. 基于OpenResty和Node.js的微服务架构实践

    什么是微服务? 传统的单体服务架构是单独服务包,共享代码与数据,开发成本较高,可维护性.伸缩性较差,技术转型.跨语言配合相对困难.而微服务架构强调一个服务负责一项业务,服务可以单独部署,独立进行技术选 ...

随机推荐

  1. Jetbrains 2018 等系列软件激活破解除去黄色警告框方法(含多个平台)

    现在以IDEA 2018软件在windows为例进行讲解破解方法,其它软件及其在不同平台的破解方法原理 大同小异,有需要的有兴趣的可以尝试一下. 最近更新了Intellij IDEA到2018.1.5 ...

  2. HDU 2896 病毒侵袭【AC自动机】

    <题目链接> Problem Description 当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻....在这样的时刻,人们却异常兴奋——我们能在有生之年看到500年一 ...

  3. idea springboot热部署无效问题

    Intellij IDEA 使用Spring-boot-devTools无效解决办法 springboot项目中遇到的bug <dependencies> <!--spring bo ...

  4. 洛谷.1333.瑞瑞的木棍(欧拉路径 Hash)

    题目链接 #include <cstdio> #include <cstring> const int N=2e6+5,M=5e5+5,mod=2e6; const int s ...

  5. 洛谷.2219.[HAOI2007]修筑绿化带(单调队列)

    题目链接 洛谷 COGS.24 对于大的矩阵可以枚举:对于小的矩阵,需要在满足条件的区域求一个矩形和的最小值 预处理S2[i][j]表示以(i,j)为右下角的C\(*\)D的矩阵和, 然后对于求矩形区 ...

  6. HDU.2829.Lawrence(DP 斜率优化)

    题目链接 \(Description\) 给定一个\(n\)个数的序列,最多将序列分为\(m+1\)段,每段的价值是这段中所有数两两相乘的和.求最小总价值. \(Solution\) 写到这突然懒得写 ...

  7. C中const 定义常量的使用

    先看如下代码 #include <stdio.h> #include <string.h> #define ARRSIZE(a) (sizeof(a)/sizeof(a[0]) ...

  8. 230. 二叉搜索树中第K小的元素

    230. 二叉搜索树中第K小的元素 题意 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素. 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数. ...

  9. solr中的一些常见错误

    (1)Caused by: java.lang.ClassNotFoundException: Unable to load jdbcDataSource or org.apache.solr.han ...

  10. UITableView滚动优化(RunLoop)

    链接: 利用RunLoop优化tableView RunLoop方式优化加载tableview RunLoop总结:RunLoop的应用场景(三)滚动视图流畅性优化 TableView加载图片的优化逻 ...