启用mod_security时,Apache上的SSL不起作用

时间:2015-07-31 22:52:20

标签: apache ssl mod-security

我在我的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行,现在它可以正常工作,但风险呢?

1 个答案:

答案 0 :(得分:2)

以前没见过这个问题,但这个链接: 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分析。如果您正在使用该软件,那么这可以解释这一点。否则,我看不出升级到最新规则集会解决问题的原因。然后我再也不知道为什么你想要运行旧版本的OWASP规则,所以不妨升级并看看是否有帮助。

禁用规则

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

SecRuleRemoveById 981172

这比编辑实际文件更好,就像升级规则一样(例如,从我建议的版本2.2.8到2.2.9),那么你就不会失去你的自定义。

禁用规则的风险

关于禁用规则的风险,此规则可防止具有多个特殊字符的Cookie。在cookie中发送特殊字符本身很少存在安全风险,但可能是试图绕过其他规则(例如,您可以通过转义或双重转义字符隐藏cookie中的SQL注入尝试,因此其他规则不会识别sql注入,但因为你的服务器程序可能会解析转义字符,它们仍然会导致问题)。

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