xmlrpc.phpへのアクセスをFWでブロック

WordPressを使っていると、ひっきりなしに招かれざる客からのアタックを受けるのがxmlrpc.phpとwp-login.phpの2つのファイルです。
プラグインなどをインストールして不正ログインを防いでる方も多いと思いますが、ログインを試み続けられるのも鬱陶しいので、今回無料CDNサービスcloudflareのFirewall設定で特定のIPアドレス以外からのアクセスをブロックしました。

 Cloudflareについて

Cloudflareというのは、CDNという負荷分散サービスを提供しているアメリカの会社です。
ここはドメイン維持管理料を原価で提供しているため(.comで年間8ドル程度)、ValueDomainから移管しました。
CDNの他にSSL証明書やFirewallなどのほとんどの機能を無料で使える上に、CDNとしては大手なので簡単にサービスがなくなる心配もなくオススメです。

https://www.cloudflare.com/ja-jp/

  Firewall設定

では早速設定していきます。
Cloudflareのサイトにログインし、ダッシュボードからFirewallのアイコンをクリック、メニューからファイアウォールルールを選択すると、今アクティブになっているファイアウォールルールの一覧が表示されます。

最初はルールがなにもないので、右側の青い「ファイアウォールルールを作成」ボタンをクリックして設定を追加していきます。

各項目を入力していきます。

ルール名:ここはわかりやすい名前を入力します。私はとりあえず「xmlrpc」にしました。

フィールド:プルダウンの一覧から「URI」を選択します。

オペレーター:「次を含む」を選択します。

値:ここは「/xmlrpc.php」と手入力します。

アクションを選択:「ブロック」のままにします。

ここまでの設定で、「/xmlrpc.phpというURIを含むリクエストをブロックする」というルールが作成できましたが、加えてIPアドレスの除外ルールを作成し、自分からのリクエストはブロックの対象から除外します。
(xmlrpc.phpを全く使わないのであれば、以下ルールは飛ばしてかまいません。)

「AND」ボタンをクリックして追加ルールを作成します。

フィールド:「送信元のIPアドレス」を選択します。

オペレーター:除外したいので「次にない」を選択します。

値:自身で使っているプロバイダのIPアドレスを入力します。サブネット指定も可能。
  私はKDDI系のプロバイダを使っており、IPアドレスが14.10.xx.xxだったので、「14.10.0.0/16」を入力しました。

(自身のアドレスを調べるのはここ。プロバイダの管理アドレスの範囲を調べるのはここ。)

IPアドレスはwhois情報にプロバイダの管理アドレス範囲が表示されますので、そのままマスク指定で入力します。

すべての入力が完了したら、下の「デプロイ」をクリックして設定を反映させます。

 確認

Firewallルールを設定後、数時間してから再度cloudflareを訪れると、Firewallの概要のところにブロックログが表示されます。

同じ要領でwp-login.phpもルールに追加してやると、WordPressがらみの不正アクセスは大幅に減らすことができます。
ただし、IPアドレスの除外ルールに漏れがあると、自身が管理画面にアクセスできなくなってしまいますのでその点は注意が必要です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする