WordPressのxmlrpc.phpとwp-cron.phpを無効化

レンタルサーバー会社から、弊社のWordPressサイトが攻撃を受けてサーバーがダウンしたので、

アカウント停止もしくはホームディレクトリーのパーミッションを000にした。
可及的速やかに、サーバー内のWordPressサイトを個別に、htaccessで自分以外をアクセス禁止にして、設定を変更せよ

と要請(命令)があった…

xmlrpc.phpのアクセス拒否ないし無効化

xmlrpc.phpは、管理画面以外からの記事投稿の機能を実現するものらしい。

スマホ(のアプリなど)からの投稿時は、xmlrpc.phpにアクセスして、ログインする。
つまり、クラッキングするならログイン画面を破るだけでなく、xmlrpc.php経由もありということ。

htaccessでアクセス拒否 functions.phpで無効化

xmlrpc.phpは使わなければ削除も選択肢になるが、WordPressの更新のたびに復活するし、404を出しサーバーの負荷もあるので、却下。

パーミッションの変更なども、サーバーの負荷は残る。却下。

また、「Disable XML-RPC Pingback」プラグインもあるが、どうやら十全ではないようなので、却下。

htaccessでアクセス拒否

アクセス拒否の第1案

<Files xmlrpc.php>
 Order allow,deny
 Deny from all
</Files>

これでも多少サーバー負荷が残るらしいので、
第2案

<IfModule mod_rewrite.c>

RewriteBase /
RewriteRule ^xmlrpc\.php$ "http\:\/\/0\.0\.0\.0\/" [R=301,L]
RewriteRule ^index\.php$ - [L] 

</IfModule>

WordPressをインストールすると、xmlrpc.phpと同じ階層に作成されるhtaccessとその記述。
そこに、xmlrpc.phpにアクセスすると「0.0.0.0」に飛ばす。
これがベストの対策らしい。

functions.phpで無効化

まず、xmlrpc.phpの無効化。

add_filter(‘xmlrpc_enabled’, ‘__return_false’);

さらに、xmlrpc.phpの痕跡を隠すために、「X-Pingback」のヘッダー情報も消去。

function remove_x_pingback($headers) {
unset($headers[‘X-Pingback’]);
return $headers;
}
add_filter(‘wp_headers’, ‘remove_x_pingback’);

xmlrpc.phpのセキュリティ対策のまとめ

まとめとしては、
htaccessで、「0.0.0.0」に飛ばす。

あとは念押しで、プラグインを入れる、htaccessで「Deny」、functions.phpで無効化、ヘッダー情報消去など。

wp-cron.phpの無効化

じつは、xmlrpc.phpも、このwp-cron.phpも、WordPressの仕様にまつわるクラッカーの餌食になっているようで、ほんとうに腹立たしい。

WordPressサイトにアクセスするたびに、なぜか、wp-cron.phpが稼働し、サーバーに負荷がかかると。
(もの凄いトラフィックのWordPress製メガサイトなどは、何か対策しているのかな?)

wp-config.phpでwp-cron.phpを無効化

これは、wp-config.phpに

define('DISABLE_WP_CRON', true);

を記述して、wp-cron.phpを無効化。

なにか後遺症なり副作用なり、使えなくなるものもありそうだが、アカウント停止から回復するには、選択の余地もない。

WordPressのサーバー負荷対策

そのほか、レンタルサーバー会社推奨の、サーバー負荷対策(クラッカーの所業によるアカウント停止の回避策)として

  • wp-super-cacheプラグイン導入
  • All in One SEO Packプラグイン使用停止
    Greg’s High Performance SEO代替
  • YARPPプラグイン使用停止

などがあった。

キャッシュプラグインは、以前トラブったことがあって、あまり導入したくない。
All in one SEOは、可能であれば使用停止は望むところ。
(canonicalさえ設定できれば、どうしても必要というプラグインでもないし…)

なおYARPPは、特別な使い方をしていて、代替案もないので、使用停止は困る…

«
»