apache - 提供 403 禁止错误的特别敏感的 Mod 安全规则

标签 apache security mod-security

我刚刚在我们的 Centos5 服务器上启用了 Mod Security,我们现在在错误日志中得到以下内容:

[Thu Nov 12 16:20:19 2015] [error] [client 88.15.76.8] ModSecurity: Access denied with code 403 (phase 2). Pattern match "([\\\\~\\\\!\\\\@\\\\#\\\\$\\\\%\\\\^\\\\&\\\\*\\\\(\\\\)\\\\-\\\\+\\\\=\\\\{\\\\}\\\\[\\\\]\\\\|\\\\:\\\\;\\"\\\\'\\\\\\xc2\\xb4\\\\\\xe2\\x80\\x99\\\\\\xe2\\x80\\x98\\\\`\\\\<\\\\>].*){8,}" at REQUEST_COOKIES:_eventqueue. [file "/etc/httpd/modsecurity.d/activated_rules/modsecurity_crs_41_sql_injection_attacks.conf"] [line "169"] [id "981172"] [rev "2.2.5"] [msg "Restricted SQL Character Anomaly Detection Alert - Total # of special characters exceeded"] [data "}"] [hostname "www.mydomain.com"] [uri "/company/geodis-uk-limited/general-maintenance-assistant-1485.html"] [unique_id "UbGaGB-esj8AAAa98bEAAAAn"]

阻止这种情况发生的最佳方法是什么?

最佳答案

ModSecurity 规则在有用之前需要针对您的特定站点进行调整和调整。您安装的 OWASP 核心规则集非常有用,但显示误报并阻止除最简单站点以外的所有站点的合法流量。

所以首先你应该在 DetectionOnly 模式下运行几个月,然后再打开完全阻止。在此期间,您应该定期检查警报并微调规则以解决任何误报。通过在您的配置中使用以下命令启用 DetectionOnly 模式(目前它可能设置为 On 而不是 DetectionOnly):

SecRuleEngine DetectionOnly

现在来看看你的具体故障。这是由于规则 981172 阻止了任何具有 8 个或更多“特殊字符”的请求,因为它们通常是 SQL 注入(inject)攻击的典型示例(或更具体地说是试图掩盖 SQL 注入(inject)攻击)。

此规则已阻止 cookie _eventqueue。所以第一个问题是:你认识那个 cookie 吗?它是否经常连续出现 8 个以上的特殊字符?即使对于合法流量,某些字段和 cookie 也会违反此规则。例如,当前规则不检查任何以 __utm 或 _pk_ref(由分析软件使用)开头的 cookie,因为它们经常标记错误。

假设这是合法流量,最简单的选择是通过添加此配置关闭此字段的此规则:

SecRuleUpdateTargetById 981172 !ARGS:'_eventqueue'

请注意,此配置必须在配置中之后它正在禁用的规则。 在定义规则之前可能需要其他表达此规则的方式。所以我通常会添加一个“0_exceptions_before.conf”文件和一个 9999_exceptions_after.conf”文件,并将异常(exception)情况填写到这些文件中。

像这样添加异常(exception)比在 modsecurity_crs_41_sql_injection_attacks.conf 文件中编辑实际规则本身要好得多,因为这样可以让您轻松地将规则升级到最新版本,同时仍然保留您的异常(exception)。

谈到升级,我注意到您使用的是核心规则集的 2.2.5 版,而 v2 系列中的最新版本是 2.2.9,因此如果重新开始,您可能应该升级到最新版本。 CRS 的第 3 版现在是首选版本,但它改变了很多东西(包括规则 ID),因此需要一些时间才能升级到它。你应该转向那个,但可能首先要习惯 2.2.9,因为你已经开始使用它了。

ModSecurity 一开始可能会非常复杂。我强烈推荐 ModSecurity Handbook , 由 ModSecurity 的原作者编写。它有点过时,但刚刚出版了第二版,再次更新了它。它有助于解释程序以及您需要如何以及为什么需要调整它。第一章(关于安装)如果你想试一试是免费的。那本书还包含引用手册,即 also available online for free .最后 mod-security-users电子邮件组和owasp-modsecurity-core-rule-set电子邮件组也是获得帮助的好地方,因为 StackOverflow 上没有大量关于该主题的内容。

关于apache - 提供 403 禁止错误的特别敏感的 Mod 安全规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33676348/

相关文章:

php - 在 Apache 服务器中托管的 Laravel 框架中开发的 API 在从 Android 和 iOS 移动应用程序请求时没有得到任何响应

php - 源代码用apache出现,为什么要修复?

mysql - 为什么输入 Select * from Dual;使我的登录页面崩溃( self 安全测试)?

c# - 使用 C# 设置功能保存密码时的最佳做法是什么?

linux - 如何设置仅对一个域/子域有效的 mod_security 规则?

python - Apache mod_rewrite 与多个 Web 应用程序

签名验证期间的 Java 异常(错误解码签名字节)

php - 在 Wordpress 中,主题文件夹中的 .php 文件不运行,但返回 404 错误

Apache2 mod_evasive vs mod_security 与 OWASP crs 在防御 DDOS 时?

linux - 从源代码编译 LAMP - apache2 错误 "no MPM package installed"