mod__security WordPressで投稿を編集するときに私のIPをブロックする
WordPressのエディタでポストを編集すると、私のIPは自動的に `mod__security`によってブロックされ、ファイアウォール拒否アクセスリストに入れられ、ログにはセキュリティ上の懸念が示されています。
lfd: (mod__security) mod__security triggered by xx.xx.xx.xx (MY/Malaysia/-): 5 in the last 300 secs
迅速に修正するには、モデムを再起動するか、SSHまたはWHM経由でサーバーにアクセスするために新しいIPを取得してから、ブロックされたIPを手動で削除する必要があります。ここに私の環境があります:
-
ワードプレス3.4.2
-
クラシックApache ModSecurity CSF/LFD
多くの試行錯誤の後、私はこれがWordPressの「オートセーブ」とポストリビジョン機能によって引き起こされる可能性があることを発見しました。ポストを編集するとき、WordPressは定義された間隔の間に “ドラフト”または “ポストリビジョン”を自動保存します。また、頻繁に `mod__security`ルールをトリガします。
ここには2つの解決策があります:
1.ホワイトリストワードプレスアクション
これは、私のサーバサポーターが提案するもので、一般的なWordPressアクションを `mod__security`でホワイトリストに載せています。 `whitelist.conf`を編集し、以下の規則を内部に入れてください。
/usr/local/apache/conf/modsec2/whitelist.conf
<LocationMatch "/wp-admin/page.php"> SecRuleRemoveById 300013 300014 300015 300016 300017 </LocationMatch> <LocationMatch "/wp-admin/post.php"> SecRuleRemoveById 300013 300014 300015 300016 300017 </LocationMatch> <LocationMatch "/wp-admin/admin-ajax.php"> SecRuleRemoveById 300013 300014 300015 300016 300017 </LocationMatch> SecRule REQUEST__URI "/wp-admin/async-upload.php" phase:1,nolog,allow,ctl:ruleEngine=Off SecRule REQUEST__URI "/wp-admin/async-upload.php" phase:2,nolog,allow,ctl:ruleEngine=Off
2.ポストリビジョンを無効にする
WordPressのポストリビジョン機能を無効にするか、自動保存間隔を長くします。 `wp-config.php`を編集し、次のコードを追加します:
define('AUTOSAVE__INTERVAL', 300 );//seconds, 5 mins define('WP__POST__REVISIONS', false );
ここに `wp-config.php`の完全なサンプルがあります
wp-config.php
<?php/** ** Enable W3 Total Cache ** /define('WP__CACHE', true);//Added by W3 Total Cache define('AUTOSAVE__INTERVAL', 300 );//seconds, 5 mins define('WP__POST__REVISIONS', false ); //** ** MySQL settings ** ** //Added by WP-Cache Manager define('DB__NAME', 'removed-for-security'); //The name of the database define('DB__USER', 'removed-for-security'); //Your MySQL username define('DB__PASSWORD', 'removed-for-security');//...and password define('DB__HOST', 'localhost'); //99% chance you won't need to change this value define('DB__CHARSET', 'utf8'); define('DB__COLLATE', ''); define('AUTH__KEY', 'removed-for-security'); define('SECURE__AUTH__KEY', 'removed-for-security'); define('LOGGED__IN__KEY', 'removed-for-security'); define('NONCE__KEY', 'removed-for-security'); $table__prefix = 'abc__'; define ('WPLANG', ''); @ini__set('log__errors','On'); @ini__set('display__errors','Off'); @ini__set('error__log','/home/username/www/php-errors.log'); /** That's all, stop editing! Happy blogging. ** /if ( !defined('ABSPATH') ) define('ABSPATH', dirname(____FILE____) . '/'); require__once(ABSPATH . 'wp-settings.php'); ?>
参考文献
-
link://blog/wordpress-display-404-after-updated-post/[WordPress
投稿を更新した後の表示404]。
WordPress autosave
-
http://configserver.com/cp/csf.html
[ConfigServerセキュリティと
ファイアウォール]。
Mod Security
WordPressの自動保存の頻度と投稿の改訂]。
http://www.cyberciti.biz/faq/wordpress-turn-off-post-revision/
[WordPress: