爱意满满的作品展示区。
c137rick

一个 nginx 防火墙模块: ngx_waf

  •  
  •   c137rick · Dec 12, 2020 · 4120 views
    This topic created in 2004 days ago, the information mentioned may be changed or developed.

    用过一段 ngx_lua_waf,但是由于这个项目很久不更新了,而且由于缺少拉黑整个网段,不支持 IPV6 等缺点就没有再用下去。但我确实有用防火墙的需求,所以自己用 C 写了一个 nginx 防火墙模块。

    欢迎指教!

    功能

    • IPV4 和 IPV6 黑白名单。IPV4 支持点分十进制写法,同时支持 192.168.0.0/16 这种方式指定一个网段。IPV6 支持冒号十六进制写法,同时支持 fe80::/80 这种方式指定一个网段。
    • CC 攻击防御。自定义每分钟的访问次数上限,超出上限自动自动拉黑一段时间,时长自定义。
    • POST 内容黑名单(支持正则)。
    • URL 黑白名单(支持正则)。
    • GET 参数黑名单(支持正则)。
    • Referer 黑白名单(支持正则).
    • Cookie 黑名单(支持正则)。
    • UserAgent 黑名单(支持正则)。

    v2.2.0-beta-2 开始本模块开始支持 IPV6,如果有需要请下载对应的版本。

    项目地址

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

    Supplement 1  ·  Dec 13, 2020
    如果觉得项目不错就点个 star 吧,让作者更有动力维护下去。
    Supplement 2  ·  Dec 14, 2020
    如果有什么问题最好在 Github 开一个 issue,v2ex 不知为何有时收不到回复提醒。
    18 replies    2020-12-17 23:51:00 +08:00
    Girls
        1
    Girls  
       Dec 12, 2020
    好,不错!怎样才能防采集呢?
    37Y37
        2
    37Y37  
       Dec 12, 2020
    有点厉害呀,支持
    Girls
        3
    Girls  
       Dec 12, 2020
    我有上百个包含 IP 段的黑名单文本文件,如不合并成一个文件的情况下,该如批量何引用进去呢?
    c137rick
        4
    c137rick  
    OP
       Dec 12, 2020
    @Nangle 从防火墙角度来说防采集一般通过限制 IP 的访问频率和拉黑 IP 实现,前者可以用本模块的 CC 防御功能。

    目前暂未支持多个 IP 黑名单,目前只能合并到同一个文件内。如果觉得有必要可以在 Github 上开一个 issuse 讨论一下。
    IvanLi127
        5
    IvanLi127  
       Dec 12, 2020 via Android
    给大佬点赞😘
    rateltalk
        6
    rateltalk  
       Dec 12, 2020 via iPhone
    同问,如何防止一些恶意请求
    raaaaaar
        7
    raaaaaar  
       Dec 12, 2020 via Android
    你们都是写得差不多了才开始宣传的吗,这都几个月了。。
    PerFectTime
        8
    PerFectTime  
       Dec 13, 2020   ❤️ 1
    @raaaaaar #7 要不然开个坑自己写不下去了,不就被人说放鸽子
    c137rick
        9
    c137rick  
    OP
       Dec 13, 2020
    @s609926202 模块带有一些默认的规则,可以在 `rules` 文件夹下查看。对于一些常规的脚本扫描请求,定期看看 access.log 写点正则就差不多了,CC 防御也能限制一下扫站的脚本。
    c137rick
        10
    c137rick  
    OP
       Dec 13, 2020
    @raaaaaar #7 主要是觉得完成了 IPV6 支持后宣传比较好。
    learningman
        11
    learningman  
       Dec 13, 2020 via Android
    提个小建议,progress 可以改叫 roadmap
    c137rick
        12
    c137rick  
    OP
       Dec 13, 2020
    @learningman #11 progress 指向一个纯文字的项目开发进度说明,感觉 roadmap 最好有图,文字类的通常不像图那么直观。
    privil
        13
    privil  
       Dec 14, 2020
    @c137rick #10 你好,想请问一下 CC 防护 是否可以考虑增加一个 访问频繁转跳验证码的功能,验证码通过则可以访问,否则锁定一段时间持续要求填写验证码,大部分 toC 的业务层可能更需要这种功能,尤其是业务规模不大的情况下,又遇到刷单的问题。
    privil
        14
    privil  
       Dec 14, 2020
    error: ‘for’ loop initial declarations are only allowed in C99 mode 编译安装报错了……
    c137rick
        15
    c137rick  
    OP
       Dec 14, 2020
    @privil #10 #11 两个问题去 Github 上各开一个 issue 吧,不知为什么 V2EX 这里有时收不到回复通知。
    c137rick
        16
    c137rick  
    OP
       Dec 14, 2020
    @privil #13 #14 两个问题去 Github 上各开一个 issue 吧,不知为什么 V2EX 这里有时收不到回复通知。
    myqoo
        17
    myqoo  
       Dec 17, 2020
    还是用 OpenResty LUA 实现比较稳妥。用 C 一个不小心出现个内存 bug 问题就大了。
    c137rick
        18
    c137rick  
    OP
       Dec 17, 2020
    @myqoo #17 这倒是真的,有一个 VM 不用关注内存管理。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   963 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 66ms · UTC 22:07 · PVG 06:07 · LAX 15:07 · JFK 18:07
    ♥ Do have faith in what you're doing.