【问题标题】:SSL on Apache doesn't work when mod_security enabled启用 mod_security 时,Apache 上的 SSL 不起作用
【发布时间】:2015-10-23 17:36:02
【问题描述】:

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

【问题讨论】:

  • @GolezTrol :) 我正在阅读这篇文章stackoverflow.com/q/16560325/4458531,但我不确定我的情况
  • 我对 mod_security 不太熟悉,但我链接的问题中的建议似乎很合理:1:“修复规则和/或 Apache 配置,不要尝试”用任意大的数字修复“这个问题。”和2 “删除规则并把它们一一添加回来以找到问题”。
  • @GolezTrol 是的,听起来我遇到了麻烦:(

标签: apache ssl mod-security


【解决方案1】:

之前没见过这个问题,但是这个链接: 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 的一部分是调整和调整规则集:包括关闭规则是适当的。只要您了解您正在调整的规则,那么您就需要判断这是否合适。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 2020-11-05
    相关资源
    最近更新 更多