使用NGINX的WAF owasp modsecurity crs中"尚不支持SecCollectionTimeout"

nas*_*ome 7 nginx mod-security owasp server

我用WAF安装nginx(使用Docker)

    mkdir -p /usr/src \
    && cd /usr/src/ \
    && git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity \
    && cd ModSecurity \
    && git submodule init \
    && git submodule update \
    && ./build.sh \
    && ./configure \
    && make -j$(getconf _NPROCESSORS_ONLN) \
    && make install

    ... previous commands to install nginx from source...

    && cd /usr/src \
    && git clone --depth 1 https://github.com/SpiderLabs/ModSecurity-nginx.git \
    && cd /usr/src/nginx-$NGINX_VERSION \
    && ./configure --with-compat --add-dynamic-module=../ModSecurity-nginx \
    && make modules \
    && cp objs/ngx_http_modsecurity_module.so /etc/nginx/modules \
    && mkdir /etc/nginx/modsec \
    && wget -P /etc/nginx/modsec/ https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/modsecurity.conf-recommended \
    && mv /etc/nginx/modsec/modsecurity.conf-recommended /etc/nginx/modsec/modsecurity.conf \
    && sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/nginx/modsec/modsecurity.conf \
    && sed -i 's/SecRequestBodyInMemoryLimit 131072//' /etc/nginx/modsec/modsecurity.conf \
    && sed -i 's#SecAuditLog /var/log/modsec_audit.log#SecAuditLog /var/log/nginx/modsec_audit.log#' /etc/nginx/modsec/modsecurity.conf \
    && mkdir /opt \
    && cd /opt \
    && git clone -b v3.0/master --single-branch https://github.com/SpiderLabs/owasp-modsecurity-crs.git \
    && cd owasp-modsecurity-crs/ \
    && cp /opt/owasp-modsecurity-crs/crs-setup.conf.example /opt/owasp-modsecurity-crs/crs-setup.conf
Run Code Online (Sandbox Code Playgroud)

但突然开始标记这个错误:

nginx:[emerg]"modsecurity_rules_file"指令规则错误.文件:/opt/owasp-modsecurity-crs/crs-setup.conf.行:96.列:43.尚不支持SecCollectionTimeout.

文档中:

==============

#
# -- [[ Collection timeout ]] --------------------------------------------------
#
# Set the SecCollectionTimeout directive from the ModSecurity default (1 hour)
# to a lower setting which is appropriate to most sites.
# This increases performance by cleaning out stale collection (block) entries.
#
# This value should be greater than or equal to:
# tx.reput_block_duration (see section "Blocking Based on IP Reputation") and
# tx.dos_block_timeout (see section "Anti-Automation / DoS Protection").
#
# Ref: https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#wiki-SecCollectionTimeout

# Please keep this directive uncommented.
# Default: 600 (10 minutes)
SecCollectionTimeout 600
Run Code Online (Sandbox Code Playgroud)

==============

我通过在命令中添加此行来解决此问题(禁用规则):

&& sed -i 's/SecCollectionTimeout 600/# SecCollectionTimeout 600/' /opt/owasp-modsecurity-crs/crs-setup.conf
Run Code Online (Sandbox Code Playgroud)

但我不知道它有什么后果,或者它是否是正确的应用方式.

一个可以指导我的例子?

nas*_*ome 1

我自动回复:

来源: https: //github.com/SpiderLabs/ModSecurity/issues/1705

发生这种情况是因为 SecCollectionTimeout 指令当前无法在 libModSecurity(又名 v3)上进行配置,如参考手册中所述。

注释掉 crs-setup.conf 上的 SecCollectionTimeout 指令可以解决该问题,且不会产生副作用。

这里正在对解析器进行更改以避免错误。您现在也可以选择在代码上应用此更改。它已经被合并到 main 中了。

有趣的是,我20天前在stackoverflow中提出的问题...而该问题是22天前在github上提出的,查找一些与“SecCollectionTimeout”相关的问题,但没有任何相关...在那一刻

简而言之,您提供的代码完全可用,因此为他服务的代码,我所做的唯一一件事就是重新编译图像,以便将其拉到https://github.com/SpiderLabs/的存储库ModSecurity已准备就绪