特定のディレクトリのみの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で次のパッケージを実行しています。
SecRuleEngine Offが機能する必要があります。 SecRuleEngineをDirectory内に配置しようとしましたか?
<Directory /var/www/site/phpMA>
SecRuleEngine Off
</Directory>
locationMatchの代わりに?
someサーバーおよびWebホストでは、.htaccess
を介してModSecurityを無効にすることができますが、全体でのみ可能です(個別のルールではありません)。
これを特定の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>
すべてのルールを無効にしないでください!!これは深刻なセキュリティ問題を引き起こす可能性があります!
Modsecurityのログファイルを確認する必要があります
tail -f /var/log/Apache2/modsec_audit.log
そして、phpmyadminインターフェースでエラーを再現する各ルールを1つずつ除外します。
次に、追加:
<Directory /path/to/phpmyadmin>
<IfModule security2_module>
SecRuleRemoveByTag "WEB_ATTACK/SQL_INJECTION"
{And other rules you need to disable ...}
</IfModule>
</Directory>
/etc/Apache2/mods-enabled/modsecurity.conf
削除する必要があるタグは this のようなログファイルにあります。特定のフォルダーのルールの削除の詳細については、 プロジェクトのGithub wiki を参照してください。