前言:本文中的“雷池”均指“雷池社区版”,专业版会特别标注
检出效果及性能
检出效果对比
对于 WAF 检出效果,社区中已经有了相关的文章可以参考
六款免费 WAF 的测试报告 – CT Stack 安全社区 (chaitin.com)
这里仅引用最后放出的对比表格,要看更详细的数据请点击上方链接阅读原文
WAF 名称 | 漏报数量 | 误报数量 | 准确率 | 平均处理时间 |
---|---|---|---|---|
雷池社区版 | 149 条 | 38 条 | 99.44% | 0.73 毫秒 |
Coraza | 171 条 | 5182 条 | 84.10% | 3.09 毫秒 |
ModSecurity | 175 条 | 7381 条 | 77.56% | 1.36 毫秒 |
宝塔 WAF | 351 条 | 96 条 | 98.67% | 0.53 毫秒 |
ngx-lua-waf | 362 条 | 475 条 | 97.51% | 0.41 毫秒 |
SuperWAF | 437 条 | 46 条 | 98.57% | 0.34 毫秒 |
但是由于“CT Stack 安全社区”是长亭的网站,所以我有理由怀疑可能对雷池本身具有一定的“偏心”,于是我以“雷池”,“waf对比”,“开源waf”等为关键词在 Google 和 Bing 上搜索文章,最终整合为下述引用:
来自互联网的评价
在知乎的这个提问的一个回答中提到
对雷池性能的评价
可靠的数字为 11000 QPS 时可以基本保证 CPU 占用为 1 核且内存不会持续上涨
对Modsecurity的评价
modSecurity 主要是规则验证(验证已知漏洞)
在我们的技术交流群中有人提到
对宝塔云WAF的评价
宝塔WAF防御效果还行
来自我的评价
众所周知宝塔出了个免费的WAF,并且不需要绑定宝塔账号就能用,但是怎么感觉这个价格还不如去买雷池专业版呢??
那么我们再看看雷池和宝塔的demo
雷池demo:长亭雷池 WAF (chaitin.cn)
宝塔demo:堡塔云WAF (bt.cn)
很明显,宝塔成甩手皇帝了,连版本都不是最新的
宝塔直接把demo做成企业版授权,我认为这样对个人用户来说非常没有参考价值
雷池的demo版本通常会及时跟进最新版,并且官网demo也是大多数人在使用的社区版
在某些情况下,demo会更新至beta版
例如在之前我还在使用稳定版3.16.1的时候,官方demo已经更新至4.0.0-beta.*,这很有助于我评估新版本是否值得升级
还有一个免费WAF是uuWAF(南墙),但社区活跃太低了,也没有看到有人测试防御能力,但这款防火墙我也用了很久,但总体体验感很一般,具体案例就放在这折叠显示了,想看的可以自己戳开看看我从喜欢uuWAF到彻底放弃uuWAF的过程
最开始知道uuWAF是在1Panel上看到的,当时1Panel说会弄一个开源WAF放进应用商店里
最开始用的时候体验还是很好的(唯独不好的是OTP认证用的算法更新,没法用微软的Authenticator对我来说很不方便,Google的身份验证器也不能用,但是FreeOTP可以,社区中有人说群晖的验证器也可以用)
用了一段时间后发现uuWAF的操作逻辑很奇怪也很难用,在你编辑站点的时候明明想只修改某个选项,却必须走一遍所有的配置流程,效率很低
之后我干脆换成了雷池 WAF,但是很快就发现雷池不能自定义防御规则,比如默认的 XSS 规则里有一条在我的环境下会不断误报,此时只能禁用掉 XSS 规则,而不能单独修改某个匹配规则
所以我就换成了公网雷池内网 uuWAF 的双防火墙方案,雷池初步过滤流量,uuWAF 在后面自定义规则
但是这样做我发现一个严重的问题,在某次被攻击后,雷池挡掉一些,另一些被发给后端的 uuWAF 了,结果呢,uuWAF 给死了,这就出现了最前面的雷池没死,我专门用来流量转发用的软件没死,后端 OpenResty 没死,唯独 uuWAF 死了,当时部署 uuWAF 的服务器是 4c8g 的,日常使用占用并不高
自从这次事故后我就直接下掉 uuWAF 了,毕竟这太不稳了
WAF 功能对比
本表只包含某种程度上能算作是非基础功能的对比,基础功能会被拆分为几个较大的板块作为对比
功能名称 | 雷池 | 宝塔云WAF | uuWAF |
---|---|---|---|
CC攻击敏感度 | 适中且可调 | 社区反馈过于敏感 被笑称“WAF是用来防CC的” | WAF没抗住流量 被打死了 |
WordPress 误报 | 某些插件误报较多 (如连接至Matomo 保存时会向服务器 发送一些代码段) | 误报较少,但我认为 是检测不出来 | 误报较多 |
易用性 | 萌新上手较快的同时保留了 | 适合新手,配置方式更类似于 配置文件可视化 | 偏低,操作麻烦 |
自由度 (可自定义性) | 适中,可使用黑白 名单进行限制 支持IP、Host、 Header/Body 支持地区限制(需专业版) 可直接编辑配置文件 实现更多功能 自定义规则不支持or | 自定义规则的选项很杂 (可能是为了优化性能吧) 自定义规则支持or 支持直接TCP转发 | 可根据官方API文档对 规则高度自定义 支持自己写lua脚本 |
资源缓存 | 暂不支持(问过官方, 说后续会加) | 有且可配置 | 有且可配置 但与宝塔云WAF相比有点难用 |
拦截页面美观程度 | 大气 | 内容全挤一块 | 有一个上锁的动画,但是 感觉奇奇怪怪的 |
拦截响应 | 403或者200(官方说200 容易误导攻击者) | 支持设置默认拦截页(403) 或Nginx独有的444 (即不响应任何内容) | 默认都是403,支持lua自定义 |
负载均衡 | 专业版支持 | 公测期免费 | 完全免费 |
大屏监控 | 无 | 有 | 无 |
是否有免费版 | 有 | 有 | 有 |
专业版价格 | 299一个月,1799一年 | 999一年 | 无 |
企业版价格 | 10000一年起 | 9993一年 | 价格面议 |
雷池专业版
因为宝塔云 WAF 的 demo 已经是专业版了,考虑入不入可以直接看官方 demo,故此文不专门介绍
专业版是支持日志导出的,但这个“导出”两个字属实有点。。。一言难尽
专业版支持负载均衡,算法就是最常用的轮询、最小连接数、IP 短哈希
在黑白名单方面(人机验证也支持这样选)新增支持了“国家/地区”和“省和地区”两种匹配目标,并且可选项很多,然后我发现它支持打字搜索选择,这点大大的好评!!
在 IP 情报这里支持升级为加强版情报了
在采集方面专业版没有太大的区别,看起来缓存功能还没做呢
专业版在补充规则上的设置项已经全部开放了,设置成平衡防护就是社区版强制使用的规则
使用 WAF 后的常见问题
后端无法获取真实IP
在后端 Nginx 配置文件中添加:
set_real_ip_from 0.0.0.0/0 ;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
至于 Apache 怎么搞,我没接触过,请自行 Google
不想网络结构有大改动
这点貌似只有雷池支持,你可以使用旁路接入的方式直接集成防护能力在后端
雷池的缺点
注:仅代表个人观点,如果你认为有异议或者对我的解决方案有更好的建议,欢迎评论区讨论
人机验证流程
这是雷池官网的流程图
此时会有两种需求,第一种是目前流程能实现的,也就是希望白名单的IP不进行任何过滤
第二种是希望某条件下不匹配任何规则却希望进行人机验证的,那就需要先进行验证再匹配白名单了
咨询官方得知第二种需求在企业版上可以实现,但我的 0 成本解决方案是再部署一台雷池,把语义分析全部关掉,然后只开人机验证,这样就可以先匹配人机验证再转发到第二台雷池去过滤流量了
黑白名单规则不支持 or
在添加规则时,条件只能为 AND 不能为 OR,如果需要 or 匹配只能一条条的添加规则
官方给出的解释是代码开发太复杂,且可以通过一条条加规则实现 or
黑白名单规则不支持导出
emm如果我想快速配置多台服务器这样会很麻烦,如果有导出功能会好些,此外如果我想分享某些规则给社区也将更方便
这个目前没想到什么解决方法,不过或许可以对数据库下手?
证书申请仅支持 HTTP 验证
目前仅支持使用 HTTP 方式申请,并且只支持 Let’s 的证书,不支持 ZeroSSL
对此我发现在雷池的安装目录下的 resources/nginx/certs 目录下就存放了证书,可以通过面板生成证书时向本地某目录复制一份证书文件的功能再配合一个定时脚本来实现自动同步面板生成的证书
补充规则在社区版上不支持关闭
这个我认为是比较反人类的设计了,社区版虽然不支持使用更高级的“高强度防护”,但不应该强制使用平衡防护,应该在平衡防护的基础上有一定的自由度,最起码是支持关闭这里的防护,毕竟如果这里一直误报而且还不能关那想想就很折磨人
暂无评论内容