如何打造一款可靠的WAF(Web应用防火墙)

之前写了一篇《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》 (红宝书,还在看)

http://weibo.com/tanjiti

[本文作者/碳基体,转载须注明来自FreeBuf.COM]

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2014-12-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java工程师日常干货

docker化你的java应用(上)前言走进docker

在各种技术大会(互联网架构,云计算等等),哪都少不了docker的身影。docker为啥这么火?因为它解决了大部分企业的痛点:快速的持续集成,服务的弹性伸缩,部...

1201
来自专栏点点滴滴

关于Windows系统安装(一)

1196
来自专栏北京马哥教育

Linux 容器 vs 虚拟机 —— 谁更胜一筹

自从Linux上的容器变得流行以来,了解Linux容器和虚拟机之间的区别变得更加棘手。本文将向您提供详细信息,以了解Linux容器和虚拟机之间的差异。 Linu...

3044
来自专栏技术翻译

Linux容器的发展及其未来趋势

Linux容器是操作系统级虚拟化在单个Linux主机上提供多个独立Linux环境的技术。与虚拟机(VM)不同,容器不运行专用客户操作系统。相反,他们共享主机操作...

6210
来自专栏BestSDK

Kubernetes发布1.10版本:开发者可自己定义API

Container存储介面(Container Storage Interface,CSI)能让使用者像安装Pod一样,轻松安装Volume插件,而这使得第三方...

43111

OpenShift的容器镜像(第1部分):目标

这是我在EMEA红帽技术2017交流会议(Red Hat Tech Exchange 2017)上所做的文字记录,这是一个由所有的Red Hat解决方案架构师和...

3145
来自专栏编程坑太多

跟我一起学docker(一)--认识

2184
来自专栏逸鹏说道

KVM基于内核的虚拟机概念理解与客户机浅析

作为一个KVM的学习者,如果你想要自己完善一个KVM样品级的解决方案,仅仅学会图形化界面使用和简单的配置(详情见上一篇文章)是远远不够的。在上文中感谢@laow...

4134
来自专栏SDNLAB

新型云基础设施项目Airship 介绍

AT&T正在与SK电信(SKT),Intel和OpenStack基金会合作推出一个名为Airship的新型云开放基础设施项目。Airship的宣传语是“声明式地...

2272
来自专栏云计算D1net

想要使用容器技术 这5类遗留工具就应该被淘汰

充分利用容器并不只是安装Dockers和激活容器应用程序那么简单。你需要改进的同样还有监控方法、安全性能等。 这么做的理由是,容器并不只是对你过去工作中使用到的...

3538

扫码关注云+社区

领取腾讯云代金券