如何仅为特定目录禁用 modsecurity。我在 phpMyAdmin 中遇到错误,这是由基于规则的 modsecurity 跳闸引起的。我设置了以下文件:
# /etc/httpd/modsecurity.d/modsecurity_crs_15_customrules.conf
<LocationMatch "^/phpMA/">
SecRuleEngine Off
</LocationMatch>
# /etc/httpd/modsecurity.d/modsecurity_crs_60.custom.conf
<LocationMatch '^/phpMA/*'>
SecRuleRemoveById 950004
SecRuleRemoveById 950005
SecRuleRemoveById 950006
SecRuleRemoveById 960010
SecRuleRemoveById 960012
</LocationMatch>
从我可以找到的第一个文件应该禁用它,但它仍然跳闸,所以我尝试将它跳闸的规则 ID 添加到 60 文件,但它仍然抱怨。
我在 CentOS 5.3 上运行以下软件包:
- mod_security-2.5.0-jason.2
- httpd-2.2.8-jason.3
- mod-php5-apache2-zend-ce-5.2.10-65
SecRuleEngine Off 必须工作。您是否尝试将 SecRuleEngine 放在目录中:
而不是 LocationMatch ?
在某些服务器和 Web 主机上,可以通过 禁用 ModSecurity
.htaccess
,但通过这种方法您只能打开或关闭它,通常无法禁用个别规则。因此,与其让整个网站不受保护,不如将其限制在特定的 URL 上。您可以在下面的语句中的正则表达式中指定它们
<If>
...永远不要禁用所有规则!这可能会导致严重的安全问题!
您需要检查 modsecurity 的日志文件
并一一排除每条规则,重现phpmyadmin界面上的错误。
接下来,添加:
到 /etc/apache2/mods-enabled/modsecurity.conf
您需要删除的标签将像这样在日志文件中。有关删除特定文件夹规则的完整描述,请参阅项目的 Github wiki。