先日、WordpressのPHPファイルへの攻撃(アクセス)回数を知る方法を紹介しました。
けれど、上記の方法は、Rubyという言語を用いるので、Windows環境では、Ruby環境をインストールする必要がありました。
その方法だと、ちょっと面倒くさいかもしれないので、GUIソフトで調べることができるものがないかと探してみたら、ApacheLogViewerというApache(サーバーソフト)のログを解析するソフトを発見しました。
今回は、このソフトを利用して、自分のWordpressサイトに来ている攻撃を、ある程度把握できる方法を紹介したいと思います。
ApacheLogViewerはWindows用のソフトなので、今回の方法は、その他の環境では行なえません。
目次
ApacheLogViewerとは
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ファイルへのアクセス状況を知るには、以下の手順を行います。
- サーバーからログのダウンロード
- ApacheLogViewerのダウンロード&起動
- ログファイルを読み込む
- PHPファイルフィルターを追加
一番時間がかかるのは、サーバーから、ログファイルのダウンロード時間だと思います。その他の手順は特に難しくはないと思います。
サーバーからログのダウンロード
まずは、サーバーからログファイルのダウンロードを行います。
僕は、エックスサーバーを利用しているので以下では、エックスサーバーでの方法を紹介したいと思います。
エックスサーバーでログファイルをダウンロード
エックスサーバーの場合はサーバーパネルからログインしてパネルを開きます。
そして、「統計」項目の「ログファイル」をクリックします。
あとはドメインを選択して、
ダウンロードするだけです。
エックスサーバーデフォルトの場合は「ドメイン名.access_log」というファイルがダウンロードされます。
このアクセスログには、すべてのファイルへのアクセスに対する「最大1週間分のログ」が書き込まれています。(おそらく日曜日にログ開始され、土曜日が終わると新しいファイルに更新される)
サイトによっては、ログファイルのサイズが、数百MB~数GBになるので、多少ダウンロードに時間はかかります。
その他のサーバ
その他のサーバーは、以下の方法でログを取得できると思います。
ロリポップ
ロリポップの生ログ(アクセスログ)の見方・確認方法 | レンサバネット
さくら
その他
その他のサーバーも、以下のような検索で取得方法がある場合は、結果に表示されると思います。
サーバー名 生ログ ダウンロード
サーバー名 Apache ログ ダウンロード
ApacheLogViewerのダウンロードと起動
まずは、ApacheLogViewerからダウンロードして、解凍をしてください。
その後、ソフトを起動してください。中にある「ApacheLogViewer.exe」を実行すれば起動します。
ログファイルを読み込む
ApacheLogViewerを起動すると、ファイルを開くダイアログが表示されるので、ダウンロードしたログファイルを読み込みます。
ダイアログで選択するのが面倒くさい場合は、一旦キャンセルして、フォームにログファイルをドロップするだけでも読み込まれます。
処理が遅いパソコンだと、解析に多少時間はかかるかもしれません。
読み込みが終わると、以下のように表示されます。
PHPファイルフィルターの追加
上記の状態でも、いろいろな解析情報が見れて便利なのですが、今回は、PHPファイルへ来るアクセス(主にアタック)を表示させたいです。
このままでも、ある程度はわかるのですが、PHPファイルのみに絞って表示するために、フィルターを追加したいと思います。(PHPファイルに直接アクセスしてくるような場合は、一部を除き、ほぼ攻撃であろうということから)
そのためには、まず「Statistics(統計)」ボタンを押してください。
すると、以下のような画面が表示されるので「Settings(設定)」ボタンを押してください。
すると、以下のようなダイアログが表示されるので、「個別対象アドレス」タブを選択し入力フォームに「*.php」と入力して「追加」ボタンを押してください。
以下のように追加されます。
次に、「集計グループ」タブを選択して、「新規」ボタンを押します。
次に、新規作成したグループを選択して、「編集」ボタンを押します。
すると、以下のようなダイアログが表示されるので「名前」と「条件」に「php」と入力して「追加」ボタンを押します。
以下のようになったら「OK」ボタンを押してください。
以下のように表示されたら、設定が完了したので「OK」ボタンを押してください。
「再集計しますか?」とダイアログが出るので「はい」と押してください。
結果の表示
あとは、ApacheLogStatisticsダイアログで、「php」を選択し、下の段の「Request(リクエスト)」タブを選択します。
すると、以下のように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だと思います。
対策後の結果を見る
あと、対策後の結果を見るには、とりあえず新しいログがたまるのを1週間ほど待ちます。
そのログファイルを、ApacheLogViewerに読み込みます。
その後、ApacheLogStatisticsダイアログから、「Error」タブから「403 Forbidden」を選択し「Request」タブを選択します。
すると、以下のように「/xmlrpc.php」ファイルや「/wp-login.php」ファイルへのブロックがしっかりと動作していることがわかります。
対策については以下を参照してください。
まとめ
このような感じで、PHPファイルへのアクセスを知ることで、「どのような対策をとるべきか?」などの目安をGUIで視覚的に、ある程度知ることができます。
また、対策後の結果も見ることができるようになります。
ApacheLogViewerは、その他にもサーバーのログを詳しく解析することができるようになっているので、「生ログを詳細に解析したい」なんて場合は、試してみると、何か発見があるかもしれません。
見出し部分に誤字がありましたよ~。
× ロゴファイルを読み込む
○ ログファイルを読み込む
ここ最近の不正アクセスに関する記事、大変参考にさせて頂いています。
私の場合は「wp-comments-post.php」に攻撃があるっぽいのですが、コメントを必要としないサイトなので、「http\:\/\/0\.0\.0\.0\/」でブロックしたら持ち直しました。