Webサーバを外部に公開すると、いろいろなワームがやってきます。そのようなワームからのメッセージをはじいて、アクセスログに出力しないようにする設定について説明します。
setenvif_module の有効化 wormをはじく設定を記述できるようにするために、setenvif_module を有効にします。以下の行がコメントアウトされていたら有効にします。:
LoadModule setenvif_module modules/mod_setenvif.so
ワームとなるURIのパターンを SetEnvIf を使用して指定します。:
SetEnvIf Request_URI "default\.ida" worm !log
SetEnvIf Request_URI "cmd\.exe" worm !log
SetEnvIf Request_URI "root\.exe" worm !log
SetEnvIf Request_URI "Admin\.dll" worm !log
SetEnvIf Request_URI "NULL\.IDA" worm !log
アクセスログとして保存するHTTPのメソッドを指定します。:
SetEnvIf Request_Method "(GET)|(POST)|(PUT)|(DELETE)|(HEAD)" log
画像ファイルやCSS等をログとして保存しないように設定します。:
SetEnvIf Request_URI "(\.gif|\.jpe?g|\.png|\.css|\.js)$" !log
また、内部のネットワークからのアクセスはログとして保存しないように設定します。:
SetEnvIf Remote_Addr "^192\.168\." !log
SetEnvIf Remote_Addr "^127\.0\." !log
アクセスログとワームログに振り分けて保存するために、以下のように記述します。:
CustomLog /var/log/httpd/access_log combined env=log
CustomLog /var/log/httpd/worm_log combined env=worm
設定が終了したらApache 2を再起動し、ログが分離して保存されていることを確認します。
Apache 2とZopeの組み合わせで、簡単に複数のバーチャルホストを運用することが出来ます。アクセスログ解析をするときに、それらのログがホストごとに分かれていた方が後々都合がよいので、そのような設定をします。
バーチャルホストの設定に、以下のように CustomLog の記述を追加します。:
NameVirtualHost *
<VirtualHost *>
ServerName www.example.com
RewriteEngine On
RewriteRule ^/Zope(.*) http://localhost:8080/VirtualHostBase/http/www.example.com:80/VirtualHostRoot/_vh_Zope/$1 [L,P]
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/example_log.%Y%m%d 86400 +540" combined env=log
</VirtualHost>
<VirtualHost *>
ServerName blog.example.com
RewriteEngine On
RewriteRule ^(.*) http://localhost:8080/VirtualHostBase/http/blog.example.com:80/blog/VirtualHostRoot/$1 [L,P]
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/blog_log.%Y%m%d 86400 +540" combined env=log
</VirtualHost>
また、ここでは rotatelogs コマンドを使用して、ログファイルを日付が付いたファイル名で作成するように設定しています。
設定が終了したらApache 2を再起動し、バーチャルホストごとのアクセスログが出力されていることを確認します。