跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • ngx_waf–完整、简单、高性能的 nginx 防火墙模块
未分類
3 4 月 2021

ngx_waf–完整、简单、高性能的 nginx 防火墙模块

ngx_waf–完整、简单、高性能的 nginx 防火墙模块

資深大佬 : c137rick 0

ngx_waf 是一个用 C 语言开发的 nginx 防火墙模块。

相关链接

Github: https://github.com/ADD-SP/ngx_waf

文档也可以在 Github 上找到,文档自认为很详细。

功能完整

  • IP 黑白名单,支持 IPV4 和 IPV6,支持地址块的表示。
  • CC 防护,自动拉黑恶意 IP 一段时间。
  • URL 和 Referer 黑白名单,使用正则写规则。
  • POST 、User-Agent 、Query String 和 Cookie 黑名单,使用正则写规则。

使用简单

配置简单,配置只需要五行。提供默认规则,开箱即用。

# 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 ~

大佬有話說 (3)

  • 資深大佬 : no1xsyzy

    话说正则引擎这东西能够被恰当地优化来避免它造成损伤吗?
    最近看到 https://blog.doyensec.com/ 这个思路非常神奇
    (也不妨在该项目相关文档中推荐一下如何“避免被 ReDoS”)
    (话说 benchmark(,,,,,) 这种恶意负载该条规则的匹配时间会是随逗号数量的平方时间吧)

  • 主 資深大佬 : c137rick

    @no1xsyzy #1 这个问题之前有考虑过,不过貌似不需要做优化。因为本模块使用 pcre 库,而 pcre 已经提供了两种方式可以在一定程度上限制了回溯的次数。

    第一种方式就是在编译时通过指定 `–with-match-limit=n` 参数来限制主循环计数器的上限,超出上限自动结束。

    第二种方式就是在运行时修改计数器的上限,有相应的函数。

    再加上开发版中已经开始缓存正则的匹配结果,故本模块有一定的抗 ReDos 能力。

    我在项目文档里提一下这个问题吧,不过似乎并不那么严重。

    如果我说的有什么问题欢迎指教。

  • 主 資深大佬 : c137rick

    @no1xsyzy #1 如果不谈本模块,想要通过优化正则引擎来避免 ReDoS 的话我暂时我没想到什么好的办法。我想要不然限制回溯次数,要不然用不会回溯的正则引擎。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具