ngx_waf 是一个用 C 语言开发的 nginx 防火墙模块。
Github: https://github.com/ADD-SP/ngx_waf
文档也可以在 Github 上找到,文档自认为很详细。
配置简单,配置只需要五行。提供默认规则,开箱即用。
# on 表示启用,off 表示关闭。
waf on;
# 规则文件所在目录的绝对路径,必须以 / 结尾。
waf_rule_path /path/to/rules/;
# 防火墙工作模式,STD 表示标准模式。
waf_mode STD;
# CC 防御参数,1000 每分钟请求次数上限,60 表示超出上限后封禁对应 ip 60 分钟。
waf_cc_deny_limit 1000 60;
# 用于缓存检查结果的内存空间的大小,设置为 10 MB 。目前仅开发版可用。
waf_cache_size 10m;
IP 黑白名单的检查花费常数时间,即花费的时间与 IP 黑白名单的规模无关。
其余的检查会挨个匹配正则,直到匹配到为止。匹配结果会被缓存起来,下次检查时就可以直接读取缓存的结果。目前仅开发版启用了缓存,经过测试已经基本稳定。
POST 检查的结果不会缓存,因为太占内存。
如果你愿意的话也可以测试性能哦,有问题的话欢迎指教。
之前的帖子:一个 nginx 防火墙模块: ngx_waf
之前在 V2EX 宣传过这个项目,现在再发一次的理由是优化了性能,原本都是暴力循环的,现在都已经优化了。
再发一次的目的自然是想多涨点 star,所以如果觉得好用的话记得点个 star ~
1
no1xsyzy 2021-04-01 00:27:39 +08:00
话说正则引擎这东西能够被恰当地优化来避免它造成损伤吗?
最近看到 https://blog.doyensec.com/ 这个思路非常神奇 (也不妨在该项目相关文档中推荐一下如何“避免被 ReDoS”) (话说 benchmark(,,,,,) 这种恶意负载该条规则的匹配时间会是随逗号数量的平方时间吧) |