Preface :
AWstatsは、元々英語のWeb統計解析ツールだが、ryuさん が翻訳して日本語化している。AWstats6.0には脆弱性が発見されているので、本家から2005/2現在最新のawstats6.4を別途ゲットする。2005年1月に以下のawstat6.0にセキュリティホールが発見されている。
https://www.netsecurity.ne.jp/1_1422.html の情報より
ログ解析プログラムであるAWStatsは、awstats.plスクリプトがユーザ入力を適切にチェックしていないことが原因で複数のセキュリティホールが存在する。この問題が悪用されると、ローカルおよびリモートの攻撃者に任意のコマンドを実行される可能性がある。 [更新]
2005/01/17 登録
危険度:高
影響を受けるバージョン:6.3未満
影響を受ける環境:UNIX、Linux、Windows
回避策:6.3以降へのバージョンアップ
つまり、悪い事されるから「6.3以上のバージョンにアップデートせよ。」って言っている。
そんなことから、まず ryuさんとこ からAWStats60_Jpn.tar.gzをゲットする。
(かなり労力を使って作っておられるので、本人に敬意を表すためにも使用感など同サイトの掲示板に投稿するとよいだろう。)
そんでもって、ここ からawstats-6.4.tgzをゲットする。
1.展開
# cd /usr/local/src
# tar zxvf AWStats60_Jpn.tar.gz
# chown -R root.root AWStats60
# tar zxvf awstas-6.4.tgz
# chown -R root.root awstats-6.4
2.必要ファイルのコピー
6.4のアップデート差分ファイルを6.0へコピーする。基本的に、awstats.plとlibディレクトリの中身を上書きすれば良い。
# cd AWStats60_Jpn/wwwroot/cgi-bin
# ls -al
drwxr-xr-x 5 root root 4096 Sep 29 01:52 .
drwxr-xr-x 7 root root 4096 Jan 26 2004 ..
-r-xr-xr-x 1 root root 5407 Dec 28 2003 awredir.pl
-rw-r–r– 1 root root 70189 Sep 29 01:47 awstats.model.conf
-r–r–r– 1 root root 51900 Jan 26 2004 awstats.model.conf.
original
-r-xr-xr-x 1 root root 526477 Feb 9 09:48 awstats.pl
drwxr-xr-x 2 root root 4096 Sep 27 15:20 lang
drwxr-xr-x 2 root root 4096 Feb 9 09:49 lib
drwxr-xr-x 3 root root 4096 Jan 26 2004 plugins
-rwxr-xr-x 1 root root 2058 Sep 27 15:17 utf8_decode.pl
# cp /usr/local/src/awstats-6.4/wwwroot/cgi-bin/awstats.pl .
# cd lib
# cp /usr/local/src/awstats-6.4/wwwroot/cgi-bin/lib/* .
# cd ../../
3.インストール及び設定
1)ただひたすらコピー
# ls -al
drwxr-xr-x 7 root root 4096 Jan 26 2004 .
drwx—— 5 root root 4096 Sep 29 01:03 ..
drwxr-xr-x 5 root root 4096 Sep 29 01:52 cgi-bin
drwxr-xr-x 3 root root 4096 Jan 26 2004 classes
drwxr-xr-x 2 root root 4096 Jan 26 2004 css
drwxr-xr-x 9 root root 4096 Jan 26 2004 icons
drwxr-xr-x 2 root root 4096 Jan 26 2004 js
# cp -R classes css js /usr/local/apache/
# cd icon
# ls -al
drwxr-xr-x 9 root root 4096 Jan 26 2004 .
drwxr-xr-x 7 root root 4096 Jan 26 2004 ..
drwxr-xr-x 2 root root 4096 Jan 26 2004 browser
drwxr-xr-x 2 root root 4096 Jan 26 2004 clock
drwxr-xr-x 2 root root 4096 Jan 26 2004 cpu
drwxr-xr-x 2 root root 8192 Jan 26 2004 flags
drwxr-xr-x 2 root root 4096 Jan 26 2004 mime
drwxr-xr-x 2 root root 4096 Jan 26 2004 os
drwxr-xr-x 2 root root 4096 Jan 26 2004 other
# cp -R * /usr/local/apache/icons/
# cd ../cgi-bin
# ls -al
total 684
drwxr-xr-x 5 root root 4096 Sep 29 01:52 .
drwxr-xr-x 7 root root 4096 Jan 26 2004 ..
-r-xr-xr-x 1 root root 5407 Dec 28 2003 awredir.pl
-rw-r–r– 1 root root 70189 Sep 29 01:47 awstats.model.conf
-r–r–r– 1 root root 51900 Jan 26 2004 awstats.model.conf.original
-r-xr-xr-x 1 root root 526477 Feb 9 09:48 awstats.pl
drwxr-xr-x 2 root root 4096 Sep 27 15:20 lang
drwxr-xr-x 2 root root 4096 Feb 9 09:49 lib
drwxr-xr-x 3 root root 4096 Jan 26 2004 plugins
-rwxr-xr-x 1 root root 2058 Sep 27 15:17 utf8_decode.pl
# cp -R * /usr/local/apache/cgi-bin/
# cd /usr/local/apache/cgi-bin/
# cp awstats.model.conf awstats.conf
2)awstats.confの編集
awstats.confは、ryuさんが日本語で詳しくコメントしてあるので特に説明することがないので自分の設定した内容のみ記述する。
設定項目は、awstats.confの最初の部分だけで良いかと思う。実際に俺はこれしかいじらなかった。
以下、俺のawstats.confの内容。
# vi awstats.conf
# ログファイル置き場パス。
LogFile=”/usr/local/apache/cgi-bin/access_log.utf8″
# 解析したいログの種別。
# W – Webサイトのログファイル
#
LogType=W
# ログの形式を指定。
# 1 – ApacheもしくはLotus Notes/Dominoのnative combinedログ形式
#
LogFormat=1
# ログのフィールドセパレータがスペースでない場合,、以下のパラメータを利用すれば
# 変更することが出来る。
#
LogSeparator=” “
# “SiteDomain”には, Webサイトに到達するために利用される統計対象のWebサイトの
# ドメイン名もしくはイントラネットのサーバー名を指定。
# CNAMEしたときのエイリアスホスト名が良いと思う。例えば、Webサーバならwww.hogehoge.comとか。
SiteDomain=”www.hogehoge.com”
# ここには、誰かが統計対象サイトに到達するために利用される可能性がある。
# 上記以外の全てのドメイン名やアドレス、バーチャルホストのエイリアス名などを
# 指定。
# 例: “www.myserver.com localhost 127.0.0.1 REGEX[mydomain\.(net|org)$]”
# WebサーバのFQDN(web.hogehoge.com)とIPアドレス(xxx.xxx.xxx.xxx)を俺は書いた。
HostAliases=”web.hogehoge.com localhost xxx.xxx.xxx.xxx 127.0.0.1 REGEX[myserver\.com$]”
# 観覧してきたホストの逆引きを行うか否かを指定する。
# 逆引きを行わないときは、0を指定。
# 逆引きを行うときは、1を指定する。(問い合わせを行うためパフォーマンスが少々落ちる)
#
DNSLookup=1
# awstatsのデータ更新格納先。
# 例: “/var/cache/awstats”
# 例: “../data”
# 例: “C:/awstats_data_dir”
# Default : “.” (このディレクトリawstats.plと同一のディレクトリ)
#
DirData=”.”
省略
# ICONディレクトリ指定(Defaultは/iconになっているため/iconsに訂正)。
#
DirIcons=”/icons”
以下省略
3)awstats.cronの編集
問題は、apacheのファイルパスなので見直して訂正すること。
俺の場合は、ソースからコンパイルしたので、以下のようなパスに変更した。
後は、awstats.htmlファイルのオーナーとグループを適切な物に直す。
# vi /etc/awstats.cron
#! /usr/bin/perl
system(“/usr/local/apache/cgi-bin/utf8_decode.pl < /usr/local/apache/logs/access_log > /usr/local/apache/cgi-bin/access_log.utf8”);
open(LOG,”+</usr/local/apache/logs/access_log”);
truncate(LOG,0);
close(LOG);
system(“/usr/local/apache/cgi-bin/awstats.pl -config=awstats.conf -update > /dev/null”);
system(“/usr/local/apache/cgi-bin/awstats.pl -config=awstats.conf -output > /usr/local/apache/htdocs/awstats.html”);
system(“chown nobody.nogroup /usr/local/apache/htdocs/awstats.html”);
4)httpd.confの編集
以下の部分のみ訂正。
# vi /usr/local/apache/conf/httpd.conf
途中省略
#CustomLog /usr/local/apache/logs/access_log common
をコメントして、
CustomLog /usr/local/apache/logs/access_log combined
にする。
4.動かす
1)awstats.plを起動する
ブラウザのナビゲーションから、
http://www.hogehoge.com/cgi-bin/awstats.pl
を実行する。旨く日本語表示出来ればばんざ~い \(^o^)/。
2)awstats.cronを実行する
awstats.htmlを生成するため、awstats.cronをcronを使って定期的に実行する。
試しに、手動実行。
# /etc/awstats.cron
Can’t locate Jcode.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at /usr/local/apache/cgi-bin/utf8_decode.pl lin
e 7.
BEGIN failed–compilation aborted at /usr/local/apache/cgi-bin/utf8_decode.pl line 7.
するとこんなエラーが出た。おいおいおいおい、Jcode.pmがねーぞ!って言ってる。
こんなときは、CPAN Shellを使ってinstall Jcodeしよう。
# perl -MCPAN -e shell
Terminal does not support AddHistory.
cpan shell — CPAN exploration and modules installation (v1.7602)
ReadLine support available (try ‘install Bundle::CPAN’)
cpan> install Jcode
CPAN: Storable loaded ok
Going to read /root/.cpan/Metadata
Database was generated on Sat, 19 May 2007 09:54:13 GMT
LWP not available
Trying with “/usr/bin/wget -O -” to get
http://ftp.cpan.jp/authors/01mailrc.txt.gz
–12:55:27– http://ftp.cpan.jp/authors/01mailrc.txt.gz
=> `-‘
Resolving proxy… 192.168.255.6
Connecting to proxy|192.168.255.6|:3128… connected.
Proxy request sent, awaiting response… 200 OK
Length: 132,523 (129K) [text/plain]
100%[====================================>] 132,523 760.45K/s
12:55:28 (756.20 KB/s) – `-‘ saved [132523/132523]
Going to read /root/.cpan/sources/authors/01mailrc.txt.gz
Trying with “/usr/bin/wget -O -” to get
http://ftp.cpan.jp/modules/02packages.details.txt.gz
–12:55:29– http://ftp.cpan.jp/modules/02packages.details.txt.gz
=> `-‘
Resolving proxy… 192.168.255.6
Connecting to proxy|192.168.255.6|:3128… connected.
Proxy request sent, awaiting response… 200 OK
Length: 558,905 (546K) [text/plain]
100%[====================================>] 558,905 911.76K/s
12:55:29 (909.74 KB/s) – `-‘ saved [558905/558905]
Going to read /root/.cpan/sources/modules/02packages.details.txt.gz
Database was generated on Sat, 30 Jun 2007 01:57:36 GMT
HTTP::Date not available
There’s a new CPAN.pm version (v1.9102) available!
[Current version is v1.7602]
You might want to try
install Bundle::CPAN
reload cpan
without quitting the current session. It should be a seamless upgrade
while we are running…
Trying with “/usr/bin/wget -O -” to get
http://ftp.cpan.jp/modules/03modlist.data.gz
–12:55:40– http://ftp.cpan.jp/modules/03modlist.data.gz
=> `-‘
Resolving proxy… 192.168.255.6
Connecting to proxy|192.168.255.6|:3128… connected.
Proxy request sent, awaiting response… 200 OK
Length: 136,189 (133K) [text/plain]
100%[====================================>] 136,189 849.88K/s
12:55:40 (847.80 KB/s) – `-‘ saved [136189/136189]
Going to read /root/.cpan/sources/modules/03modlist.data.gz
Going to write /root/.cpan/Metadata
Running install for module Jcode
Running make for D/DA/DANKOGAI/Jcode-2.06.tar.gz
Trying with “/usr/bin/wget -O -” to get
http://ftp.cpan.jp/authors/id/D/DA/DANKOGAI/Jcode-2.06.tar.gz
–12:55:44– http://ftp.cpan.jp/authors/id/D/DA/DANKOGAI/Jcode-2.06.tar.gz
=> `-‘
Resolving proxy… 192.168.255.6
Connecting to proxy|192.168.255.6|:3128… connected.
Proxy request sent, awaiting response… 200 OK
Length: 350,545 (342K) [application/x-tar]
100%[====================================>] 350,545 961.17K/s
12:55:44 (957.74 KB/s) – `-‘ saved [350545/350545]
CPAN: Digest::MD5 loaded ok
Trying with “/usr/bin/wget -O -” to get
http://ftp.cpan.jp/authors/id/D/DA/DANKOGAI/CHECKSUMS
–12:55:45– http://ftp.cpan.jp/authors/id/D/DA/DANKOGAI/CHECKSUMS
=> `-‘
Resolving proxy… 192.168.255.6
Connecting to proxy|192.168.255.6|:3128… connected.
Proxy request sent, awaiting response… 200 OK
Length: 39,304 (38K) [text/plain]
100%[====================================>] 39,304 –.–K/s
12:55:45 (587.41 KB/s) – `-‘ saved [39304/39304]
Checksum for /root/.cpan/sources/authors/id/D/DA/DANKOGAI/Jcode-2.06.tar.gz ok
Scanning cache /root/.cpan/build for sizes
Jcode-2.06/
Jcode-2.06/Changes
Jcode-2.06/Changes.ver0X
Jcode-2.06/Jcode/
Jcode-2.06/Jcode/_Classic.pm
Jcode-2.06/Jcode/Constants.pm
Jcode-2.06/Jcode/H2Z.pm
Jcode-2.06/Jcode/Nihongo.pod
Jcode-2.06/Jcode/Tr.pm
Jcode-2.06/Jcode/Unicode/
Jcode-2.06/Jcode/Unicode/Constants.pm
Jcode-2.06/Jcode/Unicode/NoXS.pm
Jcode-2.06/Jcode.pm
Jcode-2.06/Makefile.PL
Jcode-2.06/MANIFEST
Jcode-2.06/META.yml
Jcode-2.06/README
Jcode-2.06/t/
Jcode-2.06/t/_test_unicode.pl
Jcode-2.06/t/ambiguous.pl
Jcode-2.06/t/append.t
Jcode-2.06/t/benchmark.pl
Jcode-2.06/t/convert.t
Jcode-2.06/t/fun.pl
Jcode-2.06/t/getcode.t
Jcode-2.06/t/h2z.t
Jcode-2.06/t/hankaku.euc
Jcode-2.06/t/hiragana.euc
Jcode-2.06/t/._jfold.t
Jcode-2.06/t/jfold.t
Jcode-2.06/t/length.t
Jcode-2.06/t/mime.t
Jcode-2.06/t/new.t
Jcode-2.06/t/perl581.t
Jcode-2.06/t/._regex.t
Jcode-2.06/t/regex.t
Jcode-2.06/t/stripped.euc
Jcode-2.06/t/table.euc
Jcode-2.06/t/table.jis
Jcode-2.06/t/table.sjis
Jcode-2.06/t/table.ucs2
Jcode-2.06/t/table.utf8
Jcode-2.06/t/._tr.t
Jcode-2.06/t/tr.t
Jcode-2.06/t/unibench.pl
Jcode-2.06/t/x0212.euc
Jcode-2.06/t/x0212.jis
Jcode-2.06/t/x0212.ucs2
Jcode-2.06/t/x0212.utf8
Jcode-2.06/t/zenkaku.euc
Jcode-2.06/Unicode/
Jcode-2.06/Unicode/euc2uni.h
Jcode-2.06/Unicode/Makefile.PL
Jcode-2.06/Unicode/uni.c
Jcode-2.06/Unicode/uni2euc.h
Jcode-2.06/Unicode/Unicode.pm
Jcode-2.06/Unicode/Unicode.xs
CPAN.pm: Going to build D/DA/DANKOGAI/Jcode-2.06.tar.gz
Checking if your kit is complete…
Looks good
Writing Makefile for Jcode
cp Jcode/Nihongo.pod blib/lib/Jcode/Nihongo.pod
cp Jcode.pm blib/lib/Jcode.pm
Manifying blib/man3/Jcode::Nihongo.3pm
Jcode/Nihongo.pod:1: Unknown command paragraph “=encoding euc-jp”
Manifying blib/man3/Jcode.3pm
/usr/bin/make — OK
Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl “-MExtUtils::Command::MM” “-e” “test_harness(0, ‘blib/lib’, ‘blib/arch’)” t/*.t
t/append…..ok
t/convert….ok
t/getcode….ok
t/h2z……..ok
t/jfold……ok
t/length…..ok
t/mime…….ok
t/new……..ok
t/perl581….ok
t/regex……ok
t/tr………ok
All tests successful.
Files=11, Tests=244, 7 wallclock secs ( 5.65 cusr + 0.46 csys = 6.11 CPU)
/usr/bin/make test — OK
Running make install
Installing /usr/local/share/perl/5.8.8/Jcode.pm
Installing /usr/local/share/perl/5.8.8/Jcode/Nihongo.pod
Installing /usr/local/man/man3/Jcode.3pm
Installing /usr/local/man/man3/Jcode::Nihongo.3pm
Writing /usr/local/lib/perl/5.8.8/auto/Jcode/.packlist
Appending installation info to /usr/local/lib/perl/5.8.8/perllocal.pod
/usr/bin/make install — OK
cpan> exit
Terminal does not support GetHistory.
Lockfile removed.
そして、もう一度、
# /etc/awstats.cron
エラーなしで旨くいったら、ばんざ~い \(^o^)/
ブラウザのナビゲーションから、
http://www.hogehoge.com/awstats.html
を入力して旨く統計表示が出たら、ばんざ~い \(^o^)/
3)九龍で動かす
/etc/crontabに以下を記述。定期的に、awstats.cronを実行してawstats.htmlを書き換え。
# AWSTATS CRON
01 * * * * root /etc/awstats.cron > /dev/null 2>&1
以上
コメント