Jan 28, 2005

webalizer その2
検索文字列が文字化けするので、その対応をした。
あっちこっちに perl で書かれたスクリプトを見かけたが、まぁ php の勉強がてらということで php で書いてみた。
#!/usr/local/bin/php
<?php
    $fName = $argv[1];
    $fp = fopen($fName,"r");
    if (!$fp)
    {
        exit;
    }
    while (!feof($fp))
    {
        $buf = fgets($fp,4096);
        $str = rawurldecode($buf);
$str2 = mb_convert_encoding($str,"EUC-JP","UTF-8"); print $str2; } fclose($fp); ?>
とまぁ、いいかげん極まりない(エラーチェックが少なすぎ)コードなんだが、恥を忍んで晒してみた ^^; これを logconv という名前で /usr/local/bin に保存。

このスクリプトは引数にログファイル名を渡すと、1行ずつ読み込んで、rawurldecode で URLエンコードされた検索文字列をデコードして、さらに mb_convert_encoding で EUC-JP に文字コードを変換して標準出力に出力していく。

それから、どうやら webalizer は進行中のログに対して行わない方がいいらしいので、1日一回ログをローテートして、その最新版に対して webalizer を実行することにした。1日一回のみ解析結果が更新される。まぁグラフマニアとしてはちょっと悲しいけど ^^;
流れとしては以下の通り。

まず apache を止める。
現在のログを access_log.050128 と日付付きにする(実際には時間も付けた)。
apache を再開。
webalizer を実行して dns_cache を更新
もう1度 webalizer を実行してレポートを更新
最後にログを圧縮。

ローテート用のスクリプトはシェルスクリプトにした ^^;
こちらも恥を忍んで晒しておく。
#!/bin/sh

DATE=`date +%y%m%d%H%M%S`
LOGDIR="/var/log/apache"
LOGFILE=access_log

CURRENTLOG=$LOGDIR/$LOGFILE
LATESTLOG=$LOGDIR/$LOGFILE.$DATE

# stop apache
/usr/local/apache/bin/apachectl stop > /dev/null

# log rotate
mv $CURRENTLOG $LATESTLOG

# start apache
/usr/local/apache/bin/apachectl start > /dev/null

# webalizer to make dns_cache
cat $LATESTLOG | /usr/local/bin/webalizer -Q -N 10 -

# webalizer to make report
/usr/local/bin/logconv $LATESTLOG | /usr/local/bin/webalizer -Q -

# compress
gzip $LATESTLOG
ちなみに webalizer は標準入力からログを放り込むと dns_cache だけ作成できる。ホスト名の逆引き用にまずはこのキャッシュファイルを更新。次に logconv で URLエンコードされた検索語句を変換してレポート作成。これで検索文字列のところを文字化けさせずにレポートを作成することができる。
-Q オプションはまぁいろいろお知らせメールが来るとうっとしいので、付けてみた。最初は付けずに様子みた方がいいんだけどね。

うちのサーバーは夜中 1:30 に毎日スクリプトが起動する。なのでそれのついでにこの logrotate を起動することにした。ということで cron で個別に起動はしない。同様に cron で起動してた webalizer も削除。

dns_cache ファイルは /etc/webalizer.conf で以下の様に設定した。
DNSCache  /var/log/dns_cache.db
それから apache のログも自分がアクセスした分はログに残さないように下記の様に変更した。変更ファイルは http.conf。
SetEnvIf Remote_Addr 172.16.xx.xx nolog

SetEnvIf Request_URI "^/_mem_bin/" worm nolog
SetEnvIf Request_URI "^/_vti_bin/" worm nolog
SetEnvIf Request_URI "^/c/" worm nolog
SetEnvIf Request_URI "^/d/" worm nolog
SetEnvIf Request_URI "^/msadc/" worm nolog
SetEnvIf Request_URI "^/MSADC/" worm nolog
SetEnvIf Request_URI "^/script/" worm nolog
SetEnvIf Request_URI "^/default.ida/" worm nolog
SetEnvIf Request_URI "root\.exe"" worm nolog
SetEnvIf Request_URI "cmd\.exe"" worm nolog
SetEnvIf Request_URI "NULL\.IDA"" worm nolog

ErrorLog logs/error_log
CustomLog logs/access_log combined env=!nolog
CustomLog logs/worm_log common env=worm
最初の行で、指定したアドレス(172.16.xx.xx)からアクセスがあったら nolog とフラグ?をセット。
次の行からの Request_URI は CodeRed とかのウィルスのアクセス。これらの場合は worm と nolog という2つのフラグをセット。
最後の方で、nolog がセットされてない場合だけ access_log に書き出し、worm がセットされていれば worm_log に書き出す。それ以外はログを残さない。

ということで、明日からの解析結果が楽しみだ。


Related Info.

Comments

No comments yet

Add Comments

※下記の単語・フレーズはコメントで使用できません。大文字・小文字は同一視します。
poker, backgammon, tramadol, casino, insurance, loans
JavaScript is required when you submit comment %20%20%3c%61%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%22%3e%3c%2f%61%3e %3c%66%6f%72%6d%20%6d%65%74%68%6f%64%3d%22%70%6f%73%74%22%20%61%63%74%69%6f%6e%3d%22%23%6e%75%63%6c%65%75%73%5f%63%66%22%3e %09%3c%64%69%76%20%63%6c%61%73%73%3d%22%63%6f%6d%6d%65%6e%74%66%6f%72%6d%22%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%61%63%74%69%6f%6e%22%20%76%61%6c%75%65%3d%22%61%64%64%63%6f%6d%6d%65%6e%74%22%20%2f%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%75%72%6c%22%20%76%61%6c%75%65%3d%22%68%74%74%70%3a%2f%2f%6b%69%6d%69%74%61%6b%65%62%6c%6f%67%2e%6e%65%74%2f%69%74%65%6d%2f%35%39%22%20%2f%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%69%74%65%6d%69%64%22%20%76%61%6c%75%65%3d%22%35%39%22%20%2f%3e %09%09 %09%09%3c%6c%61%62%65%6c%20%66%6f%72%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%62%6f%64%79%22%3eコメント%3a%3c%2f%6c%61%62%65%6c%3e %09%09%3c%74%65%78%74%61%72%65%61%20%6e%61%6d%65%3d%22%62%6f%64%79%22%20%63%6c%61%73%73%3d%22%66%6f%72%6d%66%69%65%6c%64%22%20%63%6f%6c%73%3d%22%34%30%22%20%72%6f%77%73%3d%22%31%30%22%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%62%6f%64%79%22%3e%3c%2f%74%65%78%74%61%72%65%61%3e %09%09%3c%6c%61%62%65%6c%20%66%6f%72%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%6e%61%6d%65%22%3eお名前%3a%3c%2f%6c%61%62%65%6c%3e %09%09%3c%69%6e%70%75%74%20%6e%61%6d%65%3d%22%75%73%65%72%22%20%73%69%7a%65%3d%22%34%30%22%20%6d%61%78%6c%65%6e%67%74%68%3d%22%34%30%22%20%76%61%6c%75%65%3d%22%22%20%63%6c%61%73%73%3d%22%66%6f%72%6d%66%69%65%6c%64%22%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%6e%61%6d%65%22%20%2f%3e %09%09%3c%6c%61%62%65%6c%20%66%6f%72%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%6d%61%69%6c%22%3eウェブサイト%3a%3c%2f%6c%61%62%65%6c%3e %09%09%3c%69%6e%70%75%74%20%6e%61%6d%65%3d%22%75%73%65%72%69%64%22%20%73%69%7a%65%3d%22%34%30%22%20%6d%61%78%6c%65%6e%67%74%68%3d%22%36%30%22%20%76%61%6c%75%65%3d%22%22%20%63%6c%61%73%73%3d%22%66%6f%72%6d%66%69%65%6c%64%22%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%6d%61%69%6c%22%20%2f%3e %09%09%3c%6c%61%62%65%6c%20%66%6f%72%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%65%6d%61%69%6c%22%3eメール%3a%3c%2f%6c%61%62%65%6c%3e %09%09%3c%69%6e%70%75%74%20%6e%61%6d%65%3d%22%65%6d%61%69%6c%22%20%73%69%7a%65%3d%22%34%30%22%20%6d%61%78%6c%65%6e%67%74%68%3d%22%31%30%30%22%20%76%61%6c%75%65%3d%22%22%20%63%6c%61%73%73%3d%22%66%6f%72%6d%66%69%65%6c%64%22%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%65%6d%61%69%6c%22%20%2f%3e %09%09 %09%09%3c%69%6e%70%75%74%20%74%79%70%65%3d%22%63%68%65%63%6b%62%6f%78%22%20%76%61%6c%75%65%3d%22%31%22%20%6e%61%6d%65%3d%22%72%65%6d%65%6d%62%65%72%22%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%72%65%6d%65%6d%62%65%72%22%20%20%2f%3e %09%09%3c%6c%61%62%65%6c%20%66%6f%72%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%72%65%6d%65%6d%62%65%72%22%3e情報を記憶しておく%3c%2f%6c%61%62%65%6c%3e %09%09%3c%69%6e%70%75%74%20%74%79%70%65%3d%22%73%75%62%6d%69%74%22%20%61%6c%74%3d%22コメントを追加%22%20%76%61%6c%75%65%3d%22コメントを追加%22%20%63%6c%61%73%73%3d%22%66%6f%72%6d%62%75%74%74%6f%6e%22%20%2f%3e %09%3c%2f%64%69%76%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%6e%70%5f%70%72%6f%74%65%63%74%62%79%6d%64%35%22%20%76%61%6c%75%65%3d%22%61%64%38%32%35%34%37%65%61%64%36%34%64%34%33%31%38%36%37%38%32%38%63%32%39%63%63%66%64%36%62%37%22%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%6e%70%5f%70%72%6f%74%65%63%74%62%79%6d%64%35%5f%68%61%73%68%22%20%76%61%6c%75%65%3d%22%36%62%65%62%30%64%36%37%64%61%65%64%36%39%34%35%38%65%38%64%38%35%34%30%37%34%33%39%30%64%34%31%22%3e %3c%2f%66%6f%72%6d%3e %20%20

OpenID を使ってログインすることができます。

Identity URL:

Trackbacks

トラックバック
このエントリにトラックバックはありません
このトラックバックURLを使ってこの記事にトラックバックを送ることができます。 もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。.
visitor stats