仕事上で発生したので備忘録。定期的にWordPressのアップデートは行なっているものの、まさかのパッケージ内のファイルが残っているとは・・・「削除すればいいじゃん!」と思っていても、アップデートファイル内に入っているので、削除では解決しない模様。
今回発覚した経緯としては、サイトの検索ボックスでキーワードを入れたところ身に覚えのないコメントが結果として上がってきたというもの。だいぶ前から、指摘している方も多かったのですが、自戒の念として。
xmlrpc.phpとは何をするもの?
遠隔操作するためのファイルです。例えば
- モバイルアプリを利用した投稿
- メールでの投稿
- 投稿の編集・削除
- ファイルのアップロード
- コメントの作成・編集・削除
- Wordから直接投稿
- ピンバック、トラックバックの有効化
などが、行えるファイル。恩恵だけで見ると便利そうに見えますが、WordPressのフルカスタムしてしまうので不要な機能だなと思っていました。恩恵の反面セキュリティの問題があるとかどちらを優先するか天秤にかけてもセキュリティを気にした方がいい。セキュリティリスクに関しては後述します。
WordPress REST API
現在はREST APIが導入され、xmlrpc.phpは不要となりました。
大まかに言うと、WordPressで構築されたWebサイトのデータ更新・取得などを行うにはWordPressの管理画面にアクセスする必要がありましたが、WordPress REST APIなら「WP REST API 」を許可すれば、管理画面にアクセスせずともあらゆるデータの取得、更新、削除などが可能。
また、REST APIの方が接続できるシステムが豊富と言うのも特徴です。
REST APIになったことによって、xmlrpc.phpはパッケージから除外されていると思いきや未だにWordPressのパッケージの中に残っているよう。なので、ファイルを削除しても、復活してしまうというわけです。
xmlrpc.phpの無効化
どんなリスクがあるのか
xmlrpcの仕組みがわかったとしても何がリスクなのかというお話です。
DDOS攻撃
ピンバックが有効化されていることによるDDOS攻撃
ピンバックとは別のブログからシアとがコンテンツにリンクした際、サイトのコメント欄に通知を表示することが可能で、短時間で膨大なピンバックを送信されてしまうおそれがあるということ。
膨大なピンバックのせいでサーバーの負荷が高くなりサイトが表示されなくなってしまうということが起こってしまいます。
ブルートフォースアタック
ユーザー名とパスワードが合致してしまうと、管理画面に不正ログインされてしまうという恐ろしい状態になります。
xmlrpc.phpが有効になっているのか調べる
まず、xmlrpc.phpが有効になっているのか調べてみることをおすすめします。
のようにご自身のドメインの後にxmlrpc.phpを入れるだけで確認ができます。
下記のような文字が出てきた場合は有効化されています。
XML-RPC server accepts POST requests only.
無効化されている場合は「403エラー」が出てきます。参考サイトにはプラグインを利用したものも紹介されていますが、最近プラグインを極力減らして運用したいため、プラグインは使わない方向で試してみました。
.htaccessで無効化
サーバー直下の.htaccessに下記を記述(必ず#BEGIN WordPress、#END WordPress外に記述)することにより解消されます。
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>
nginx系のサーバーの場合
今のレンタルサーバーは.htaccessに記述することが解消されました。
しかし、今度どのようなサーバーを利用するのかわからないため自分用に。
nginxの場合、.htaccessのファイルが見当たらない。その場合には、nginx.configに記述(サーバー側の設定が必要なため)
location ~ xmlrpc.php {
deny all;
access_log off;
log_not_found off;
return 444;
}
さいごに
個人でWordPressを使用したとしても、仕事で使用したとしても無関係とは言い難いです。
また、ヒューマンエラーで何かしらの脆弱性が見つかることもあるので、定期的にセキュリティの見直しは必要ということですね。
コメント