ISPに割り振られたIPリストを調べてホワイトリストを作成
なにやら「不正なアクセスを検知いたしました」というドキッとするメール。
今回「.htaccess」に記述した対策はまだ不正なアクセスを受けていない方にとっても有益な方法です。
良かったら最後までご覧ください。
以下、ロリポップ!から送られてきたメールの全文です。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 『ロリポップ!レンタルサーバー』をご利用の方にお送りしています ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 平素よりロリポップ!をご利用いただき、誠にありがとうございます。 この度、「◯◯◯◯◯◯」のご契約で利用されている WordPress の wp-login.php に対し、複数回のログイン試行が確認されました。 アクセスの内容より、総当たり攻撃や辞書攻撃など、WordPress への 不正なログインを試みるアクセスの可能性が高いと判断されたため、 弊社側で .htaccess による wp-login.php へのアクセス制限を実施し、 WordPress ダッシュボードへのログインができないよう対応を行っております。 お客様ご自身が WordPress にログインするため、 .htaccess を編集しアクセス制限を解除する必要がございます。 ■ .htaccess の設置場所 /◯◯◯◯◯◯/.htaccess お手数ですが、下記対策マニュアルをご確認いただき対策を 行っていただきますようお願いいたします。 ▽ WordPressの.htaccess編集方法 http://lolipop.jp/manual/blog/wp-htaccess/ また、サーバーやホームページのセキュリティ向上のためには、 ロリポップ!で行っておりますサーバー側の対策に加えて、 ユーザーの皆様にも対策を行っていただくことが重要です。 下記のページをぜひご確認ください。 ▽ サイト改ざんへの対策をお願いいたします - ロリポップ! http://lolipop.jp/security/ これからもより快適に、楽しくご利用いただけますよう 機能追加やサービス向上に努めてまいります。 今後とも、ロリポップ!をどうぞよろしくお願いいたします。 (省略)
状況の把握とロリポップ!推奨の対策
どうやらログイン画面にブルートフォース攻撃、または、その予兆があったというだけですね。
WordPressのルートディレクトリに設置された「.htaccess」の末尾に以下の記述が追加されていました。
# BEGIN Lolipop <Files wp-login.php> Order deny,allow Deny from all </Files> # END Lolipop
「.htaccess」の記述方法は「同一IPによる大量のスパムコメントを.htaccessでアクセス規制する方法」にまとめたので、必要な方は参照してください。
上記の設定は「wp-login.phpへのアクセスを全て拒否する」という設定です。
ロリポップ!の対策のページにあるように「Allow from <自分のIP>」と追加して、自分のIPからのみWordPressのログイン画面を表示できるようにする必要があります。
自分のIPアドレスは「cman.jpのIPアドレス確認」のページで簡単に確認することができます。
表示されたIPを元に「.htaccess」を編集します。
# BEGIN Lolipop <Files wp-login.php> Order deny,allow Deny from all Allow from <自分のIP> </Files> # END Lolipop
これでめでたし、めでたし。…しかしちょっと待って下さい。
このグローバルIP丸出しの時代に、自分のIPが変更される度に「.htaccess」の内容を編集して、WordPressにログインして…とやるのは億劫です。
そんな場合はISP(インターネットサービスプロバイダー)に割り当てられたIPの範囲を利用してホワイトリストを作成しましょう。
ISPのIPの範囲を調べて、全て許可する方法
ISPが取得しているIPの範囲はあまり公開されていませんが、以下の方法で調べることができます。
まず「JPNIC WHOIS Gateway」へアクセス。
「検索キーワード」に先ほど調べた自分のIPを入力して、検索タイプで「ネットワーク情報(IPアドレス)」を選択して「検索」をクリック。
表示された「組織名」をコピーします。
再び検索画面に戻って、今度は「検索キーワード」に「組織名」を入力。
「検索タイプ」で「ネットワーク情報(組織名、Organization)」を選択して「検索」をクリック。
すると以下のような一覧が表示されます。
表示されている全てのIPをコピーペーストして全部「.htaccess」に追加します。
上記のISPの例
# BEGIN Lolipop <Files wp-login.php> Order deny,allow Deny from all Allow from 49.236.232.0/21 Allow from 49.236.232.0/21 Allow from 110.232.236.0/22 Allow from 110.232.236.0/22 Allow from 115.165.184.0/21 Allow from 115.165.184.0/21 Allow from 202.122.24.0/21 Allow from 202.122.24.0/22 Allow from 202.122.28.0/23 Allow from 202.122.30.0/24 Allow from 202.122.31.0/24 Allow from 210.191.128.0/22 Allow from 210.191.128.0/24 Allow from 210.191.128.16/29 Allow from 210.191.129.0/24 Allow from 210.191.130.0/29 Allow from 210.191.132.0/22 Allow from 210.191.132.0/22 Allow from 210.191.136.0/21 Allow from 210.191.136.0/21 Allow from 210.191.144.0/20 Allow from 210.191.144.0/20 Allow from 219.103.96.0/20 Allow from 219.103.96.0/20 </Files> # END Lolipop
プレフィックス表示について 49.236.232.0/21のような表示の仕方をプレフィックス表示といいます。 IPの後に続く「21」意味ですが、マスク長という範囲を表す表記で、49.236.232.0から49.236.239.255までの範囲である、2048個のIPという意味です。 20であれば4096、19であれば8192といった具合に増えていきます。1つのIPを表すときにはマスク長を付けることはありませんが、付けるとしたら192.168.0.1/32となります。
これでISPによって動的にIPが割り振られたとしても「wp-login.php」にアクセスできるようになりました。
もし会社や出先でもログインする必要がある場合は、そのIPも調べて追加しておいてください。
注意点としてはISPの取得しているIPも変化することがあるので、100%確実にログインできるというわけではありません。
また、同じISPにブルートフォース攻撃をする者がいた場合にはアクセスを遮断することができません。
しかし、そもそもハッカーがまっとうなISPのIPを使って、足が付くようなヘマはしないと思うので、まず安心して良いと思います。
補足
「ロリポップ!で起きている大規模な改ざんからWordPressサイトを守る方法」でも解説しましたが、ログイン画面だけでなく編集画面も上記のホワイトリストを適用させたい場合は、「wp-admin」ディレクトリに「.htaccess」を作成して以下の内容を記述してください。
例)上記のISPの割り当ての場合
Order deny,allow Deny from all Allow from 49.236.232.0/21 Allow from 49.236.232.0/21 Allow from 110.232.236.0/22 Allow from 110.232.236.0/22 Allow from 115.165.184.0/21 Allow from 115.165.184.0/21 Allow from 202.122.24.0/21 Allow from 202.122.24.0/22 Allow from 202.122.28.0/23 Allow from 202.122.30.0/24 Allow from 202.122.31.0/24 Allow from 210.191.128.0/22 Allow from 210.191.128.0/24 Allow from 210.191.128.16/29 Allow from 210.191.129.0/24 Allow from 210.191.130.0/29 Allow from 210.191.132.0/22 Allow from 210.191.132.0/22 Allow from 210.191.136.0/21 Allow from 210.191.136.0/21 Allow from 210.191.144.0/20 Allow from 210.191.144.0/20 Allow from 219.103.96.0/20 Allow from 219.103.96.0/20
今回はディレクトリ全体に対して設定するため「<Files hoge>」等の指定は必要ありません。