デフォルトの設定では、ワームなど不要なアクセスもごっちゃにロギングしてしまう。
設定をカスタマイズして必要なログだけとることは大切なことかと思います。

確認事項

SetEnvIfの確認

Apache のモジュールのひとつである、SetEnvIf を使用します。
SetEnvIf はApache のインストール時にデフォルトで組み込まれていますが、念のため以下コマンドで確認。

# /usr/local/apache2/bin/apachectl -l
mod_setenvif.c

Worm のアクセスを別ファイルに記録する

アクセスログ解析を行うなど、ワームが残すログをaccess_log には記録したくない場合、ワームのログだけを worm_log に別出力できます。

httpd.confの編集

# vi /usr/local/apache2/conf/httpd.conf

ワームのアクセスを環境変数「worm」と「nolog」に記述するよう、下記を追記します。
追記する場所はどこでも構いませんが、LogFormat や CustomLog の記述がある辺りが後で見て分かりやすいと思います。

# CodeRed
SetEnvIfNoCase Request_URI "^/default.ida" worm nolog
#WINNTAutoAttack
SetEnvIfNoCase Request_URI "null\.ida" worm nolog
# NIMDA
SetEnvIfNoCase Request_URI "root\.exe" worm nolog
SetEnvIfNoCase Request_URI "cmd\.exe" worm nolog
SetEnvIfNoCase Request_URI "Admin\.dll" worm nolog
# worm virus
SetEnvIfNoCase Request_URI "^/_mem_bin/" worm nolog
SetEnvIfNoCase Request_URI "^/_vti_bin/" worm nolog
SetEnvIfNoCase Request_URI "^/c/" worm nolog
SetEnvIfNoCase Request_URI "^/d/" worm nolog
SetEnvIfNoCase Request_URI "^/msadc/" worm nolog
SetEnvIfNoCase Request_URI "^/scripts/" worm nolog

「nolog」に該当しないものを access_log に記録し、「worm」に該当するものを worm_log に記録するため、
CustomLog を下記のように変更。

# access log
CustomLog access_log combined env=!nolog
# worm access log
CustomLog worm_log combined env=worm

これにより、NimdaやCode Red、Code Blueなどによるログはaccess_logではなくworm_logに記録されるが、
WebDAVの脆弱性を突いた攻撃によるログはSetEnvIf では回避できません。
(URIが長すぎることによる414エラー(Request-URI Too Long)に対するログのほうが先に判断されるため。)
このログをaccess_logファイルに記録しないためには次のようにLogFormatを編集します。

LogFormat "%h %l %u %t \"%!414r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

apache再起動

httpd.confを編集後はapacheを再起動

# /usr/local/apache2/bin/apachectl restart

画像ファイルへのアクセスを記録しない

Apache のログはデフォルトでは、リクエストされた画像情報までログに残します。
しかし、これらの情報はあまり必要ないし、仮に1ページに10個の画像が配置されていたら、10行の画像情報のログを吐くことになるため、ログが無駄に肥大化します。
また、ログを閲覧する際にも非常に見にくくなりますので画像に関してはログには出力しないように設定しておきます。

httpd.confの編集

# vi /usr/local/apache2/conf/httpd.conf

以下のようにSetEnvIf ディレクティブを追記します。
環境変数「 nolog 」の中にログ採取しないファイルの拡張子を記述します。
.css と .js の情報もいらない場合は、ついでに追加しておきます。

SetEnvIfNoCase Request_URI "\.(gif)|(jpg)|(png)|(css)|(js)$" nolog

「nolog」に該当しないものを access_log に記録するため、CustomLog を下記のように変更。

CustomLog logs/access_log combined env=!nolog

apache再起動

httpd.confを編集後はapacheを再起動

# /usr/local/apache2/bin/apachectl restart

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-09-19 (日) 19:09:16