之前写了一篇《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相关
ModSecurity相关文章(我就是ModSecurity的死忠粉)
[科普文]ubuntu上安装Apache2+ModSecurity及自定义WAF规则
ModSecurity SecRule cheatsheets
ModSecurity CRS 笔记、WAF防御checklist,及WAF架构的一些想法
ModSecurity 晋级-如何调用lua脚本进行防御快速入门
指纹识别
IP相关
使用免费的本地IP地理库来定位IP地理位置-GeoIP lookup
获得IP的地理位置信IP Geolocation及IP位置可视化
代理类型判断脚本 Proxy探测脚本与HTTP基本认证暴力破解脚本
CDN架构
正则优化
NFA引擎正则优化TIPS、Perl正则技巧及正则性能评测方法
HTTP发包工具
参考:
第八、九、十,十一我是反复看,每次都有新的灵感,第14、15章是当成新华字典看的,以免遗忘。
《Web Application Defenders Cookbook Battling Hackers and Protecting Users》 (红宝书,还在看)
FreeBuf推荐:碳基体MM微博
[本文作者/碳基体,转载须注明来自FreeBuf.COM]
不容错过
- 如何破解12位+字符的高强度密码?secist2017-01-18
- Hash传递攻击Windows2012远程桌面litdg2013-10-31
- VxWorks Fuzzing 之道:VxWorks 工控实时操作系统漏洞挖掘调试与利用揭秘知道创宇2016-01-15
- 韩剧《幽灵》中的黑客工具都有哪些?raycel2016-01-19
0daybank
已有 44 条评论
真的很详细很全面,而国内大部分的waf,应该是可以绕过的
@ softbug 攻,防一直在变,在保证业务连续性的基础上部署waf提高了攻击门槛,效果还是比较明显的 :)
@ 浆泥
就是想着折腾人家会如何来伤害你,增加新的防御机制,才导致了漏洞的产,每1000行代码就有x个漏洞的定律,防进度是不断上升而防千百次 只需攻击成功一次,完全不等比。ps3最新固件几年没破解ps4都出来了,你能说螺旋式的上升吗?NSA不考虑后门植入 一年靠技术挖掘能找到多少个能够利用的漏洞?而漏洞补了便毫无价值,已知情况下当然攻防对立你知我,我知你,但只要你不知道一次我就赢了,哪怕城墙再高考虑再多都是浮云。
@ ? 从攻击角度来看的确如此,做为防护方来说,肯定不能指望一个waf或几台设备就能保证安全,在攻击只需个点而防护是一个面这么个不平等的环境下,只能纵深防御,结合自身业务特点防护,架个waf只是希望提高攻击门槛,上面说效果比较明显并不是想表达一个waf就行了,但那句话确实容易让人误解
@ softbug 国内的话是一个团队。而绕Modsecurity 的背后,则是开源世界的强大力量。。。攻与防 总在螺旋式的上升。哈哈
谔谔
颜射KFMM
好厉害的妹子
这妹子很强大..
看到了 “红宝书” 然给我想起了 我的考研时代。估计,今年 肖四套 又会很火。。。。期待与你交流————来自Freewaf项目组
想想看了这么多碳基体文章,自我感觉萌萌哒!
奥,忘记了说,我的红宝书《Modsecurity 2.5 》 比较老,没有中文,得自己翻译。。。。推荐下这本书,挺不错的。
碳基体牛B
还可以,广度有了,没什么深度。
@ netbutless 你行你发一篇来看看?最讨厌你这种装逼的
@ tk 哦。
很不错,,打算把这个作为毕业设计,,,如果有更详细的资料就更好了
好萌的妹子啊
妹子笔记写的真不错 我只是来看看妹子
Centos下使用modsecurity配合tengine实现不错的waf
http://www.cy3ber.com/post/266460_26d533c
我是来围观妹纸的,膜拜已久。。。
嗯,写的确实不错。
都结婚了好么
我一直当你是汉子…
据说已经有主,右边还是死心吧
//: 是安全圈为数不多且有真才实学的萌妹子。据说比较高冷,小编多次索求电话无果……
小编这样真的好嘛。
确属精品,值得学习。迅雷即将上线的WAF,主要特点:云规则库,各agent自动定时更新规则;云日志库,拦截日志自动上报;拦截过的地址自动纪录N分钟供分析改进。
WAF能够被绕过并不是一个重要问题,WAF还要考虑性能、与应用的兼容等很多方面,每增加一条正则就会降低性能、增加与应用冲突的可能性,能做好平衡才是最关键的。
难得一见的好文章。
妹子又来了。。。
顶!!!
→_→
写的博错,把我的思路完全展现出来了!
给学霸跪了。
现在这种资料很少,即使有人懂,也不会轻易分享出来, 妹子的确不错 妹子离着跳槽不远了 很快就有猎头找你了
没一定的研究,画不出这样的图。@碳基体,如何联系你?
文章写的不错啊,没想到web防火墙还有这么多东西呢
已火速围观女神
我这里怎么不显示图片呢。求解答。
很不错的WAF总结
很不错的WAF总结
对我很有帮助的资料,感谢~
嗯 写的很详细了~
推理:博主的名字由来—正切函数tan(x)—>tangent—>碳基体