如何打造一款可靠的WAF

之前写了一篇《WAF防御能力评测及工具》,是站在安全运维人员选型WAF产品的角度来考虑的(优先从测试角度考虑是前职业病,毕竟当过3年游戏测试?!)。本篇文章从WAF产品研发的角度来YY如何实现一款可靠的WAF,灵感来自ModSecurity等,感谢开源。

本片文章包括三个主题

(1) WAF实现
WAF包括哪些组件,这些组件如何交互来实现WAF防御功能
(2)WAF规则(策略)维护
规则(策略)如何维护,包括获取渠道,规则测试方法以及上线效果评测
(3) WAF支撑
WAF产品的完善需要哪些信息库的支撑

一、WAF实现

WAF一句话描述,就是解析HTTP请求(协议解析模块),规则检测(规则模块),做不同的防御动作(动作模块),并将防御过程(日志模块)记录下来。不管硬件款,软件款,云款,核心都是这个,而接下来围绕这句话来YY WAF的实现。WAF的实现由五个模块(配置模块、协议解析模块、规则模块、动作模块、错误处理模块)组成

1. 配置模块

设置WAF的检测粒度,按需开启,如图所示

2. 协议解析模块(重点)

协议解析的输出就是下一个模块规则检测时的操作对象,解析的粒度直接影响WAF防御效果。对于将WAF模块寄生于web 服务器的云WAF模式,一般依赖于web 服务器的解析能力。

3. 规则模块(重点)

重点来了,这块是WAF的核心,我将这块又细分为三个子模块。

(1) 规则配置模块

IP黑白名单配置、 URL黑白名单配置、以及挑选合适的规则套餐。

(2)规则解析模块

主要作用是解析具体的规则文件,规则最好采用统一的规则描述语言,便于提供给第三方定制规则,ModSecurity这方面做得非常优秀。

规则文件由四部分组成,分为变量部分、操作符部分,事务函数部分与动作部分。

(3)规则检测模块

上一步我们设置了各种变量,接下来就是按照一定的逻辑来做加减乘除了。

4. 动作模块(重点)

通过规则检测模块,我们识别了请求的好恶,接下来就是做出响应,量刑处理,不仅仅是拦截。

5. 日志模块(重点)

日志处理,非常重要,也非常火 热,内容丰富到完全可以从WAF独立出来形成单独的安全产品(e.g.日志宝)而采用提供接口的方式来支撑WAF。对于数据量巨大的云WAF,都会有单独 的大数据团队来支撑架构这一块,包括数据存储(e.g. hdfs) ,数据传输(kafka),数据离线分析(hadoop/spark),数据实时分析(storm),数据关联分析(elasticsearch)等等, 以后另开一篇单独说明。

6. 错误处理模块

以上模块运行错误时的异常处理

二、WAF规则(策略)维护

WAF需要修炼一图以蔽之

三、WAF支撑信息库

WAF需要修炼一图以蔽之

以上支撑库几乎所有的安全人员都在重复地做,而资源没有共享的原因,一是内部不可说;二是没有采取统一的描述语言无法汇合,唉,安全从业人员的巴别塔。

四、补充知识(包括文章与代码)

想想写了这么多文章,自我感觉萌萌哒!

WAF相关

WAF防御能力评测及工具

ssdeep检测webshell

ModSecurity相关文章(我就是ModSecurity的死忠粉)

[科普文]ubuntu上安装Apache2+ModSecurity及自定义WAF规则

ModSecurity SecRule cheatsheets

ModSecurity CRS 笔记、WAF防御checklist,及WAF架构的一些想法

ModSecurity 晋级-如何调用lua脚本进行防御快速入门

ModSecurity 白名单设置

指纹识别

Web应用指纹识别

FingerPrint

IP相关

使用免费的本地IP地理库来定位IP地理位置-GeoIP lookup

获得IP的地理位置信IP Geolocation及IP位置可视化

IP地理信息离线获取脚本

IP地理信息在线获取脚本

识别搜索引擎脚本

判断使用哪家CDN脚本

代理类型判断脚本 Proxy探测脚本与HTTP基本认证暴力破解脚本

CDN架构

网站负载均衡技术读书笔记与站长产品的一点想法

正则优化

NFA引擎正则优化TIPS、Perl正则技巧及正则性能评测方法

HTTP发包工具

HTTP.pl——通过HTTP发包工具了解HTTP协议

HTTP发包工具 -HTTPie

WAF实现的思维导图

参考:

ModSecurity  Handbook

第八、九、十,十一我是反复看,每次都有新的灵感,第14、15章是当成新华字典看的,以免遗忘。

Web Application Defenders Cookbook Battling Hackers and Protecting Users》 (红宝书,还在看)

FreeBuf推荐:碳基体MM微博

http://weibo.com/tanjiti

时间: 2024-10-29 08:03:25

如何打造一款可靠的WAF的相关文章

打造一款属于自己的web服务器——最后的一点完善

上一篇我们通过反射实现了动态加载多个controller,就功能上来说整个项目已经基本上完成了,但是目前我们仍然还有一些问题,例如模板支持不好.很多配置信息硬编码不好修改.此外,我们预期的目标是实现一个可嵌入的jar,以实现web服务,而就目前而言明显是不行的.那么我们现在就来解决这些问题. 一.使用velocity拓展模板    想要实现一套完善的模板还是比较麻烦的,所以目前我们考虑使用java支持的模板来实现,目前比较常用的有Freemaker,Velocity等,因为比较熟悉velocit

打造一款属于自己的web服务器——从简单开始

距离开篇已经过了很久,期间完善了一下之前的版本,目前已经能够完好运行,基本上该有的功能都有了,此外将原来的测试程序改为示例项目,新项目只需按照示例项目结构实现controller和view即可,详情见: easy-httpserver. demo-httpsrever.    这次我们将首先来实现一个简单版本,该版本只包括一些基本的功能,后续版本也将在此基础上一步步改进. 一.准备工作 俗话说的好,工欲善其事,必先利其器.我们在开始开发之前应做好如下准备(真的很简单): java开发环境,IDE

从手游测试的角度,如何打造一款好游戏

5月15日,TestBird COO卫少峰在重庆西游汇创业咖啡,携手曲速资本投资总监Jerry.天象互动副总裁蒙琨.墨灵科技CEO白亮等一众大拿,参加“重庆移动游戏DEMO秀”并根据TestBird手游云测平台一年多来的游戏与测试经验,介绍了从手游测试的角度,如何打造一款好游戏. 开场卫少峰向现场开发者抛出了三个问题: 1.好游戏的兼容性到底如何? 2.大部分游戏得不到高分,为什么? 3.如何做好游戏的兼容性? 问题提出后引起了在场开发者们的热烈讨论,而卫少峰在随后的讲话中说出了问题的答案. 好

想打造一款成功的移动应用?你最需要关注性能指标!

其实,对于做应用开发的团队来说,有一件事非常清楚,就是如果想做一款成功的五星级移动应用,真的需要经历一段漫长的旅途.开发.测试以及发布移动应用程序只是走向成功的第一步.国内 APM 领域新兴领军企业 OneAPM 建议开发者一定要重点关注移动应用的性能指标. 诚然,想打造一款成功的移动应用绝非易事,我们需要很多评判标准.我们暂且不管如何来定义成功:你希望打造品牌也好,挣更多的钱也罢,还是为了获得更多的用户.总之,你都需要正确的衡量标准,只有这样你才能不断地优化应用程序,或者说完成对应用程序进行升

如何打造一款出色的APP

本文主要是讲述如何打造一款出色的APP,更多android开发技术专业知识,请登陆疯狂软件教育官网. 在这个移动互联网时代各种各样的APP层出不穷,有的APP从始至终就没有被用户接受.有的APP火爆一时最终也是昙花一现.APP是O2O.移动支付.游戏等领域在移动端不可缺少的载体,那么如何打造一款出色的APP成了众多创业者关注的话题.环球漫游APP从“冷启动“到现在被众多用户接受并使用,这其中指定会有很多宝贵的经验.下面环球漫游CTO杜长伟给我们分享APP创业干货,从中,我们可以了解打造一款出色的

[原创]jquery+css3打造一款ajax分页插件

最近公司的项目将好多分页改成了ajax的前台分页以前写的分页插件就不好用了,遂重写一个 支持IE6+,但没有动画效果如果没有硬需求,个人认为没必要多写js让动画在这些浏览器中实现css3的动画本来就是帮我们取代js中这部分动画代码的使js更纯粹地去实现逻辑 效果图如下: 调用代码如下: 包括常用的加载失败重试,参数可配置是否能手动输入页码,设置按钮数目,可以调用多个page等等,调用代码很简便 <script type="text/javascript"> var kpag

打造一款人见人爱的ORM(一)

      "很多人都不太认可以第三方ORM,因为考虑的点不够全面,没有用户群体大的ORM有保证,这点是不可否认确是事实.但是往往用户群体大的ORM又有不足之处,今天我们就来聊聊关于ORM的话题,打造一款人见人爱的ORM框架." 小程简介       季健国(蚂蚁Ant),10年的工作经验, 7年的IT经验是一枚名副其实的老菜鸟.技术无边界,编程靠思想.目前主要研究方向为ORM底层核心,爬虫,WebAPI,SOA,Docker,Xamarin,微信小程序,微服务架构:个人爱好:阅读,跑

[原创]zepto打造一款移动端划屏插件

最近忙着将项目内的jquery 2换成zepto 因为不想引用过多的zepto包,所以花了点时间 zepto真的精简了许多,源代码看着真舒服 正好项目内需要一个划屏插件,就用zepto写了一个 逻辑其实很简单,但没想到测试时,在老版本android设备浏览器上的touchmove有许多bug 做兼容倒是搞了一阵 效果图 样式1 样式2 调用 正常情况下应该是后台生成的html代码,但还是写了一套操作tab页的方法 调用简便如下: <link rel="stylesheet" hr

亚马逊无货源打造爆款核心要素让你轻松赢得老外的心!

无数的亚马逊卖家都希望能够打造出爆款,让产品在官方首页上得以展示,但这不意味着能够得到更多的订单,赚取更多的利润,同时还有可能远超竞争对手,拥有进人壁垒,保护市场占有率上的优势.既然打造亚马逊爆款如此重要.那么需要卖家做些什么呢? 一.亚马逊对于卖家的要求亚马逊作为知名的国际性电商平台,目前不但对申请入驻的新卖家的审核标准越来越高,同时对已人驻的老卖家的考核指标越来越高.非常明显的一个趋势就是要卖家实现品牌化,要卖家精细化运营"小面美"的店铺,卖家要想在亚马逊上打造爆款就必须是迎合这种