WordPressとZapierを連携させるとxmlrpc.phpにアクセスがある

2019/09/27

WordPress

t f B! P L
自動化サービスでは、日本だとIFTTTとZapierが有名だと思います。

よくある使い方としては、「ブログに記事投稿」→「Twitterに新着記事を自動投稿」などがあります。

このブログではIFTTTを使っていますが、IFTTTは、1アカウントにつき、Twitterアカウントを1つしか設定できないという欠点があります。
Twitterの宣伝アカウントは分けているので、ブログとは別に運営しているメディアがいくつかあると困ります。

そこでZapierを使います。
Zapierは、1アカウントにつきTwitterのアカウントを複数設定できるので、上記の問題を解決できます。
Zapierでは、自動化タスクのことをZapといいますが、無料アカウントではZapが5つまでというレギュレーションがあります。

XMLRPCに5分おきくらいにログインがある

上記の通り要件はいい感じなので、さくっとWordPressとZapierを連携させます。
ウェブ上でポチポチやるだけで楽に連携できます。
WordPressのIDとパスワードが必要になります。

さて、WordPressの有名なセキュリティプラグインにSiteGuardがあります。
SiteGuradの機能のひとつとしてログイン履歴を取ってくれるのですが、これを見るとなんとXMLRPCに5分おきくらいにログインがありました。
しかも、すべてのログインが成功しています。
夏は過ぎてますがこれは怖い話ですね。

IPアドレスはバラバラ、これも怖い!

Zapier様だった

このログイン、お世話になっているZapier様でした。
まず、そもそもおかしいのが、最初からログイン成功しているんですね。
私はパスワードを使いまわしてないので、初回からログイン成功されるのはおかしいです。

まずZapierのWordPressヘルプページを読みます。

大事なところだけピックアップすると
  • ZapierからのアクセスはUser-Agent: Zapierになっている
  • Zapier用に新しくWordPressユーザーを作ったほうがよい
  • AWSを使っているので、IPアドレスが静的でない
と書かれています。

サーバーにsshしてログを見ると、たしかにすべてのアクセスがUser-Agent: Zapierになっていました!
これで一安心。
どうやら、新規記事がないかXMLRPC経由でチェックしてくれていたようです。

また、SiteGuardのログイン履歴では、ログイン時間やログインユーザー名が見れます。
もしZapier用にユーザーを作っていれば、ログインユーザー名を見れば一目瞭然でした。

IPアドレスもチェックしましたが、アメリカからのアクセスでした。
AWSのUSリージョンを使っているようです。

RSSを利用する手もある

新着記事をトリガーにして、Twitterに投稿したいだけなら、RSSでも実現可能です。
ZapierでRSS→Twitterを連携させます。
これなら、WordPressのID/パスワードは不要なので、いくぶんセキュアかと思います。
特にZapier様を疑っているわけではないですが、私はRSS→Twitterの構成に変えました。

この構成にしてからは、XMLRPC経由でのログインはなくなりました。

今日のベストプラクティス

まずはサーバーのログ確認。

また、今回はRSSで解決できましたが、外部サービスと連携させるときは権限を限定した専用ユーザーを作るといいと思います。

ラベル

QooQ