webalizerのWarning

cronのログを見ていて

/etc/cron.daily/00webalizer:
Warning: Truncating oversized referrer field [10033]

のようなログに気がついた。調べてみると

このエラーはエラーメッセージにある通りaccess_logの行で1行あたりの文字数があまりにも多いものが存在したことが原因で起きます。
このような長い行は、IISを攻撃対象としているネットワークワーム(多分、Nimda)がバッファオーバーランを利用した攻撃を行うために非常に長いリクエストを発行し、それをApacheがaccess_logに保存することにより作成されます。

対策はwebalizerのソースコードをいじって長い行に対応できるようにするか、Apacheの設定でワームの攻撃をaccess_logに保存しないように設定するかだと思います。
後者の方法については「Apache NULL.IDA」で検索するとたくさん見つかると思います。

ということらしい。(参照:http://home.k05.itscom.net/aperuto/webalizer.html

で、さらに調べて、httpdのワームとかのログを別ファイルに保存するようにした。
(ついでに画像ファイルのログは記録しないようにした。)

httpd.confで

CustomLog logs/access_log combined

となっているところを

#CustomLog logs/access_log combined

SetEnvIf Request_URI “\.(gif|jpg|png|ico)$” no_log
SetEnvIf Request_URI “\.(ida|IDA|exe|printer|asp|dll)” worm no_log
SetEnvIf Request_URI “^/_mem_bin/” worm no_log
SetEnvIf Request_URI “^/_vti_bin/” worm no_log
SetEnvIf Request_URI “^/c/” worm no_log
SetEnvIf Request_URI “^/d/” worm no_log
SetEnvIf Request_URI “^/msadc/” worm no_log
SetEnvIf Request_URI “^/MSADC/” worm no_log
SetEnvIf Request_URI “^/scripts/” worm no_log
SetEnvIf Request_URI “^/default.ida” worm no_log
SetEnvIf Request_URI “root\.exe” worm no_log
SetEnvIf Request_URI “cmd\.exe” worm no_log
SetEnvIf Request_URI “NULL\.IDA” worm no_log
CustomLog logs/access.log combined env=!no_log
CustomLog logs/worm.log combined env=worm

のように修正。
修正後、httpdをリスタートして完了。