NOAD
デフォルトの設定では、ワームなど不要なアクセスもごっちゃにロギングしてしまう。~
設定をカスタマイズして必要なログだけとることは大切なことかと思います。
#contents
*確認事項 [#f2978891]
**SetEnvIfの確認 [#m29e97b2]
Apache のモジュールのひとつである、SetEnvIf を使用します。~
SetEnvIf はApache のインストール時にデフォルトで組み込まれていますが、念のため以下コマンドで確認。
# /usr/local/apache2/bin/apachectl -l
mod_setenvif.c
*Worm のアクセスを別ファイルに記録する [#j383786f]
アクセスログ解析を行うなど、ワームが残すログをaccess_log には記録したくない場合、ワームのログだけを worm_log に別出力できます。
**httpd.confの編集 [#p14edebf]
# 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再起動 [#xd5534c8]
httpd.confを編集後はapacheを再起動
# /usr/local/apache2/bin/apachectl restart
*画像ファイルへのアクセスを記録しない [#c021e2c2]
Apache のログはデフォルトでは、リクエストされた画像情報までログに残します。~
しかし、これらの情報はあまり必要ないし、仮に1ページに10個の画像が配置されていたら、10行の画像情報のログを吐くことになるため、ログが無駄に肥大化します。~
また、ログを閲覧する際にも非常に見にくくなりますので画像に関してはログには出力しないように設定しておきます。
**httpd.confの編集 [#me6248bd]
# 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再起動 [#n4f54e76]
httpd.confを編集後はapacheを再起動
# /usr/local/apache2/bin/apachectl restart