Apache-2.2
禁用特定目錄的 modsecurity
如何僅為特定目錄禁用 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>