Apache-2.2

禁用特定目錄的 modsecurity

  • May 13, 2021

如何僅為特定目錄禁用 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 放在目錄中:

<Directory /var/www/site/phpMA>
SecRuleEngine Off
</Directory>

而不是 LocationMatch ?

某些伺服器和 Web 主機上,可以通過 禁用 ModSecurity .htaccess,但是通過這種方法您只能打開或關閉它,通常無法禁用個別規則。

因此,與其讓整個網站不受保護,不如將其限制在特定的 URL 上。您可以在下面的語句中的正則表達式中指定它們<If>

### DISABLE mod_security firewall
### Some rules are currently too strict and are blocking legitimate users
### We only disable it for URLs that contain the regex below
### The regex below should be placed between "m#" and "#" 
### (this syntax is required when the string contains forward slashes)
<IfModule mod_security.c>
 <If "%{REQUEST_URI} =~ m#/admin/#">
   SecFilterEngine Off
   SecFilterScanPOST Off
 </If>
</IfModule>

引用自:https://serverfault.com/questions/57210