lua-resty-coraza

基于 FFI 的 Libcoraza LuaJIT 绑定

$ opm get potats0/lua-resty-coraza

lua-resty-coraza

[!测试](https://github.com/potats0/lua-resty-coraza/actions/workflows/CI.yml)

名称

用于 modsecurity Web 应用防火墙的 libcoraza 的 Lua 实现。

依赖

1. libcoraza-nginx

  1. 克隆仓库:git clone https://github.com/potats0/coraza.git

  1. 构建源代码 && 安装

        cd coraza
        ./build.sh
        ./configure
        make
        sudo make install

    libcoraza.so 将安装到 /usr/local/lib

2. Coreruleset

coreruleset 是一个开源 WAF 规则集。

  1. 克隆仓库:git clone --recurse-submodules https://github.com/coreruleset/coreruleset

3. lua-resty-coraza

    opm get potats0/lua-resty-coraza

概述

    init_worker_by_lua_block{
        coraza = require "resty.coraza"
        waf = coraza.create_waf()
        -- add rule from file
        coraza.rules_add_file(waf, "%s/t/coraza.conf")
    
        -- your corerule set, add rule from directive
        coraza.rules_add(waf, "Include %s/t/coreruleset/crs-setup.conf.example")
        coraza.rules_add(waf, "Include %s/t/coreruleset/rules/*.conf")
    }
    
    location /t {
        access_by_lua_block {
            coraza.do_create_transaction(waf)
            coraza.do_access_filter()
            coraza.do_interrupt()
        }
    
        content_by_lua_block {
            ngx.say("passed")
        }
    
        header_filter_by_lua_block{
            coraza.do_header_filter()
            coraza.do_interrupt()
        }
        
        body_filter_by_lua_block{
            coraza.do_body_filter()
        }
    
        log_by_lua_block{
            coraza.do_log()
            coraza.do_free_transaction()
        }
    }

如果您需要更多调试日志,请开启 nginx 的调试模式。

    error_log logs/error.log debug;

待办事项

  1. 检测到事件 =back 时阻止响应

POD 错误

注意!以上文档存在一些编码错误,解释如下:

大约在 125 行

=over 未关闭 =back

作者

potatso

许可证

apache2

依赖项

luajit

版本