Googleのアナリティクスを使ってアクセス解析を行っているブログは多いと思います。日々のデータ分析には欠かせないものになっていますよね。
しかし当ブログで最近データをみていると、アメリカからのアクセスがかなり増えた状況になっていました。全て日本語で書いているサイトなので、海外の方に気に入られる要素はないと思うのですが……。
さらに詳細を調べると「Illinois(イリノイ州)」の「Chicago(シカゴ)」からアクセスが集中していることも判明。いよいよ怪しいと思い調査を行った時の結果をまとめます。
そもそもの状況
まずはアナリティクスのデータを確認します。Googleのアナリティクスサイトに入ったら、ホームなどから国別のセッション数の項目をみます。
日本のPV数に対して、なかなかの割合でアメリカからのアクセスが来ている状態です。(そもそも日本のアクセス数もそこまで多いわけではありませんが)
上の画像にある「地域サマリー」を押して、さらに詳細を確認してみます。
出てきた地図からアメリカの部分をクリックしてみます。
上の画像のようにIllinois(イリノイ州)からのアクセスが集中していることを確認できました。また赤枠部分を押すと地域の詳細情報が確認できますが、全て「Chicago(シカゴ)」からのアクセスになっていました。
シカゴについてはアメリカの大きな都市ぐらいのイメージしかなかったのですが……。(あとは野球の報道で少し見るくらい?)
ここからのアクセスが集中する状況をさらに怪しく感じます。
アクセスログを確認
実際にアクセス状況を分析するためにアクセスログを確認してみます。※すでにアナリティクスでIPを取得できるように設定している方は必要のない作業です。
アクセスログは契約しているサービスによって確認できる方法が様々ですが、大手のレンタルサーバー会社は提供しているサービスだと思います。(契約サーバー名+アクセスログで検索するとマニュアルが出たりします)
サーバーのページで提供されたアクセス解析、もしくはアクセスログデータそのものをダウンロードして確認します。今回はアクセスログデータをダウンロードしての確認を行ってみました。
ほとんど隠す形にはなってしまいましたが、これが実際のアクセスログデータです。「.log」形式のデータをサーバーからダウンロードし確認しています。
このままでは、流石にどれが問題のアクセスかわからないので、IPアドレスをアクセスの多い順に並べ替えたいと思います。
アクセスログの分析
アクセスログの並べ替えには色々な方法があると思いますが、簡易的な方法を解説します。挑戦する方は以下を参考にやってみるのもいいかもしれません。
MacPCの場合
Macの場合はターミナル(Windowsでいうコマンドプロンプトのようなもの)を利用する方法が簡単かと思います。アプリメニューより「ターミナル」を開きます。
ターミナルを開いたら以下の操作手順で、アクセスが多いIPアドレス順で結果が表示されます。
1:「cd ~/」を入力しEnter
これで階層がホームに移ります。
2:「open .」を入力しEnte
ホームのフォルダーが開くと思います。
3:logファイルを入れる
名前は「log.log」などに書き換えておくと入力が楽です。
4:以下の処理を入力しEnter
※「log.log」の部分はファイル名を入れる。
cat log.log | awk -F' ' '{print $1}' | sort | uniq -c | sort -n -r
完了すると上の画像のような表示が行われると思います。
WindowsPCの場合
Windowsの場合、コマンドプロンプトで同様の整理ができるかが不明なので、Excelを使った方法を紹介します。Windowsでは「.log」ファイルはテキストで開けると思うので、全選択を行いコピーしておきます。
あとは以下の手順通りに進めれば、アクセスの多いIPを割り出すことができると思います。
1:B1を選択し貼り付け
これでlogデータがエクセルに移せます。
2:A1に以下の関数を入力
=COUNTIF($B:$B,"*"&LEFT(B1,15)&"*")
同一IPのカウントを行います。A1に入力したあとは全ての行にA1をコピーしたものを貼り付けてください。
3:大きい順に並べ替え
A1の列を選んだ状態で並べ替えを行います。これでアクセスの多い順に並べ替えが完了します。
※データ量が多くなると「2」の関数のコピーの段階でPCがかなり重くなると思いますが、しばらく処理の完了を待ってください。
アクセス元を調べる
IPの逆引きなどを利用し、実際のアクセス元を調べます。なお今回は場所のみ判別できればいいので、以下のサイト(KEIROMICHI)で調査を行います。
当サイトではアクセスの1/5程度が問題のアクセスであったため、その辺りの数値を順番に調査しました。結果イリノイ州からのアクセスは「23.○○○.〜〜」という「23」始まりのIPからの接続があることが判明しました。
ホスト名がIPアドレスそのままであったりと、なかなか怪しいアクセス元のようです。
こちらの情報をさらに調査します。Google検索で「23.○○○.〜〜 何」など、わりと直接的な文言で検索をかけてみると情報が出たりします。
アプリ攻撃や、ブルートフォース攻撃など様々な情報が出ました。おそらく海外からのボットによる不正アクセスだと考えられます。なお上の画像の日本語が怪しいのは自動翻訳のせいです。
※上の画像のサイトは色々な人が怪しいIPアドレスからのアクセスを報告するサイトです。わりと自由に報告できるようなので、報告数が少ない場合は信憑性は低いかもしれません。
ちなみにアナリティクスで海外からのアクセスとしてカウントされてしまうことがある「bing」のクローラーbot(bing検索にブログを表示するためにページ構成を調べる機能のようなもの)については、「logファイル」でIPを確認すると以下のようにbingbotという文字列が確認できると思います。
今回当サイトのイリノイ州からのアクセスは、bingではなかったため不正アクセスの可能性が高そうです。
アクセスに対応する
基本的に大手のレンタルサーバーであれば、海外からの不正攻撃を防ぐサービスは設定されていることがあります。そのため、特に対応が必要ない場合もあります。
しかし、日々不正なアクセスがあるのはなんとなくイヤな気持ちにもなるもの……。そこでここでは、ブログで特定のIPからのアクセスを拒否する設定について解説したいと思います。
アクセスを拒否する設定は、WordPressの場合2つの方法が考えられると思います。
1:「WP-ban」などの特定のIPからのアクセスを拒否するプラグイン
2:「.htaccess」での拒否設定
それぞれ長所と短所のある方法ではありますが、今回は「2」の方法を使いたいと思います。理由としては、プラグイン更新の手間を少なくしたいからです。
※「.htaccess」はサイトの表示に関わる重要なファイルですので、触るのを控えたい場合はプラグイン方式をおすすめします。
設定は簡単で、「.htaccess」のファイルを開き(ほとんどの場合サーバーのルートフォルダ直下にあります)以下のコードを追加するだけです。
order allow,deny
allow from all
deny from ○○○.○○○.○○○.○○○
deny from ○○○.○○○.○○○.○○○ //複数ある場合はこれも使う(必要ない場合は削除)
コードは「BEGIN WordPress」の上に追加しました。また、「○○○.○○○.○○○.○○○」の部分にはアクセスを拒否したいIPのアドレスを入れます。
なお、各行の意味は以下の通りです。
order allow,deny
処理の順番です。allow(許可)の処理をしてから、deny(拒否)の処理を行うという順番を表しています。
allow from all
全て許可という意味です。アクセスについて、一度許可を与える記述です。
deny from ○○○.○○○.○○○.○○○
IPアドレスを拒否するという設定です。一度許可をしたアクセスが、ここに書かれたIPだった場合は拒否をします。
この処理の意味は「アクセスについて許可を与えるが特定のIPは例外とする」という感じになります。よく使われる記述なので、おまじない的に覚えておいてもいいかもしれません。
※ここに誤って自身のIPアドレスを記載してしまうと、自分自身がサイトにアクセスできなくなってしまいます。ご注意ください。
設定を行って、実際に1日経過したデータは以下の通りです。
国別データの期間設定を「昨日」のみに設定し見てみました。しっかりと海外からのアクセスが制限され、日本からアクセスのみになっているのが確認できました。
以上が海外からのアクセスが増加した時の対応についてでした。あなたのブログでも、もし海外からのアクセスが増えすぎているようなら一度確認してみてはいかがでしょうか?