ModSecurity-nginx, ModSecurity Nginx 连接器

分享于 

8分钟阅读

GitHub

  繁體
ModSecurity Nginx Connector
  • 源代码名称:ModSecurity-nginx
  • 源代码网址:http://www.github.com/SpiderLabs/ModSecurity-nginx
  • ModSecurity-nginx源代码文档
  • ModSecurity-nginx源代码下载
  • Git URL:
    git://www.github.com/SpiderLabs/ModSecurity-nginx.git
    Git Clone代码到本地:
    git clone http://www.github.com/SpiderLabs/ModSecurity-nginx
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/SpiderLabs/ModSecurity-nginx
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    

    Build Status

    ModSecurity-nginx连接器是 Nginx 和 libmodsecurity ( ModSecurity v3 ) 之间的连接点。 另外,这个项目提供了 Nginx 和libmodsecurity之间的通信通道。 这里连接器需要使用LibModSecurity和 Nginx。

    modsecurity连接器采用 Nginx MODULE的形式。 MODULE 仅仅充当 Nginx 和ModSecurity之间的通信层。

    注意,这个项目依赖于libmodsecurity而不是 ModSecurity ( 版本 2.9或者更少)。 libmodsecurity还没有达到稳定的发布候选项,因此,请谨慎使用这里项目。

    :这个项目与旧的ModSecurity add-on 有什么不同

    旧版本使用ModSecurity独立,它是Apache内部组件将ModSecurity链接到 Nginx的包装器。 当前版本更接近 Nginx,使用了不再依赖于Apache的新 libmodsecurity。 因此,当前版本的依赖关系较少,Bug 更少,而且速度更快。 另外,还提供了一些新功能,例如每个目录/位置定制( 比如 ) 使用全局规则配置的可以能性。 SecRuleRemoveById )。

    编译

    编译这里软件之前,请确保已经安装了 libmodsecurity。 你可以从 ModSecurity git存储库下载它。 有关libmodsecurity编译和安装的信息,请参考随之提供的文档。

    安装libmodsecurity后,你可以继续安装 modsecurity nginx连接器,该连接器遵循 Nginx 3rd 参与方 MODULE 安装过程:

    
    ./configure --add-module=/path/your/modsecurity-for-nginx
    
    
    
    

    有关 Nginx 3rd 参与方 add-ons 支持的更多信息,请参见: http://wiki.nginx.org/3rdPartyModules

    用法

    Nginx的ModSecurity扩展了你的Nginx 配置指令。 它添加了四个新指令,它们是:

    ModSecurity [On|Off] - 这里指令打开或者关闭ModSecurity功能。 注意,这里配置指令不再与SecRule状态相关。 相反,它现在只作为一个 Nginx 标志来启用或者禁用模块。

    modsecurity_rules_file [] - 这里指令指示位置文件的位置。

    这里指令用于指示从哪里下载modsecurity配置文件。 它还指定了将用于验证该服务器的密钥。

    modsecurity_rules [] - 这个指令允许直接将一个tmodel规则包含到 Nginx 配置中。

    用法示例:在 Nginx 配置中插入规则

    
    ...
    
    
    modsecurity on;
    
    
    location/{
    
    
     modsecurity_rules '
    
    
     SecRuleEngine On
    
    
     SecDebugLog/tmp/modsec_debug.log
    
    
     SecDebugLogLevel 9
    
    
     SecRule ARGS"@contains test""id:1,phase:2,t:trim,block"
    
    
     ';
    
    
    }
    
    
    ...
    
    
    
    

    使用 : 从文件加载规则并根据每个目录/别名注入特定配置

    
    ...
    
    
    modsecurity on;
    
    
    location/{
    
    
     root/var/www/html;
    
    
     modsecurity_rules_file/etc/my_modsecurity_rules.conf;
    
    
    }
    
    
    location/ops {
    
    
     root/var/www/html/opts;
    
    
     modsecurity_rules '
    
    
     SecRuleEngine On
    
    
     SecDebugLog/tmp/modsec_debug.log
    
    
     SecDebugLogLevel 9
    
    
     SecRuleRemoveById 10
    
    
     ';
    
    
    }
    
    
    ...
    
    
    
    

    用法示例:从远程服务器加载规则

    
    ...
    
    
    modsecurity on;
    
    
    location/{
    
    
     root/var/www/html;
    
    
     modsecurity_rules_remote my-server-key https://my-own-server/rules/download;
    
    
    }
    
    
    ...
    
    
    
    

    作为一个开源项目,我们邀请来自社区的( 并鼓励) 对我们的项目做出贡献。 这可能采用以下形式: 新功能,Bug 修复,Bug 报告,新手用户支持,以及任何你愿意帮助的其他东西。 谢谢你。

    提供补丁

    我们希望在GitHub基础架构中有你的补丁以方便我们的审查工作,以及我们的QA集成。 GitHub提供了关于如何执行"请求请求"的优秀文档。 这里提供的更多信息:https://help.github.com/articles/using-pull-requests/

    请尊重正在使用的编码风格。 拉请求可以包含各种提交,因此每个提交提供一个修复或者一个功能。 不要更改目标工作范围之外的任何内容( 比如。 你通过的函数中的编码样式。

    不知道从哪里开始?

    代码中有许多标记为TODO或者FIXME的项目,可能需要你的注意。 通过执行grep来检查项列表:

    
    $ cd/path/to/modsecurity-nginx
    
    
    $ egrep -Rin"TODO|FIXME" -R *
    
    
    
    

    你还可以查看最近的Bug 报告和开放问题,以了解我们正在寻找哪种帮助。

    测试你的补丁

    随着手动测试,我们强烈建议你使用 Nginx 测试实用程序来确保修补程序不会影响 Nginx的行为或者性能。

    Nginx 测试可以用于: http://hg.nginx.org/nginx-tests/

    要使用这些测试,请确保你具有Perl实用程序证明( Perl 5部分) 并继续执行以下命令:

    
    $ cp/path/to/ModSecurity-nginx/tests/*/path/to/nginx/test/repository
    
    
    $ cd/path/to/nginx/test/repository
    
    
    $ TEST_NGINX_BINARY=/path/to/your/nginx prove. 
    
    
    
    

    如果你在获取通过所有 Nginx 测试的附加功能时遇到问题,请随时联系我们或者 Nginx 邮件列表: http://nginx.org/en/support.html

    命令行调试

    我们尊重 Nginx 调试模式。 你还可以在 Nginx 配置期间使用配置选项"--with-debug"来启用连接器消息的调试。 核心转储和崩溃的调试方式与调试 Nginx 时使用的方式相同。 有关详细信息,请检查 Nginx 调试信息: http://wiki.nginx.org/Debugging

    报告问题

    如果你面临配置问题或者如果没有按照预期的方式工作,请使用用户列表。 还欢迎使用GitHub上的问题,但我们首先希望在邮件列表上使用用户问题。 另外,在打开新问题之前,也不要忘记寻找存在的问题。

    最后,如果打算在GitHub上打开一个问题,请不要忘记告诉我们你的libmodsecurity版本和 Nginx 连接器版本。

    安全问题

    请不要公开报告任何安全问题。 相反,请与我们联系:security@modsecurity.org 报告问题。 一旦问题修复,我们将为你提供发现的信用。

    功能请求

    我们希望讨论你可能对新特性有的任何想法。 请记住这是一个社区驱动项目,所以一定要通过邮件列表联系社区,以获得反馈。 或者,可以自由地打开GitHub问题请求新特性。 在打开新的问题之前,请检查是否存在所需功能的现有功能请求。

    封装

    按时发行我们的软件包是我们非常渴望的。 如果有什么我们可以做的,以方便你作为包装器的工作。


    相关文章