No.15 セキュリティを考えてみよう6
LOG解析ってどうやるの?
2001,9/24 完成
2003,1/3 リンク切れチェック


1.LOGってなにもの?
いや、サーバーにLOGというものがあるというのは知ってはいたんですよ。(普通知ってるか、(^_^;) )
サーバーに対して誰が(IPアドレス)がいつ、どこ(どのページ)にアクセスして成功したか、失敗したかがすべて記録されているものだ、と。
でも実際のLOGファイルを見てみたら
6xx.2xx.1xx.2xx - - [16/Sep/2001:06:45:39 +0900] "GET /server/no7/mail.gif HTTP/1.1" 304 0」 
というような記録が延々と延々と10MBも20MBも続いているんですぜぇ。
この膨大なテキストファイルをいちいち見てられるわけないだろーーーー!!
きっと自動で解析してくれるツールがあるに違いない!!
というわけでLOG解析の技を見に付けるべくNo.15のテーマとしたのでした。

常日頃まじめにLOGを解析していれば自分のサーバーへのアクセスの傾向が把握できるため、
ハッカーにアタックされ始めた時に「おや?LOGの傾向がいつもと違うぞ??」と早期発見ができるそうです。
ウェッブ上でお店を開いている人だと、お客の好みを解析するための「LOG解析」という考え方もありますが
今回はあくまでセキュリティ向上のための「LOG解析」の路線でいきたいと思います。


2.まずはLOGを見てみよう

LOG解析の第一歩として実際のLOGの中味を見てみました。

なんのLOG? LOGの抜粋(赤字部分は修正したところ) コメント
AN HTTPD
www server
LOG
6xx.2xx.1xx.2xx - - [16/Sep/2001:06:45:39 +0900] "GET /server/no7/
mail.gif HTTP/1.1" 304 0
こちらは普通のLOG。
AN HTTPDの設定で「標準」というタイプ。
この標準とはどういう定義?
最後の304と0ってどういう意味なんだろう?
2xx.1xx.2xx.3xx - - [16/Sep/2001:08:58:26 +0900] "GET /default.ida?
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXX%u9090%u6858%ucbd3%u7801
%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u
9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=
a HTTP/1.0" 404 134
これだけのXXXXXが続いているんですぜぇ。
これがうわさのCode Red?それともNimda?
見ているといかにもサーバーが攻撃されている
って感じで怖くなりますね。
AN HTTPD
Proxy LOG
192.168.xxx.xxx - - [16/Aug/2001:10:23:59 +0900] "GET
http://www.infoseek.co.jp/ HTTP/1.1" 200 34030
Proxyとserverはフォーマットが同じですね。
AN HTTPD
GateWay LOG
Sun Sep 16 08:52:59 2001 Proxy/Gateway: 200 Binary mode ready
Sun Sep 16 08:52:59 2001 Proxy/Gateway: RETR ua.log
Sun Sep 16 08:52:59 2001 Proxy/Gateway: (8064 bytes data received)
同じくAN HTTPDのGateWayのLOGです。
wwwサーバー、Proxy、GateWayで違うものなん
ですね。
Tyny FTTPD
LOG
2001-07-22(日) 06:30 9/xxxxxx/QUIT/OK/ ユーザーはログアウトしました
2001-07-22(日) 07:16 10/LOGINOUT//OK/ 192.168.xxx.xxxから接続要求がありました
2001-07-22(日) 07:16 10/xxxxxxx/USER/OK/ パスワードを要求します
2001-07-22(日) 07:16 10/xxxxxx/PASS/OK/ ログインしました。
こちらは日本語のLOGです。
あー安心する。 (^_^)
メッセージの説明はHELPに書いてありました。
ZoneAralm
LOG
PE,2001/08/15,19:05:18 +9:00 GMT,POP3Trap,0.0.0.0:0,N/A
PE,2001/08/15,19:15:37 +9:00 GMT,PCCClient,2xx.2xx.2xx.1xx:0,N/A
FWIN,2001/08/15,19:47:56 +9:00 GMT,192.168.xxx.xxx:xxx,192.168.xxx.xxx:xxx,TCP (flags:S)
これも違いますね。
頭のPEとかFWINとかってなんでしょう?

こうやってみるとWWWサーバーとプロクシが同じ以外、見事に違っているもんですねぇ。
サーバーやアプリケーションごとにやっている事が違うので中身が違うのはまだわかるものの共通のパラメーターである日付・時間の記述方法もバラバラです。
TynyFTTPDのLOGは専用のフォーマットみたいです。
さて、どこから手をつけたものか?
今回は、やはりwwwサーバーのLOG解析を考えてみることにします。


3.LOGのフォーマットを調べてみよう

まず、LOGフォーマットの情報を求めてWebをさ迷い歩いてみました。

項目 元サイト サイト 値段他 コメント
情報 ASAHI NET アクセスログの
使用方法
なぜかASAHIネットにLOGのフォーマットの解説が
ありました。
なーるほど最後の数字はファイルの容量だったのか。
The internet &
 IT Network
Web ログ解析 記事 LOGフォーマットの話題なども出ている。
CLF=Common Log Format。読み応えあり。
rei's アクセス・ログを解析する 記事 Analog褒めちぎりですねぇ。
Empowering
Internet
Generation
第一歩はログのチェック 記事 LOGのフォーマットの解説もあり!
「NCSA共通(コモン)ログ」ですかぁ。
キーワードだな、これは。
あと、今までぼんやりとしか把握していなかったサーバーの
状態コードの一覧表が載っています。
400番台は要注意!!!
こういう意味だったのかぁぁぁ!!
今更ながらかんどー
SUN WEB SERVER
管理 ガイド

リンク切れてます。(T_T)
2003,1/3
ログファイルのフォーマット CLFのフォーマット解説に加えてELF(拡張ログ
ファイルフォーマット)
の説明もあり。
エラーメッセージの解説もあります。
D・ネットプラン
リンク切れてます。(T_T)
2003,1/3
Apacheサーバ構築 下の方にLOGに関する解説があります。CLFの解説の他に
「LogFormatで定義する書式」で追加のパラメーターの
説明
もでています。
このD・ネットプランセキュリティ情報サイト
としてもとても有用
なサイトのようです。
OCN メール&ウェブ
オンラインマニュアル
ここにもCLFのフォーマット解説が。
OCNのサービスの一環なんですね。
ma2tak的SWIKIページ Apacheの
アクセスログ形式(CLF)
CLFのフォーマットについて解説。
ApacheのLOG形式はCLFなんですねぇ。

これをまとめてみると、
 ・HTTPサーバーのLOGフォーマットとしてCLF(=Common Log Format)というものがある。
 ・CLFはNCSAとも呼ばれる。(この点、ちょっとあやふや。知っている方いらっしゃいましたら教えて下さい。)
 ・CLFはApacheの標準LOGフォーマットとしても使われている。
 ・MSのIISのデフォルトのLOGフォーマットはCLFではないがオプションでCLFを選ぶ事もできる。
ということが分かってきました。なるほどぅ。(うなずき、うなずき、)

次に、CLFがAnHTTPDのLOGに当てはまるか当てはめてみました。

AnHTTPD
LOG
6xx.2xx.1xx.2xx
-
-
[16/Sep/2001:06:45:39 +0900]
"GET /server/no7/mail.gif HTTP/1.1"
304
0
パラメーター
Host
Ident
Authuser
Date
Request
Status
Byte
意味 訪問者のIPアドレスまたはドメイン名 クライアントについての識別情報。
通常”-”。
アクセス時に基本HTTP認証が必要だった訪問者のユーザ名。通常”-”。 リクエストの日時
[日/月/年:時:分:秒 タイムゾーン]
訪問者が要求したリクエスト。
("")で囲まれている。
GETで始まる。
クライアントに送信されたサーバーのステータスコード。重要! クライアントに送信されたファイルのバイト数。

おぉ!AnHTTPDのLOGがCLFのフォーマットにぴったり収まるではないですか。よかったぁ。 (^_^)
ちなみに各パラメーター間はスペースで区切られています。
また、Statusの意味ここに出ています。なるほど、今まで何気に見ていたサーバーのエラーコードにはこういう意味があったんですね。
400番台のエラーを表すステータスコードには要注意!!です。アタックされている可能性があります。

他にも拡張LOGフォーマットもあるみたいでクライアントのOS/ブラウザ/どこから飛んできたか、等の情報がわかるようです。
これらの情報もとても気になりますが、まずは確実に立ち上げるという意味でAnHTTPDの「標準」ログ(=CLF)をベースに検討することにします。


4.LOG解析ソフトってどんなのがあるの?

ということでLOG解析ソフトを探し回ってみました。

項目 元サイト サイト 値段他 コメント
サーバー
LOG解析
Analog Analog本家
日本 Analog ユーザ会
フリー フリーでは有名なLOG解析ソフトらしい。
元は英語だけど日本語化、マニュアルの和訳もある。
かなり良さそうなのですが設定がたいへんそう???
webalizer webalizer
MyLinux日本語化計画?!
たぶん。。
フリー
Analoigに並ぶLOG解析ソフト(らしい)
グラフィカルな解析結果でかっこいいが日本語化しなくちゃ
いけないのがたいへんそう。
WebLog 公式ページ WebLog フリー IISのアクセスログを解析するツールだがNCSA形式にも
対応している。VB6.0のランタイムが必要。
”WebLog Convert”というソフトも付属しておりIPアドレスを
ドメインに変換してくれるがこれを使うにはIISが必要らしい。
(残念!)。サポート掲示板も充実しておりかなりよさげ。
UHOO! LogQuick

ダウンロード(Vecter)
1000円 ApacheとIISに対応(ということはCLFにも対応ってこと?)
DNSによる名前解決機能、複数ログファイルの一括集計
(日付指定可能)、不正アクセス分割機能、HTMLとCVSでの
出力が可能、など機能盛りだくさん。
エラーログの詳細をレポートしてくれるのはいいなぁ。
レジストリを汚さずにインストールできるというのもよいなぁ。
動作にはMS VB6.0ランタイムとJet4.0(なんスか?)が必要。
日本シンク(株) シンクプロ ログ解析 フリー NCSA(CLF)と結合ログフォーマットに対応。
MS IISには非対応。
動作にはMS Access2000が必要(残念!)。
PowerSOFT Web知る 8800円 MSのIISやPWS対応LOG解析ソフトですがCLFにも対応
しているみたいです。
(株)アイ・エス・ティ NetIntellect 49800円!! 様々な解析ができるみたいなんですが49800円はなぁ。。。
ちょっと手が出ないですね。
このサイト、Logをメールで送れば解析してくれたり(1回のみ)
メーリングリストもやってたりします。
ほかにもFAQや用語説明も役立ちます。
NIPPON SYSTEM
DEVELOPMENT
AccessHunter 10万円!! これは企業向けにマーケッティング情報を解析する
のが主な目的のようです。
10万円じゃ個人には手が出ないなぁ。
(株)ネットマークス SAL for apache 5000円 apache専用のLOG解析ソフト。apache専用=CLFなので
AnHTTPDでも使えるはず。VBランタイムが必要。
データベースはMS ACCESS形式。
Yuki's Web Witness 3500円 NCSA以外にもW3C拡張形式(なんだ?)や
マイクロソフトIIS形式のアクセスログにも対応している。
サイボーズ ホームページ視聴率 99800円 あのサイボーズのシリーズにこういうものがあったんですね。
サーバーにインストールして使用。
NCSA 形式とIIS スタンダード形式に対応。
CGI On The Wind Access log
解析スクリプト
フリー HTMLのbody TAGに埋めこんでアクセスしてきた人の
ドメイン、ブラウザ、OS、時間等を表もしくはグラフで表示
してくれるCGI。
サーバーのLOGを直接解析してくれるわけではないので
今回の趣旨からは外れるけど面白そう。
もりもりスクリプト集 もりもりログ フリー HTMLに埋めこんでLOGの製作・解析を行うCGI
サービス CyberLand Advanced Counter
Hit! Graph
無料/有料 HTMLにTAGを埋めこむとそのページのアクセス内容を
解析してくれるサービス。
無料版はバナーがついたり色々制約あり。
Hti! Graphはカウンターなし。
その他 Pickee's PUB analogで集計 Analogの簡単な使い方説明。
オホーツクファンタジア ログの管理と解析 下の方にLOG解析ツールの紹介があり、どれも便利そう
なんですが悲しいかな全部英語なんです。もったいない。
CQ出版社 WWWサーバ・アクセス
ログの解析
雑誌 analog専用の解説書まで出ているんですねぇ。

ふーーむ、こうやってみると色々あるもんですねぇ。
今回は、
 1)サーバーが吐き出すLOGを解析するソフト
を探しているわけですが他にも、
 2)ホームページのHTMLにTAGを埋めこんでCGI上でLOGを取り、解析まで行うソフト。
   (上の表の項目で”CGI”のところ。)
 3)TAGを埋めこむところまでは2)と同じだがLOG取り・解析を別のサーバーで行うサービス
   (上の表の項目で”サービス”のところ。)
など、色々な形態があることがわかりました。
今回はセキュリティ向上が目的なので”1)”を中心に探しましたが”2)”に相当するCGIも色々種類があるようです。
”2)”のタイプだとCFL+αの情報が得られるようです。CGIタイプも興味はわくのですが、サーバーのパワーを
食ってしまう事と今回の目的から外れてしまうので”1)”のタイプで探すことにします。

さて、”1)”のタイプの中から企業で使うような何万円もするソフトを外すと、Analogwebalizerがメジャー・フリー・高機能と
三拍子そろっていてよさそうです。
しかし、日本語パッチがあるとは言え、大元が英語なのが私にとってはいたいです。
ということで、今回は比較的導入が楽そうで一通りの事ができるWebLogLogQuickを試す事にしました。

まず、WebLogをインストールして8/10から9/24の朝までのLOG 15MBを解析にかけてみました。
しかし、、、「LOGの容量が大きすぎる!」と怒られてしまいました。 (T_T)
15MBでエラーがでちゃっては悲しいなぁ。。。。ということでWebLogはあえなく断念。
(こうやって使えば問題ないよ、という情報をお持ちの方、こちらまでお知らせくだせい。)

次に、LogQuickを試してみました。
VB6.0のランタイムとJET4.0を合わせると12MBを超えてしまいますがまぁ仕方がない。
地道にインストールして同じく15MBのLOGファイルを解析した結果がこれです。

2001年8月10日〜9月24日の朝までのLOG解析結果

これだけ出力するのにPentiumIII/600MHzで5-10分程度でしょうか。
もっと細かく解析することもできるようですが時間がかかるのでまだやっていません。
一番下のエラーの大半はNimdaが原因のようです。
このソフト、シェアウェアですが仕様期間は特に設定されていない代わりに
お金を払うまで解析をするサーバー上のファイル名の設定を毎回設定しなければなりません。
いずれにしろ1000円とリーズナブルな価格設定なのでお金を払って色々試してみようと思います。

と、一応目鼻がついたところで本日(9/24)はここまで。


←戻る  進む→
ホームに戻る