CentOS 6.4 + WordPress 3.7 の環境に、ModSecurity を導入した場合、どのような設定になるのか例示します。
WordPress と ModSecurity の相性は悪いようで、動作するようになるまでかなり苦戦します。何か処理をすると、すぐに以下のようなエラーが表示されしまいます。
Forbidden You don't have permission to access /wp-login.php on this server
これは、WordPress が特殊なことをしていたり、文章や画像といったコンテンツを自由に投稿することができたりするので攻撃と誤検知され偽陽性が発生しやすいことと、ModSecurity が過剰検知しやすいことが原因です。
偽陽性の解消方法については、以下の記事を参照してください。
そして、現在、WordPress が稼働している /etc/httpd/conf/httpd.conf の設定は以下のようになります(Windows Live Writer による投稿にも対応)。
<LocationMatch "(/wp-login.php)"> SecRuleRemoveById 960024 </LocationMatch> SecRuleRemoveById 960015 SecRuleRemoveById 981172 <LocationMatch "(/wp-admin/|/xmlrpc.php|/wp-comments-post.php)"> SecRuleRemoveById 950001 SecRuleRemoveById 950005 SecRuleRemoveById 950006 SecRuleRemoveById 950007 SecRuleRemoveById 950901 SecRuleRemoveById 958011 SecRuleRemoveById 958030 SecRuleRemoveById 958976 SecRuleRemoveById 959073 SecRuleRemoveById 959070 SecRuleRemoveById 959071 SecRuleRemoveById 959072 SecRuleRemoveById 959151 SecRuleRemoveById 960015 SecRuleRemoveById 960024 SecRuleRemoveById 973300 SecRuleRemoveById 973302 SecRuleRemoveById 973304 SecRuleRemoveById 973305 SecRuleRemoveById 973306 SecRuleRemoveById 973308 SecRuleRemoveById 973316 SecRuleRemoveById 973332 SecRuleRemoveById 973333 SecRuleRemoveById 973334 SecRuleRemoveById 973335 SecRuleRemoveById 981172 SecRuleRemoveById 981173 SecRuleRemoveById 981231 SecRuleRemoveById 981240 SecRuleRemoveById 981241 SecRuleRemoveById 981242 SecRuleRemoveById 981243 SecRuleRemoveById 981244 SecRuleRemoveById 981245 SecRuleRemoveById 981246 SecRuleRemoveById 981247 SecRuleRemoveById 981248 SecRuleRemoveById 981249 SecRuleRemoveById 981251 SecRuleRemoveById 981255 SecRuleRemoveById 981256 SecRuleRemoveById 981257 SecRuleRemoveById 981260 SecRuleRemoveById 981276 SecRuleRemoveById 981317 SecRuleRemoveById 981318 SecRuleRemoveById 981319 SecRuleRemoveById 981320 </LocationMatch>
これでもまだ偽陽性の問題が起きるようでしたら、Audit ログを確認してルールを除外してください。ルールの除外は以下の記事を参考にしてください。
WAF設定まとめ
WAFの設定については以下のページにまとめていますので、こちらもどうぞ。
コメント