WordPressのPHPファイルにどのくらいアタックがきているのかをアプリを使って視覚的に分析する方法

先日、WordpressのPHPファイルへの攻撃(アクセス)回数を知る方法を紹介しました。

先日、当サイトがやたら重くなり、500エラーを頻出したことがありました。そのときは、以下の対策をとって、それ以降は5...

けれど、上記の方法は、Rubyという言語を用いるので、Windows環境では、Ruby環境をインストールする必要がありました。

その方法だと、ちょっと面倒くさいかもしれないので、GUIソフトで調べることができるものがないかと探してみたら、ApacheLogViewerというApache(サーバーソフト)のログを解析するソフトを発見しました。

今回は、このソフトを利用して、自分のWordpressサイトに来ている攻撃を、ある程度把握できる方法を紹介したいと思います。

ApacheLogViewerはWindows用のソフトなので、今回の方法は、その他の環境では行なえません。

スポンサーリンク
レクタングル(大)広告

ApacheLogViewerとは

2015-04-05_12h21_08

ApacheLogViewerは、Apache等のHTTPサーバーが出力するNCSA形式のログを見やすく表示するソフトです。

NCSA形式のログというのは、こんな形式のログです。

205.234.xxx.xxx - - [18/Mar/2015:01:29:33 +0900] "POST /xmlrpc.php HTTP/1.0" 200 370 "-" "Mozilla/5.0 (compatible; Googlebot/2.1;  http://www.google.com/bot.html)"
205.234.xxx.xxx - - [18/Mar/2015:01:29:50 +0900] "POST /xmlrpc.php HTTP/1.0" 200 370 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
205.234.xxx.xxx - - [18/Mar/2015:01:29:55 +0900] "POST /xmlrpc.php HTTP/1.0" 200 370 "-" "Mozilla/5.0 (compatible; Googlebot/2.1;  http://www.google.com/bot.html)"

このような、サーバーなどで記録されているログファイルを読み込んで、セッション状態を解析し、日付ごとに一覧表示してくれます。

今回の方法の主な手順

ApacheのログからWordpressのPHPファイルへのアクセス状況を知るには、以下の手順を行います。

  1. サーバーからログのダウンロード
  2. ApacheLogViewerのダウンロード&起動
  3. ログファイルを読み込む
  4. PHPファイルフィルターを追加

一番時間がかかるのは、サーバーから、ログファイルのダウンロード時間だと思います。その他の手順は特に難しくはないと思います。

サーバーからログのダウンロード

まずは、サーバーからログファイルのダウンロードを行います。

僕は、エックスサーバーを利用しているので以下では、エックスサーバーでの方法を紹介したいと思います。

エックスサーバーでログファイルをダウンロード

エックスサーバーの場合はサーバーパネルからログインしてパネルを開きます。

そして、「統計」項目の「ログファイル」をクリックします。

ログファイル

あとはドメインを選択して、

ドメインを選択する

ダウンロードするだけです。

アクセスログのダウンロード

エックスサーバーデフォルトの場合は「ドメイン名.access_log」というファイルがダウンロードされます。

このアクセスログには、すべてのファイルへのアクセスに対する「最大1週間分のログ」が書き込まれています。(おそらく日曜日にログ開始され、土曜日が終わると新しいファイルに更新される)

サイトによっては、ログファイルのサイズが、数百MB~数GBになるので、多少ダウンロードに時間はかかります。

その他のサーバ

その他のサーバーは、以下の方法でログを取得できると思います。

ロリポップ

ロリポップの生ログ(アクセスログ)の見方・確認方法 | レンサバネット

さくら

その他

その他のサーバーも、以下のような検索で取得方法がある場合は、結果に表示されると思います。

サーバー名 生ログ ダウンロード

サーバー名 Apache ログ ダウンロード

ApacheLogViewerのダウンロードと起動

まずは、ApacheLogViewerからダウンロードして、解凍をしてください。

その後、ソフトを起動してください。中にある「ApacheLogViewer.exe」を実行すれば起動します。

ApacheLogViewer.exe

ログファイルを読み込む

ApacheLogViewerを起動すると、ファイルを開くダイアログが表示されるので、ダウンロードしたログファイルを読み込みます。

ダイアログで選択するのが面倒くさい場合は、一旦キャンセルして、フォームにログファイルをドロップするだけでも読み込まれます。

フォームにファイルをドロップ

処理が遅いパソコンだと、解析に多少時間はかかるかもしれません。

読み込みが終わると、以下のように表示されます。

2015-04-05_12h21_08

PHPファイルフィルターの追加

上記の状態でも、いろいろな解析情報が見れて便利なのですが、今回は、PHPファイルへ来るアクセス(主にアタック)を表示させたいです。

このままでも、ある程度はわかるのですが、PHPファイルのみに絞って表示するために、フィルターを追加したいと思います。(PHPファイルに直接アクセスしてくるような場合は、一部を除き、ほぼ攻撃であろうということから)

そのためには、まず「Statistics(統計)」ボタンを押してください。

「Statistics(統計)」ボタンを押す

すると、以下のような画面が表示されるので「Settings(設定)」ボタンを押してください。

「Settings(設定)」ボタンを押す

すると、以下のようなダイアログが表示されるので、「個別対象アドレス」タブを選択し入力フォームに「*.php」と入力して「追加」ボタンを押してください。

個別対処アドレスの設定

以下のように追加されます。

PHPが追加される

次に、「集計グループ」タブを選択して、「新規」ボタンを押します。

2015-04-05_13h13_04

次に、新規作成したグループを選択して、「編集」ボタンを押します。

集計グループの編集

すると、以下のようなダイアログが表示されるので「名前」と「条件」に「php」と入力して「追加」ボタンを押します。

手芸グループの編集ダイアログ

以下のようになったら「OK」ボタンを押してください。

集計グループの編集完了

以下のように表示されたら、設定が完了したので「OK」ボタンを押してください。

ApacheLogViewerの設定完了

「再集計しますか?」とダイアログが出るので「はい」と押してください。

「再集計しますか」のダイアログ

結果の表示

あとは、ApacheLogStatisticsダイアログで、「php」を選択し、下の段の「Request(リクエスト)」タブを選択します。

リクエストの表示

すると、以下のようにPHPファイルへのアクセス(主にアタック)状態がわかります。

アクセスの多いPHPファイル

結果を右クリックして「Query部を除外して集計」を選択すればファイルのみで集計ができます。

クエリー部を除外して集計

クエリ(パラメーター)を除外すると以下のような結果になります。

クエリーを除外した結果

/wp-admin/admin-ajax.phpは、Ajaxを利用するページで呼び出されるので、ほとんどは攻撃ではないと思います。

今回は、前回の方法と違って、自分のアクセスも含まれているのを除けば、前回Rubyで抽出したものとほぼ同様の結果がえられました。(同じログファイルを解析しています)

/wp-admin/admin-ajax.php : 78916
/xmlrpc.php : 6570
/wp-cron.php : 897
/wp-comments-post.php : 812
/wp-login.php : 291
/wp-content/uploads/2014/11/functions.php : 39
//wp-admin/admin-ajax.php : 27
/admin.php : 18
/index.php : 14
/administrator/index.php : 13

あとは、PHPファイルへの直接のアクセスは、ほぼ攻撃と仮定して、アクセスの多いファイルには以下の対策を行えばOKだと思います。

先日、当サイトがやたら重くなり、500エラーを頻出したことがありました。そのときは、以下の対策をとって、それ以降は5...

対策後の結果を見る

あと、対策後の結果を見るには、とりあえず新しいログがたまるのを1週間ほど待ちます。

そのログファイルを、ApacheLogViewerに読み込みます。

その後、ApacheLogStatisticsダイアログから、「Error」タブから「403 Forbidden」を選択し「Request」タブを選択します。

エラーログで結果を確認

すると、以下のように「/xmlrpc.php」ファイルや「/wp-login.php」ファイルへのブロックがしっかりと動作していることがわかります。

403エラー結果

対策については以下を参照してください。

先日、当サイトがやたら重くなり、500エラーを頻出したことがありました。そのときは、以下の対策をとって、それ以降は5...

まとめ

このような感じで、PHPファイルへのアクセスを知ることで、「どのような対策をとるべきか?」などの目安をGUIで視覚的に、ある程度知ることができます。

また、対策後の結果も見ることができるようになります。

ApacheLogViewerは、その他にもサーバーのログを詳しく解析することができるようになっているので、「生ログを詳細に解析したい」なんて場合は、試してみると、何か発見があるかもしれません。

『WordPressのPHPファイルにどのくらいアタックがきているのかをアプリを使って視覚的に分析する方法』へのコメント

  1. 名前:ケイタ 投稿日:2015/04/05(日) 16:09:26 ID:0dfc259fb

    見出し部分に誤字がありましたよ~。

    × ロゴファイルを読み込む
    ○ ログファイルを読み込む

    ここ最近の不正アクセスに関する記事、大変参考にさせて頂いています。
    私の場合は「wp-comments-post.php」に攻撃があるっぽいのですが、コメントを必要としないサイトなので、「http\:\/\/0\.0\.0\.0\/」でブロックしたら持ち直しました。

  2. アバター画像 名前:わいひら 投稿日:2015/04/05(日) 16:33:57 ID:5a010f1ec

    ありがとうございます!
    音声入力だと、キーボード入力ではありえない変換ミスをしてしまいます;

    不正アクセス、スパムは本当に何とかならないですかね…。
    原因となる国は、ほぼ決まってますけど。
    コメントの場合だと、詐欺サイトへの宣伝とかも多いですね。

  3. 名前:タビエル 投稿日:2018/03/02(金) 15:55:27 ID:f3bb29511

    「プログラムの過負荷によりCGI/PHPが制限」でさくらから制限をかけられ503エラーの頻発で困っているところこちらの記事を見つけ、対策をとっています。まだ完璧な状態ではありませんですが、503エラーも減ってきて助かっております。ありがとうございます。

  4. アバター画像 名前:わいひら 投稿日:2018/03/02(金) 21:54:10 ID:e3e99de9c

    普通にログを分析するとは面倒くさいですよね^^;
    記事がお役に立てたのだとしたら、良かったです!