我做了大量的研究,我发现了很多东西,但还没有能够确定一些东西,将做我需要它做的事情。
目标
我希望能够扫描除某些参数之外的所有参数,并通过所有已设置的标准核心规则运行它们。例如,如果我有一个文件path/to/myfile.php
,它有2个参数发送给它param1
和param2
。当用户点击myfile.php
时,我希望它运行所有可爱的检查,它可以对param1
和param2
,除了param2
。t不需要它检查WEB_ATTACK/XSS
,因为它应该为该字段(或任何其他字段)期待一些HTML。
警告
我不认为可以按ID删除规则(除非我的理解有缺陷)。我们目前正在一个临时服务器上设置这个,然后我们将安装ModSecurity和我们在临时服务器上设置的排除项,并将它们复制到活动服务器上。(再次,除非我误解了什么),在我们的实时服务器上抛出ModSecurity并等待规则开始运行并不“有趣”。
到目前为止我所得到的
我试过了...
<LocationMatch /path/to/myfile.php>
<IfModule mod_security2.c>
SecRuleEngine Off # This is super bad I know
</IfModule>
</LocationMatch>
这不是个好主意所以我可以...
<LocationMatch /path/to/myfile.php>
<IfModule mod_security2.c>
SecRuleRemoveByTag "WEB_ATTACK/XSS" # better but.....still not close enough
</IfModule>
</LocationMatch>
因此,我尝试了以下方法,但没有成功:
SecRule ARGS|!ARGS:param2 "@detectXSS" # only 2.8.0 and above :(
# or
SecRule ARGS|!ARGS:param2 "ctl:ruleRemoveByTag=WEB_ATTACK/XSS"
# or
SecRule REQUEST_FILENAME "@streq /path/to/myfile.php" "pass,ctl:ruleRemoveByTag=WEB_ATTACK/XSS;ARGS:param2"
ModSecurity的文档很好,但是我需要更深入的理解,特别是ctl的东西。我还看了一些其他的问题here和here,在网上看到了一些帮助我朝着正确方向前进的帖子here(写得很好),here,here和here
奖励积分
如果我需要执行param2和param3,我是否必须编写2个规则,或者它们是否可以以某种方式组合(ARGS:param2,param3
)?
1条答案
按热度按时间yqlxgs2m1#
你对id的理解是有缺陷的。规则id应该在staging和live上是一样的--除非你在它们上运行不同的规则(如果不是一个真正的live的相似之处,这就有点打败了staging服务器的意义)。大多数人下载,购买或编写一个规则集,OWASP核心规则集是一个流行的(和免费的!)规则集。
有一个几乎与您要在ctl文档中执行的操作相同的示例,您链接到了该文档,但使用了id:
所以对你来说,这将变成:
请注意OWASP CRS(不确定您是否正在使用它?)XSS检查是第2阶段检查,因此我更改了它,从2.7开始,Id现在是强制性的。您可以扩展它以包括许多规则id或不同的参数:
然而,设置所有的id有点乏味,所以,当你想通过标签来完成时,你可以尝试下面的方法,虽然还没有经过测试:
请注意,OWASP_CRS标记实际上是
"OWASP_CRS/WEB_ATTACK/XSS"
,而不仅仅是"WEB_ATTACK/XSS"
,并且不确定它是否会匹配部分位,因此请将完整文本放入,假设这是您正在使用的规则集。同样,如果您确实要以类似方式将param 3列入白色名单,则此行中可以有多个
ctl
操作。如果这些都不起作用,您可以使用链接规则代替ctl操作:
这允许检查多个项目,如果没有等价的
ctl
命令(尽管ctl
似乎可以处理大多数事情),还允许您访问所有ModSecurity规则命令。重要说明:顺序很重要,而且容易混淆。应在之后指定SecRuleUpdateTargetByTag要更改的规则,但需要在之前指定ctl amends要修改的规则。
需要注意的是,Location和LocationMatch不适用于阶段1的规则(因为它们在Apache运行Location和LocationMatch逻辑之前处理),因此我更喜欢使用ModSecurity REQUEST_URI。即使对于阶段2和更高的规则,为了一致性,它们也应该在Location和LocationMatch部分工作。
最后,您可以(而且应该!)将ModSecurity放在您的活动服务器上,最初处于DetectionOnly模式,这样它将记录所有违规,但不会阻止它们:
然后,当你微调规则时,你会看到误报的下降,直到你完全舒服地打开它。
顺便说一句,我强烈推荐ModSecurity的原作者在他离开之前写的the ModSecurity handbook。自从ModSecurity 2.6以来还没有更新过,但是,除了id成为强制性的之外,它所涵盖的一切仍然是相关的,并将给予您一个良好的基础,在ModSecurity,然后您可以查看ModSecurity发行说明(无论是在你的安装或here),看看有什么变化。也会建议你升级到最新版本(2.9.1)作为相当多的错误修复自2.7.3。