在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
WAF主要分为硬件WAF和软件防火墙,硬件WAF如绿盟的NSFOCUS Web Application Firewall,软件防火墙比较有名的是ModSecurity,再就是代码级别的ngx_lua_waf。下面谈谈个人对几款防火墙的理解: 硬件WAF个人觉得只适合在那种访问量较少的网站,比如政府网站,公司的介绍网站等等。硬件WAF的的优势在于规则有专门的安全公司维护,管理方便,但也存在一个致命的弱点,使用传统的方式来解包到应用层对性能的需求较高,而且当访问量很大的时候延时比较大,这样在高并发访问的情况下要使用硬件WAF就只能使用很多台WAF了,这样成本就非常高了;还有一个在接触过程中发现的问题,就是硬件WAF的规则虽然多而且有人维护,但是一般公司很难敢直接开启阻难,很多都是只记录,并不能阻难,这样WAF的意义就变得小多了。 ModSecurity在网上的评价都是很高的,性能高,规则全。最开始我研究的也是这款WAF,但是在实际使用过程中发现问题,就是在高并发的情况下,运行一段时间,会出现内存飙升,而且不下来的问题。这个问题再ModSecurity的讨论论坛上面也发现了有人提出这样的问题,但一直未解决(https://github.com/SpiderLabs/ModSecurity/issues/785)。针对于规则全的优势,一般使用者也不敢直接开启所有的规则拦截,毕竟每个公司的业务不同,规则也不可能直接套用。 基于高性能,低成本的想法,发现了@loveshell开发的ngx_lua_waf,经过实际使用下来,确实性能极好,由于LUA语言的性能是接近于C的,而且ngx_lua_module本身就是基于为nginx开发的高性能的模块。安全宝的云 WAF,以及cloudflare的新waf也是基于此模块使用LUA开发的。结合ModSecurity的思路,参考@loveshell的ngx_lua_waf来开发适合自己用的WAF,其中使用了很多@loveshell的函数,再此也表示感谢。 0x01 WAF框架设计WAF开发过程中的主要方向为:
WAF的主要功能为:
WAF的总体检测思路:
图示如下: 0x02 规则格式分析规则说明: 比如规则:{"rule00001","rules","args|post|cookie",[[../]],"deny","logon"}, rule00001:规则编号,随意写 rules:规则名称,如xs-s-rules,随意写 args|post|cookie|header:检测位置,|表示或,args,post,cookie,header可多选 ../:匹配的正则表达式,标准PCRE正则 deny:处理方式,可选deny ,allow logon:日志记录与否,可选logon,logoff 0x03 cc攻击防护代码示例
0x04 优势举例可以很灵活的实现复杂的控制 比如我在我的个人网站上面就使用了这样一个功能,后台页面需要特定useragent才能访问。 代码如下:
可以测试http://www.zhangsan.me/wp-admin/ 只有在特定的useragent才可以访问此页面,否则报403错误。 0x05 源码下载及使用源码下载地址为:http://pan.baidu.com/s/18QQya 环境搭建就参考:http://wiki.nginx.org/HttpLuaModule#Installation waf使用主要就是配置config.lua SecRuleEngine = "on" attacklog = "on" logpath = "/home/waflog/" 分别为引擎是否开启 是否记录日志 日志的存储路径 日志的存储路径需要给予nginx运行用户的读写权限 0x06 后续研究方向
写的很简单,大牛勿喷,希望大家多提建议。 0x07 参考资料1. https://github.com/loveshell/ngx_lua_waf 2. http://wiki.nginx.org/HttpLuaModule 3. http://www.freebuf.com/tools/54221.html …… |
请发表评论