1. XML-RPCとは?
WordPress は XML-RPC を使用して、ユーザーがブログや Web サイトで多くのアクティビティをリモートで実行できるようにします。 これにより、WordPress 固有のモバイル アプリを通じて Web サイトにアクセスできるようになります。
2. WordPress Web サイトが攻撃されているかどうかを確認する方法
Web サイトがこの方法で攻撃されているかどうかを知る最も簡単な方法は、access_log ファイルを開くことです。 以下のような大量のトラフィックが見られる場合、Web サイトは XML-RPC を通じてハッキングされています。
xxx.xxx.xxx.xxx – – [15/Sep/2016:12:54:49 +0700] “POST /xmlrpc.php HTTP/1.1” 200 0 “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6”
xxx.xxx.xxx.xxx – – [15/Sep/2016:12:54:50 +0700] “POST /xmlrpc.php HTTP/1.1” 200 0 “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6”
xxx.xxx.xxx.xxx – – [15/Sep/2016:12:54:50 +0700] “POST /xmlrpc.php HTTP/1.1” 200 0 “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6”
xxx.xxx.xxx.xxx – – [15/Sep/2016:12:54:51 +0700] “POST /xmlrpc.php HTTP/1.1” 200 0 “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6”
xxx.xxx.xxx.xxx – – [15/Sep/2016:12:54:51 +0700] “POST /xmlrpc.php HTTP/1.1” 200 0 “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6”
xxx.xxx.xxx.xxx – – [15/Sep/2016:12:54:52 +0700] “POST /xmlrpc.php HTTP/1.1” 200 0 “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8
3. XML-RPC 攻撃手法
3.1. Brute-force Attack
すべての XML-RPC リクエストは認証されるため、Web ページを安全に編集できます。 攻撃者はこれを悪用して、サイトに侵入するまで無数のユーザー名とパスワードの組み合わせを作成しようとします。
3.2. DDoS
1 人の攻撃者が数千の WordPress サイトを使用して、XML-RPC ファイルへの単純な pingback リクエストでサイトに DDoS 攻撃を開始する可能性があります。 ほぼ無限のリクエストにより Web サーバーに過負荷がかかり、Web サイトにダウンタイムが発生したり、サーバーのクラッシュにつながる可能性があります。
4. XML-RPC を無効にする
4.1. プラグインで Xmlrpc.php を無効にする「XML-RPC を無効にする」
ただし、他の多くのプラグインが XML-RPC の要素を使用している可能性があるため、完全に無効にするとプラグインの競合が発生し、サイトが機能しなくなる可能性があります。
他のプラグインも使用できます。
Stop XML-RPC Attack: このプラグインはすべての XML-RPC 攻撃をブロックしますが、Jetpack などのプラグインやその他の多くの自動ツールが xmlrpc.php ファイルにアクセスすることを許可します。
Control XML-RPC Publishing: このプラグインにより、xmlrpc.php を使用してリモート公開ツールを制御および使用できるようになります。
4.2. 手動の方法
- C.htaccess で xmlrpc.php をブロックする
Apache がインストールされた共有ホストまたはサーバーを使用している場合は、Web サイトのルート ディレクトリにある .htaccess ファイルに次のコードを挿入します。
<files xmlrpc.php>
order allow,deny
deny from all
</files>
ファイルにアクセスするとエラー 403 が返されます。
Code:
# protect xmlrpc
<IfModule mod_alias.c>
RedirectMatch 403 /xmlrpc.php
</IfModule>
または、別のページにリダイレクトします。
Code:
# protect xmlrpc
<IfModule mod_alias.c>
Redirect 301 /xmlrpc.php http://example.com/custom-page.php
</IfModule>
- NGINX で xmlrpc.php をブロックする
バックエンドとして NGINX を使用している場合 (PHP-FPM で使用)、NGINX のドメイン構成ファイルに以下を記述します。
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}
* 次にNGINXを再起動します。
- コードスニペットを使用する
使用しているテーマまたは子テーマのfunctions.phpファイルに次のコードを挿入して保存します。
add_filter( ‘xmlrpc_enabled’, ‘__return_false’ );