WordPress: xmlrpc.php へのPOSTアクセス

WordPress には xmlrpc.php というファイルがあります。これは投稿設定でXML-RPCによる投稿を許可する場合に有効にするようですがが、私は利用してないためOffの状態で使っています。
ところが、このファイルへ海外からPOSTでアクセスしてくる奴が結構いて、一体何が目的だろうかと思っていました。Webログには、以下のようなアクセスログがたくさん残っています。

178.32.233.175 - - [01/Dec/2012:04:36:57 +0900] "POST /notes/xmlrpc.php HTTP/1.0" 200 523

今日、ようやく、xmlrpc.php へアクセスされる理由が分かりました。というより、推測出来ました。

iTunes のAppStore に iPhone/iPad用アプリ WordPress というものがあるのを発見。これは、iPhone/iPadからWordpress サイトを管理するためのアプリケーションのようで、メモ入力が楽になるのかも!と早速ダウンロードしてiPadにインストールしてみました。
アカウント追加を選択し、自分のWordPressのURL とログインアカウント情報を入力 して次の画面に進めますが、この時 XML-RPC が有効になっていないと、先に進めません。
一時的に、XML-RPCのチェックボタンを有効にして保存してみると、iPadからWordPressのダッシュボードが使えるようになりました。SafariからWordPressダッシュボードにアクセスするよりは遙かに簡単。Webログファイルを見ると、見事に同様のログが残っていました。

"POST /notes/xmlrpc.php HTTP/1.1" 200 310050 

なるほどね〜。

海外アクセスポイントから xmlrpc.php へアクセスしてる奴は、簡単なパスワード設定をしていてセキュリティーの弱いサイトに入れないものかと狙っているんだろうと、推測出来ました。アカウントはURLから推測出来るので、あとはパスワードだけ。ワードプレスログインURLからハッキングを試みるよりもプログラムで繰り返しxmlrpc.phpをアタックする方が楽なんだろうと思います。ホストのsshやtelnetリモートアクセスポートへ何度も接続を試みてログインを試すのと同じみたい。推測されにくいちゃんとしたパスワードを設定していればxmlrpc.phpを有効にしていても問題無いと思います。

xmlrpc.phpへアクセスしてきた奴に理由を尋ねることは出来ないので、推測することしか出来ませんけど、ようやく気持ち悪いアクセスログの理由が分かったような気がします。

2016/12/01 追記

現在は xmlrpc のコントロールを設定画面から行うことは出来なくなっていて、常にONの状態です。どうしても xmlrpc.php へのアクセスをコントロールしたい場合は、Apache の .htaccess への記述で行う必要があります。
xmlrpc.php がアクセスされる様子を観察すると、このファイルは WordPress 開発者サイトから JetPack のコントロールや統計情報を収集するために使用されています。サイト統計情報を表示したり、Jetpack依存の機能を使う度にwordpress.com から xmlrpc.php へのアクセスが発生しています。下手にアクセスコントロールを行ってしまうと、JetPackプラグインが使えなくなってしまうでしょうから、今はこのファイルをそのままにしておくのが安全です。

Comments

  1. xmlrpc.php をアクセスする原因として、他にも理由があることが判明。

    「pingback」というものがブログシステムにはあるらしい。「pingbackの仕様」というキーワードで検索してみると、「誰かがWordpressで書かれた記事に対してリンクを張ると、そのことを自動でリンク先サイトに知らせる仕組み」ということで、リンク先、リンク元双方がpingbackの仕組みを持っているサイトの場合に、記事に対してリンクを張ると xmlrpc.php へのアクセスが発生するらしい。
    私にはこの詳しい仕様がよくわからなくて、POSTメソッドでアクセスが発生するのかどうかは理解出来ていない。リンク通知くらいならGETでいいじゃん と思うわけだ。Webのアクセスログを見てみたら、以下のアクセスログが残っていました。

    ptr12.businessside7.com – – [03/Dec/2012:11:18:23 +0900] “GET /notes/category/security/ HTTP/1.0” 200 30804
    ptr12.businessside7.com – – [03/Dec/2012:11:18:31 +0900] “POST /notes/xmlrpc.php HTTP/1.0” 200 523

    どう考えたって、記事を読んでからリンクを張るまでの時間が8秒ってあるわけがない。アクセス元もスウェーデンだし、おかしいだろう!
    どう考えたって普通の使い方じゃない。

    別の日のログをチェックしてみたところ、下記のような国内サイトからGETメソッドでアクセスされている例もあるので、こっちの方がブックマークとかリンクされた気配を感じるところ。

    “GET /notes/xmlrpc.php HTTP/1.1” 200 42
    “GET /notes/xmlrpc.php?rsd HTTP/1.1” 200 888

  2. WordPressが3.5にアップデートされ、

    「XML-RPC API
    WordPress API は常に有効化されるようになりました。また、ユーザーの取得、プロフィール編集、投稿リビジョンの管理、投稿の検索をサポートします。」

    だって。3.5にアップデートすると、xmlrpc.php は常に有効になるらしい。

    1. 選択的に海外からのxmlrpc.php へのアクセスをブロックできればいいのですが、こんなログも残っています。

      「192.0.81.121 – – [02/Mar/2014:01:01:41 +0900] “POST /notes/xmlrpc.php?for=jetpack&token=Q%26O%5EV%40H%23RU%5EzPDSbpA8rKE3MMpfi5%29KV%3A1%3A1&timestamp=1393689701&nonce=pJYIpXmf2M&body-hash=wXr7GZCz2xqW8DDTozDNJgHm91s%3D&signature=40xxGvyyxhVJSF%2B6JCin19%2B0PB4%3D HTTP/1.0” 200 10001 “-” “Jetpack by WordPress.com”
      192.0.81.121 – – [02/Mar/2014:01:01:46 +0900] “POST /notes/xmlrpc.php HTTP/1.0” 200 439 “-” “The Incutio XML-RPC PHP Library”
      192.0.81.13 – – [02/Mar/2014:02:09:14 +0900] “POST /notes/xmlrpc.php?for=jetpack&token=Q%26O%5EV%40H%23RU%5EzPDSbpA8rKE3MMpfi5%29KV%3A1%3A1&timestamp=1393693754&nonce=1yj0GXiY8S&body-hash=wXr7GZCz2xqW8DDTozDNJgHm91s%3D&signature=mxW7dZR8D%2FnQYSnrwaQGyb2onq0%3D HTTP/1.0” 200 10001 “-” “Jetpack by WordPress.com”」

      エージェント情報を信じるとすると、どうも、Jetpack 用のPOSTアクセスらしく、単純にブロックすると、WordPressをより便利に使うためのプラグインまで封じてしまう可能性があり、私はブロックできずにいます。エージェントが偽装されている可能性もありますが、xmlrpc.php に関してはサイト運営者には手が出せない領域であるだけに、私の場合はアクセス制限を設けずに運営しているところです。ファイル名を自由に変更できればいいんですけどね~。

lifewithunix.jp管理人 へ返信するコメントをキャンセル