Mod Security 403 persistnace需要删除cookie

时间:2015-03-11 16:08:51

标签: apache mod-security

我一直在寻找相当一段时间,最后决定发布关于Mod Security如何从域中锁定用户的问题。

我有一个包含大量遗留网址的大型网站,其中包含' $'和"%"在它们中,这被删除了,但是有遗留的链接将导致一些mod安全规则。

主要问题是一旦触发规则,就会在该页面上按预期返回403错误,但是现在转到域上的任何其他页面都会抛出403错误,以及在浏览器上清除cookie。这当然不是用户友好的,因为许多人不会知道明确的cookie修复,如果他们被锁定,我显然不能轻易地让他们知道,而不想删除导致此问题的所有规则。

网址示例

[代码] 要求:GET /phpBB2/promotions/9927-1st-deposit-bonus-125%25move-up-sun-palace-casin.html 操作描述:使用代码403拒绝访问(阶段2)。 理由:无效的URL编码:REQUEST_URI使用的非十六进制数字。 [/代码]

这是一个  950107:URL编码滥用攻击尝试

Mod安全日志中的许多错误我只看到GET /作为触发器,这显然不是根本原因。

1 个答案:

答案 0 :(得分:0)

我的第一个想法是,如果此规则被错误触发,因为这样的用例是(或者是)有效,那么您可能应该禁用此规则:

SecRuleRemoveById 950107

如果您的网页不再存在,那么这可能会返回没有此规则的标准404消息。对于用户而言,这可能比403和更好的用户体验更正确。也意味着您不会在日志中收到针对这些误报的ModSecurity警报。好吧,这可能意味着你错过了这个规则旨在阻止的真正攻击,所以你需要权衡这个风险与挫败一些用户的不利方面。就个人而言,我不认为此规则可以保护您免受重大安全问题的影响,因此会将其禁用。

还需要准确了解问题所在。规则950107检查URL,而不是cookie,因此,虽然我理解它为初始请求触发,但它必须是针对后续阻塞错误触发的不同规则?不确定如何错误地设置cookie以及将来导致问题的这样的值,因此需要更多细节。

可以使用Modancurity和Apache的组合使用Ivan Ristic在他的ModSecurity手册中记录的方法删除cookie,但它有点复杂并涉及几个步骤:

1)创建一个规则,用于检测何时删除cookie并设置环境变量。例如,检查包含单词" value_to_check"的URL。使用这样的规则:

SecRule REQUEST_URI "value_to_check" "id:12345,phase:1,setenv:DISABLE_OUTBOUND_SESSION"

2)使用mod_header获取Apache请求浏览器取消设置该env变量的SESSIONID Cookie:

Header always set Set-Cookie "SESSIONID=; expires 31-Dec-1999 00:00:00 GMT" env=DISABLE_OUTBOUND_SESSION

请注意,这并不能修复任何错误的传入Cookie。根据确切的问题,有相似的修复方法。

我建议你先了解完整的问题,因为可能有更好的解决方案。