如何在 centos 5 上禁用一个域的 mod_security2 规则(误报)

如何在 centos 5 上禁用一个域的 mod_security2 规则(误报)

您好,我在 centos5 服务器上启用了 mod_security,其中一条规则是阻止用户在表单上发布一些文本。文本是合法的,但其中包含单词“create”和<table>后面的 html 标记,因此会导致误报。

我收到的错误如下:

[Sun Apr 25 20:36:53 2010] [error] [client 76.171.171.xxx] ModSecurity: Access denied with code 500 (phase 2). Pattern match "((alter|create|drop)[[:space:]]+(column|database|procedure|table)|delete[[:space:]]+from|update.+set.+=)" at ARGS:body. [file "/usr/local/apache/conf/modsec2.user.conf"] [line "352"] [id "300015"] [rev "1"] [msg "Generic SQL injection protection"] [severity "CRITICAL"] [hostname "www.mysite.com"] [uri "/node/181/edit"] [unique_id "@TaVDEWnlusAABQv9@oAAAAD"]

这是 /usr/local/apache/conf/modsec2.user.conf (第 352 行)

#Generic SQL sigs SecRule ARGS "((alter|create|drop)[[:space:]]+(column|database|procedure|table)|delete[[:space:]]+from|update.+set.+=)" "id:1,rev:1,severity:2,msg:'Generic SQL injection protection'"

我的问题是:

  1. 我应该怎么做才能将这条规则列入白名单或者允许它通过?
  2. 我应该创建什么文件以及在哪里创建?
  3. 我该如何改变这个规则?
  4. 我可以将其设置为仅允许一个域吗,因为它是该专用服务器上唯一存在问题的域,或者是否有更好的方法来排除表标签?

多谢你们

答案1

您可以使用 LocationMatch 指令禁用特定 URL 上的 ModSecurity,如下所示:

<LocationMatch "/node/181/edit">
  <IfModule mod_security2.c>
    SecRuleEngine Off 
  </IfModule>
</LocationMatch>

http://www.atomicorp.com/wiki/index.php/Mod_security

相关内容