我在Apache服务器上设置了新的SSL证书,现在当我尝试从HTTPS访问我的网站时,出现错误消息“ 403 Forbidden”。
从apache日志文件中,我得到:

[Fri Jul 31 20:54:51.069453 2015] [:error] [pid 12132] [client **.24.36.***] ModSecurity: Rule 7fdb76085a90 [id "981172"][file "/usr/share/modsecurity-crs/activated_rules/modsecurity_crs_41_sql_injection_attacks.conf"][line "157"] - Execution error - PCRE limits exceeded (-8): (null). [hostname "example.com"] [uri "/test"] [unique_id "Vbggm6wfDPoAAC9k-CQBAAAB"]


这是以上文件的第157行:

SecRule REQUEST_COOKIES|!REQUEST_COOKIES:/__utm/|!REQUEST_COOKIES:/__utm/|REQUEST_COOKIES_NAMES "([\~\!\@\#\$\%\^\&\*\(\)\-\+\=\{\}\[\]\|\:\;\"\'\´\’\‘\`\<\>].*?){8,}" "phase:2,t:none,t:urlDecodeUni,block,id:'981172',rev:'2',ver:'OWASP_CRS/2.2.8',maturity:'9',accuracy:'8',msg:'Restricted SQL Character Anomaly Detection Alert - Total # of special characters exceeded',capture,logdata:'Matched Data: %{TX.1} found within %{MATCHED_VAR_NAME}: %{MATCHED_VAR}',tag:'OWASP_CRS/WEB_ATTACK/SQL_INJECTION',setvar:tx.anomaly_score=+%{tx.warning_anomaly_score},setvar:tx.sql_injection_score=+1,setvar:'tx.msg=%{rule.msg}',setvar:tx.%{rule.id}-OWASP_CRS/WEB_ATTACK/RESTRICTED_SQLI_CHARS-%{matched_var_name}=%{tx.0}"


因此,我尝试禁用mod_security,并且确实可以正常工作。

由于需要保持mod_security启用状态,如何解决此问题?

更新

我编辑文件/usr/share/modsecurity-crs/activated_rules/modsecurity_crs_41_sql_injection_attacks.conf并删除了157行,现在它可以工作了,但是风险又如何呢?

最佳答案

之前没有看到该问题,但是此链接:
https://github.com/SpiderLabs/owasp-modsecurity-crs/issues/155
似乎建议升级到最新的OWASP CRS可以解决此问题。

最新的规则集在这里:https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project

我所看到的正在运行的2.2.8版本和最新的2.2.9版本之间的唯一区别是,该规则中还排除了_pk_ref cookie。在Google上进行快速搜索建议piwik.org使用它-一种分析跟踪工具,大概类似于Google Analytics(分析)。如果您使用的是该软件,则可能可以对此进行解释。否则,我看不到为什么升级到最新规则集可以解决此问题的原因。再说一遍,我不知道您为什么要运行OWASP规则的旧版本,因此最好进行升级,看看是否有帮助。

禁用规则

如果仍不能解决问题,那么您也可以禁用该规则。为此,您不应编辑原始文件,而应在定义规则后,在您自己的modsec_customisations.conf文件中将以下内容添加到配置中:

SecRuleRemoveById 981172


最好是编辑实际文件,因为当您升级规则时(例如,如我建议的那样从2.2.8升级到2.2.9),那么您就不会丢失自定义内容。

禁用规则的风险

关于禁用该规则的风险,该规则可以防止带有多个特殊字符的cookie。在cookie中发送特殊字符本身很少会带来安全风险,但可能是试图规避其他规则(例如,您可以通过转义或两次转义字符来隐藏cookie中的sql注入尝试,因此其他规则无法识别sql注入,但是由于转义字符可能会被您的服务器程序解析,因此仍然会导致问题)。

重要的是要意识到,可以用来配置它的ModSecurity和OWASP CRS都不会100%保护您的网站。它们旨在使用可以根据规则检查的已知签名来降低风险。 OWASP CRS中有很多规则,但并非所有规则都适合您的网站。显然,您关闭的规则越多,受到保护的程度就越少,但这并不意味着您不应该在适当的地方关闭规则。安装ModSecurity的一部分是调整和调整规则集:包括关闭规则是适当的。只要您了解要调整的规则,就需要做出判断是否适当的判断。

09-05 01:13