■HTTPサーバー構築

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

■PHP5
インストールと設定

■アクセス制限
■ドメインの取得
ダイナミック DNS

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

■メールサーバー構築

■Radish3
インストールと設定

■Sendmail パス

■ブログサーバー構築

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


■自宅サーバーの運営

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

■Apache ログの管理
ログローテーション
ApacheLogViewer
アクセスログ解析

■RAMディスクでサーバー公開


VertrigoServ構築

■インストールと設定



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

Apache ログの管理

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

ログ形式の設定変更

デフォルトの記述では
CustomLog logs/access.log common
「IPアドレス」「時間」「ファイル名」「結果」「サイズ」の情報が記録されます

CustomLog logs/access.log
combined
「IPアドレス」「時間」「ファイル名」「結果」「サイズ」「リンク元」「ブラウザの種別」の情報が記録されます
必要に応じて設定変更をします

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

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

CustomLog logs/access_log common
env=!nolog ・・・「env=!no_log」を追記します
SetEnvIf Remote_Addr 192.168.0.2 nolog ・・・除外したいマシンのプライベート IP アドレスを指定します

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

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

CustomLog logs/access_log common env=!nolog
SetEnvIf Remote_Addr 192.168.0.2 nolog

SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(JPG)|(ico)$" nolog 
・・・画像ファイルなどの拡張子を指定追記します(拡張子の大文字・小文字は区別しているようです)

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

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

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

SetEnvIf Remote_Addr 192.168.0.2 nolog
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(JPG)|(ico)$" nolog


SetEnvIf Request_URI "\.(ida|IDA|exe|printer|asp|dll)" nolog

SetEnvIf Request_URI "^/_mem_bin/" worm nolog
SetEnvIf Request_URI "^/_vti_bin/" worm nolog
SetEnvIf Request_URI "^/c/" worm nolog
SetEnvIf Request_URI "^/d/" worm nolog
SetEnvIf Request_URI "^/msadc/" worm nolog
SetEnvIf Request_URI "^/MSADC/" worm nolog
SetEnvIf Request_URI "^/scripts/" worm nolog
SetEnvIf Request_URI "^/default.ida" worm nolog
SetEnvIf Request_URI "root\.exe" worm nolog
SetEnvIf Request_URI "cmd\.exe" worm nolog
SetEnvIf Request_URI "NULL\.IDA" worm nolog


CustomLog logs/worm.log common env=worm
・・・「Worm」に関するログを「Worm.log」に記録します

CustomLog logs/access_log common env=!nolog
・・・
「Worm」以外のログを「access.log」に記録します

ログローテーション

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

Apache にはログローテーションを行う独自のプログラムが用意されていて「rotationlogs.exe」は、/Apache2/bin に用意されており、設定は httpd.conf で行います

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

ErrorLog logs/error.log
  ↓

ErrorLog "| bin/rotatelogs.exe logs/%Y%m%d_error.log 604800"

CustomLog logs/access_log common env=!nolog
  ↓
CustomLog "| bin/rotatelogs.exe logs/%Y%m%d_access.log 604800" combined env=!nolog

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

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



解析ソフト「ApacheLogViewer」

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

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

Circle フリーツール」より ApacheLogViewer をダウンロード解凍します
使用説明は解凍してできたフォルダ内の「README.html」を開いてください

検索ロボットからのアクセスログを非表示にします

ApacheLogViewer 起動画面の「Setting」をクリックします



「プライベートとみなすIPアドレス」タブを開き、「IPアドレス又はホスト名を追加」をクリックし対象となるホスト名を入力します

ロボットがサイトを訪問すると、「robots.txt」というファイルを最初にチェックします、エラーログとして「GET/ robots.txt」と表示されているホストが検索ロボットです



「ApacheLogViewer」でアクセスログをチェックしながら、除外するホスト名を追加すると良いでしょう


「Statistics」をクリックし解析画面を開きます「アクセス元により集計対象を限定」を選択し「Global」に変更します(左から4つ目の窓になります)



以上の設定で検索ロボットからのアクセスが除外されるようになります