サーバーを立ち上げて運用が始まったら、放置せずに最低限の保守メンテをする必要があります。
サーバーはハッカーの標的になりやすいので、他人に迷惑をかけない為にセキュリティ対策や、保守メンテナンスを欠かす事ができません。
そのために、Apacheアクセスログのチックをこまめにしたいのだけれど、アクセス数が増加してくるとログファイルが肥大化してくる為に、解析が難しくなってきます。
デフォルトの状態では、画像ファイルへのリクエストや自分のアクセスも記録される為、不要と思われるアクセスログを記録しないようにすることでアクセス解析を解りやすくできるようになります。

Apacheの設定変更は全て「httpd.conf」で行います。
httpd.confの場所は、インストール先の「C:/Apache2.2/conf/」フォルダの中に存在します。

定義とログフォーマット(LogFormat)

デフォルトの記述では「common」と「combined」の二つの定義が用意されています。



LogFormat "%
h %l %u %t \"%r\" %>s %b" common

IPアドレス」「取得結果」「ユーザーID」「時刻」「リクエスト」「ステータスコード」「サイズ

CustomLog logs/access.log
common



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

IPアドレス」「取得結果」「ユーザーID」「時刻」「リクエスト」「ステータスコード」「サイズ」「参照元のサイト(リンク)」「クライアントのブラウザ

CustomLog logs/access.log
combined



アクセスログのデータは、定義をカスタマイズして指定することもできるので、必要に応じて設定変更をします。

自分のアクセスログを記録しないように設定

Apache のログには全てのアクセスに対し、ログ採取を行います、自分(LAN 内)からのアクセスは必要ではないので、アクセスログを記録しないように設定します。

CustomLog logs/access_log combined
env=!no_log ・・・「env=!no_log」を追記します。

SetEnvIf Remote_Addr 192.168.1.1 no_log ・・・除外したいマシンのプライベートIPアドレスを指定します。

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

ホームページにはロゴや背景などの画像もたくさんつかわれています、これらの画像ファイルもアクセスログに記録されています。
あまり解析に役立つ情報ではないのでログファイルの肥大化を防ぐため、画像ファイルへのリクエストに対してログに記録しない設定にするほうが良いでしょう。

SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(JPG)|(ico)|(css)|(swf)|(txt)$" no_log

画像ファイルなどの拡張子を指定追記します(拡張子の大文字・小文字は区別しているようです)。

「favicon.ico」拡張子
icoとは、

これはインターネット・エクスプローラなどのブラウザが要求するもので、ページを「お気に入り」に登録したときに表示されるアイコンのファイルで16×16ドットの「favicon.ico」という名前でサイトの一番上の階層に設置されるファイルです。
インターネット・エクスプローラは「お気に入り」に登録するときにサーバーに favicon.ico を要求します、そのため favicon.ico が見つからなければ、「ファイルが見つかりません」というエラーを大量に記録されてしまいます。
画像ファイルなどと同様に拡張子(
ion)を追記しておけば、エラーログを記録されなくなります。

Worm に関するアクセスログを別ファイルに記録します

Worm には無差別的に IP アドレスを指定して攻撃を仕掛けてくるものもあり、放置するとアクセスログが肥大化してしまいます。
のため Worm に関するログを別のアクセスログに記録するようにします。

>>「worm」に関するログを別ファイルに記録します。

SetEnvIf Request_URI "\.(ida|IDA|exe|printer|asp|dll)$" 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

>>「worm」に関するログを「worm.log」に記録します。

CustomLog "logs/
worm.log" combined env=worm

>>「no_log」に該当しないものを「access.log」に記録します。

CustomLog "logs/access.log" combined env=!no_log

Crawler(クローラ)のアクセスログを分離します

Crawler(クローラ)・Spider(スパイダー)とは、検索エンジンがWEBページの情報を自動収集するためのプログラムです。
これらの検索ロボットがアクセスログを肥大化させアクセス解析を解りにくくするため、別ファイルにCrawlerのアクセスログを切り出し、記録するようにします。

>>「crawler(クローラ)」に該当するログを「
crawler.log」に記録します。

CustomLog "logs/
crawler.log" combined env=crawler

>>
「crawler」に関するログを別ファイルに記録します。

SetEnvIf User-Agent "Googlebot" crawler no_log
SetEnvIf User-Agent "Googlebot-Image" crawler no_log
SetEnvIf User-Agent "InfoSeek Sidewinder" crawler no_log
SetEnvIf User-Agent "Slurp" crawler no_log
SetEnvIf User-Agent "mogimogi" crawler no_log
SetEnvIf User-Agent "indexpert" crawler no_log
SetEnvIf User-Agent "ZyBorg" crawler no_log
SetEnvIf User-Agent "nabot" crawler no_log
SetEnvIf User-Agent "Python-urllib" crawler no_log
SetEnvIf User-Agent "dloader" crawler no_log
SetEnvIf User-Agent "Openbot" crawler no_log
SetEnvIf User-Agent "ia_archiver" crawler no_log
SetEnvIf User-Agent "aruyo" crawler no_log
SetEnvIf User-Agent "Aruyo" crawler no_log
SetEnvIf User-Agent "fast" crawler no_log
SetEnvIf User-Agent "Scooter" crawler no_log
SetEnvIf User-Agent "tokiwa" crawler no_log
SetEnvIf User-Agent "moget" crawler no_log
SetEnvIf User-Agent "Girafabot" crawler no_log
SetEnvIf User-Agent "Ask Jeeves" crawler no_log
SetEnvIf User-Agent "Indy Library" crawler no_log
SetEnvIf User-Agent "NaverBot" crawler no_log
SetEnvIf User-Agent "msnbot" crawler no_log
SetEnvIf User-Agent "Baiduspider" crawler no_log
SetEnvIf User-Agent "sogou spider" crawler no_log
SetEnvIf User-Agent "yetibot" crawler no_log


>>「no_log」に該当しないものを「access.log」に記録します。

CustomLog "logs/access.log" combined env=!no_log

>>新しい「crawler」が巡回してきたらリストを追加していきましょう。

SetEnvIf User-Agent "クローラのUserAgent名" crawler no_log

ログローテーション設定(rotatelogs.exe)

日々記録されるログは、リクエストが増加すると膨大な量になり、ハードディスクの空き容量を圧迫するだけでなく、ログ管理のためにファイルを開くにもログが肥大しすぎるとサーバーに負荷をあたえかねません。
そのためアクセスログやエラーログを一定時間の間隔で自動的に切り替えるようにします。

Apacheにはログローテーションを行う独自のプログラムが用意されていて「rotatelogs.exe」はApacheインストール先の「C:/Apache2.2/bin/」に用意されており、設定は「httpd.conf」で行います。

ログローテーション設定例

ErrorLog logs/error.log
  

ErrorLog "| bin/rotatelogs.exe logs/error.log.%Y-%m-%d 604800"

CustomLog logs/access_log combined env=!no_log
  

CustomLog "| bin/rotatelogs.exe logs/access.log.%Y-%m-%d 604800" combined env=!no_log

上記の設定例では、ディレクトリ「logs」にエラーログファイル「error.log.2009-xx-xx」、アクセスログファイル「access.log.2009-xx-xx」が作製され一週間周期で切り出されます。

bin(ディレクトリ)
/rotatelogs.exe(ログの管理方法)
logs(ディレクトリ)
access.log.%Y-%m-%d(ログファイル名「%Y-%m-%d=(年-月-日)」)
604800(切り出す周期)設定例は60秒×60分×24時間×7日間=604800秒になります
combined(ログ形式)
env=!nolog(記録しないリクエストを否定形で指定)



<<<以上のログ定義を「httpd.conf」の設定例>>>

#>>エラーログロテーション設定

ErrorLog "| bin/rotatelogs.exe logs/error.log.%Y-%m-%d 604800"

#>>ログフォーマット

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

LogFormat "%h %l %u %t \"%r\" %>s %b" common

#>>ログロテーション設定

CustomLog "| bin/rotatelogs.exe logs/access.log.%Y-%m-%d 604800" combined env=!no_log

#>>自宅LAN内からのアクセスログを採取しない

SetEnvIf Remote_Addr 192.168.1.1 no_log

SetEnvIf Remote_Addr 192.168.1.2 no_log

#>>画像ファイルなどのログを採取しない

SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(JPG)|(ico)|(css)|(swf)|(txt)$" no_log

#>>crawler(クローラ)ログの分離

CustomLog "logs/crawler.log" combined env=crawler

SetEnvIf User-Agent "Googlebot" crawler no_log
SetEnvIf User-Agent "Googlebot-Image" crawler no_log
SetEnvIf User-Agent "InfoSeek Sidewinder" crawler no_log
SetEnvIf User-Agent "Slurp" crawler no_log
SetEnvIf User-Agent "mogimogi" crawler no_log
SetEnvIf User-Agent "indexpert" crawler no_log
SetEnvIf User-Agent "ZyBorg" crawler no_log
SetEnvIf User-Agent "nabot" crawler no_log
SetEnvIf User-Agent "Python-urllib" crawler no_log
SetEnvIf User-Agent "dloader" crawler no_log
SetEnvIf User-Agent "Openbot" crawler no_log
SetEnvIf User-Agent "ia_archiver" crawler no_log
SetEnvIf User-Agent "aruyo" crawler no_log
SetEnvIf User-Agent "Aruyo" crawler no_log
SetEnvIf User-Agent "fast" crawler no_log
SetEnvIf User-Agent "Scooter" crawler no_log
SetEnvIf User-Agent "tokiwa" crawler no_log
SetEnvIf User-Agent "moget" crawler no_log
SetEnvIf User-Agent "Girafabot" crawler no_log
SetEnvIf User-Agent "Ask Jeeves" crawler no_log
SetEnvIf User-Agent "Indy Library" crawler no_log
SetEnvIf User-Agent "NaverBot" crawler no_log
SetEnvIf User-Agent "msnbot" crawler no_log
SetEnvIf User-Agent "Baiduspider" crawler no_log
SetEnvIf User-Agent "sogou spider" crawler no_log
SetEnvIf User-Agent "yetibot" crawler no_log

#>>worm(ワーム)ログの分離

SetEnvIf Request_URI "\.(ida|IDA|exe|printer|asp|dll)$" 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/worm.log" combined env=worm

#>>「no_log」に該当しないログを「access.log」に記録します

CustomLog "logs/access.log" combined env=!no_log




「ApacheLogViewer」 は、ApacheのWEBサーバが出力するNCSA形式のログを解析・表示するWindows用のプログラムです。

指定されたログファイルを読み込んで、セッション状態を解析し、日付ごとに一覧表示してくれます。
さらに、指定されたアドレスやフォルダ群に対するアクセス統計等も表示できます。

Circle フリーツール」より「ApacheLogViewer」をダウンロード解凍します。

■crawlerのログを解析





例として「crawler.log」を解析してみました、使い方はいろいろで非常に便利です。


■HTTPサーバー構築

■Apache
インストールと設定
■perl
インストールと設定

■PHP5
インストールと設定

■ドメインの取得
ダイナミック DNS

■ルータ・ポート開放
■絶対パスと相対パス

■メールサーバー構築

■Radish3
インストールと設定

■Sendmail パス

■ブログサーバー構築

■Movable Type4
インストールと設定


■自宅サーバーの運営

■自宅 LAN 内からドメイン名でサーバーにアクセスする方法
■リモート デスクトップ接続
■Windows サーバー
自動起動/自動ログイン

■Apache ログの管理
「 ApacheLogViewer」
アクセスログ解析

■アクセス制限
■分散設定ファイル
「.htaccess」


VertrigoServ構築

■インストールと設定