ウェブログの設定とか、鯖の設定の記録とか、あと個人的なコトとか、そんなゴミな日記つーか記録帳

2003年12月22日

アクセス解析中のエラー回避

webalizerがアクセス解析している時、たまに

Warning: Truncating oversized request field

のようなエラーを吐き出すコトがあります。アクセスログの1行が異常に長くてwebalizerが解析出来ないのが理由です。

どうしてアクセスログの1行が異常に長くなるかというと、『GET /NULL.IDA?CCCCCCCCCCCCCCCCCC..中略』などが記録されてるから。

そうです、ワームです。Apacheでこういうログを記録させなければOKなのでAapcheのhttpd.confを書き換えて対処しました。

httpd.confへ追記
# ステータス414の時は記録しないように書き換え
LogFormat "%h %l %u %t \"%!414r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

# .gif、.jpg、.png の呼び出し記録をログに書き込まない
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)$" nolog


# ワームからの呼び出し記録をログに書き込まない
# 新種対応の為に単独で指定し続けてく
SetEnvIfNoCase Request_URI "default\.ida" worm
SetEnvIfNoCase Request_URI "cmd\.exe" worm
SetEnvIfNoCase Request_URI "root\.exe" worm
SetEnvIfNoCase Request_URI "NULL\.IDA"worm


# アクセスログを保存するパス名と行のフォーマット(前項で定義したもの)を
# 指定します。
# もし、 内にこのディレクティブを指定しなければ、そのホスト
# へのアクセスログはここに保存されますが、記述されているのならば、ここ
# には保存されません。
#

CustomLog /var/log/httpd/access_log combined env=!nolog
CustomLog /var/log/httpd/worm_log combined env=worm

ワームからのアクセスはaccess_logに記録しないでworm_logへと記録するようにしました。/etc/logrotate.d/apacheも書き換えて、worm_logもローテートする様に設定してあります。

Apacheログファイルのローテート設定
/var/log/httpd/access_log {
    missingok
    postrotate
	/bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
    endscript
}

/var/log/httpd/agent_log {
missingok
postrotate
/bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
endscript
}

/var/log/httpd/error_log {
missingok
postrotate
/bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
endscript
}

/var/log/httpd/referer_log {
missingok
postrotate
/bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
endscript
}

/var/log/httpd/ssl_request_log {
missingok
postrotate
/bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
endscript
}

/var/log/httpd/worm_log {
missingok
postrotate
/bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true
endscript
}

あとはApacheを再起動して終わりです。

補足
1.nminoruさんから指摘を受けたのでSetEnvIfをSetEnvIfNoCaseに訂正しました。SetEnvIfNoCaseは正規表現のマッチングを大文字小文字を区別しないコマンドです。どうもありがとうございました。
2.WebDAVの脆弱性を突いたウィルスのログを記録しないように加筆。

投稿者 monar : 2003年12月22日 12:32 | トラックバック
コメント

IIS のスクリプト名は大文字と小文字の両方を許しているようなので、default.ida と DEFAULT.IDA の両パターンが見られます。
SetEnvIf は SetEnvIfNoCase の方がよろしいかと。

Posted by: nminoru : 2004年06月04日 06:45

指摘どうもありがとうございます。特定パターンのワームしか記録されてないから気がつきませんでした。確かにSetEnvIfNoCaseの方が良いですよね。

Posted by: @モナー : 2004年06月04日 22:51
コメントする









名前、アドレスを登録しますか?