WWWサーバの構築(Windows Vista編)
[
Apache2.2+OpenSSL ]
Windows
Vista環境でApacheを動かしてみました。基本は他のWindows編に順じますが、VistaのUACの関係で若干手こずったので、ここに整理
しておきます。
インストールしたのは、Apache2.2.6で、SSL、PHP対応としました。
ここではSSL対応について述べますが、CGIを動かすためのPerl
のインストールに関しては
こ
ちらを、PHPに関しては
こちらを参照願います。
■Apache+SSL
for Win32のインストール
従来、ApacheのサイトにあるファイルはSSLに対応していませんでしたが、最近はSSL対応のオールインワン
のバイナリがありますので、これを使うことにしました。おやじがダウンロードしたのは、
apache_2.2.6-win32-x86-openssl-0.9.8e.msi (2008.01.01現在)です。なお、Windows
Vista 環境ではダ
ウンロードしたファイルをそのままダブルクリックしてインストールしようとするといろいろ問題がでるので、以下のように管理者権限でインストールします。
- Apache
の本家に行き、画面左のプロジェクト一覧から HTTP Server を選択すると Apache のページに行くので、画面左の Download!
from a mirror
をクリックするとミラーサイトに飛ぶ。そこで、中段にある2.2系の最新版のアナウンスのところに各ソースファイルへの案内があるが、ここでは
Windows用のバイナリファイルが必要なので、その下にある Other files
をクリックすると配布ファイル一覧が出てくるので、そこで更に binaries/ -> win32
(KDDIへのリンク)フォルダを選択すると、バイナリファイルがあるので、最新のSSL対応版を適当な場所にダウンロードする。
SSL
対応版は、 apache_2.2.6-win32-x86-openssl-0.9.8e.msi のように
opensslの表記があるものであり、SSL非対応版は no_ssl となっているので誤ってダウンロードしないこと。
- 「ス
タート」->「すべてのプログラム」->「アクセサリ」でメニューを開き、「コマンドプロンプト」の上で右クリックし、「管
理者として実行」を選択する。
- 「ユーザーアカウント制御」の警告が
出るので、「続行」を
クリックする。
コマンドプロンプトで下記にようにダウンロードしたmsiバイナリを指定し
てインストールする。下記は、 D:\work にダウンロードした場合の例である。
C:\Windows\system32>msiexec.exe
/i D:\work\apache_2.2.6-win32-x86-openssl-0.9.8e.msi |
- イ
ンストールウィザード
の画面が開くので、「Next」をクリックする。
- ラ
イセンス認証画面が開くので内容を確認し、「I accept the team ・・・」を選択して「Next」をクリックする。
- Apache
を動作させる前の諸条件が表示されるので内容を確認し、「Next」をクリックする。
- サー
バを動かす条件(ドメイン名、サーバ名、管理者のメールアドレス)を入力し、「Next」をクリックする。後で、 httpd.conf
を修正すればよいので、ここでは仮入力でもよいし、何も入力しなくてもよい。
- イ
ンストール方法の選択画面が表示されるので、「Typical」から「Custom」に変更し、「Next」をクリックする。これは、デフォルトでは
「C:\Program Files」配下にインストールされ、いろいろな問題(「Program
Files」のようにフォルダ名に空白があるとエラーになるケースがある。パスが深くなり扱いにくいし、制限が出ることがある等)が発生しやすくなるの
で、Cドライブ直下にインストールしたほうがよいためである。
- イ
ンストールする機能とパスの選択画面が開くので、「Change...」をクリックしてインストールパスを変更する。
- 下
段の Folder name
で、インストールするフォルダ名を変更し、「OK」をクリックする。おやじはデフォルトの前部分を削除して、「C:\Apache2.2\」とした。
インストールフォルダは自動で作成されるので、あらかじめ作成しておく必要はない。
- 指
定した内容に誤りがなければ、「Next」をクリックする。
- イ
ンストールを開始するため、「Install」をクリックする。
- イ
ンストールが完了したら、「Finish」をクリックする。
- イ
ンストールが完了すると、右下に「Windows Defender により変更が検出されました」というメッセージが表示されるので、Windows
Defenderアイコンをクリックし、Windows Defenderを開く。
Windows
Defenderでは、下記のように確認すべき内容のガイダンスがあるので、「確認して操作を実行する」をクリックする。
- Apache
のサービス登録に関する確認内容が表示されるので、内容と操作が「許可」になっていることを確認して、右下の「操作を適用する」をクリックする。
- 変
更確認画面が表示されるので、内容を確認し画面を閉じる。
- イ
ンストールが完了するとタスクトレイに ApacheMonitor
のアイコンが表示されるが、Start/Stop等の制御ができない場合がある。その場合は、「C:\Apache2.2\bin\
ApacheMonitor.exe」のプロパティを開き(エクスプローラ等でファイルの上で右クリックして、プロパティを開く)、「互換性」タブを選択
して「特権レベル」の「管理者としてこのプログラムを実行する」にチェックを入れて、「OK」をクリックする。
- 以
上で、インストールは完了し、Apacheはサービス起動されているので、ブラウザで「http://localhost/」にアクセスしてみる。
い
たってそっけない「It works!」という画面が表示されるはずである。これが出ないことには先に進めないので、チェックしておくこと。
■Apache+SSL for Win32の設定
Apache+SSL for
Win32を動かすため、httpd.confやhttpd-ssl.confの設定及びSSLの鍵や証明書の準備を行います。SSL用証明書等の作成に
ついては、こちらを
参考に
必要なものを作成してください。
◆基本的な設定(httpd.confの設
定)
設
定情報は、Apacheディレクトリ中のconfディレクトリにあるhttpd.confにあるので、テキストエディタで編集し
ていきます。Apache2.0系とは異なり、httpd.confでは基本的な設定のみ行うようになっており、その他はextraディレクトリ内にある
httpd-xxx.confをhttpd.confからIncludeする方式になっているので2.0から2.2へのバージョンアップには注意が必要で
す。
設定を変更した項目は以下のとおりです。変更する場合は、失敗に備えて変更行を下の行にコピーし、元の行の先頭に「#」
を付加することにより、コメント行として保存しながら作業しました。 設定をいじくりすぎてどうにもならなくなったら、conf/default
フォルダ内にデフォルトのhttpd.confやhttpd-ssl.confなどがあるので、これらをコピーすれば初期状態に戻るので、頭を整理し
ながらやり直したほうが早い場合もあります。(青字は
削除、赤字は追加、緑字は変更したものです。)
- サー
バ管理者のメールアドレスの設定
インストール時に設定したメールアドレスになっているはずであるが、変更も
しくは未設定の場合は、変更すること。
ServerAdmin
oyaji@mail.aconus.com
- サーバ名称の設定
ここも、インストール時に設定したサーバ名になっているはずであるが、変更も
しくは未設定の場合は、変更すること。
ServerName www.aconus.com:80
- HTML
ファイル名の追加
ディレクトリ指定でアクセスされた場合(http://www.aconus.com/のように「/」で終わるか最後がディレクトリだった場合)に、
Apacheはそのディレクトリ内にここで指定したファイルが無いか左側から探し、見つかればそのファイルを転送する。見つからない場合は、そのディレク
トリでのOptions指定でIndexesが有効ならインデックリストを表示し、未指定なら404エラーとなる。おやじは、index.htmという
ファイル名をデフォルトとしているのでそれを追加している。下記の例ではPHP用のindex.phpも追加してある。
<IfModule
dir_module>
DirectoryIndex index.html
</IfModule>
↓追加
<IfModule dir_module>
DirectoryIndex index.htm
index.html index.php
</IfModule>
- 家庭内からのアクセス、
worm等のlog分離
#CustomLog
logs/access.log common
SetEnvIf
Remote_Addr 192.168.1. homelog nolog
SetEnvIf Request_URI
"~akirin" akirinlog nolog
SetEnvIf Request_URI
"default.ida" wormlog nolog
SetEnvIf Request_URI "root.exe"
wormlog nolog
SetEnvIf Request_URI "cmd.exe" wormlog nolog
SetEnvIf Request_URI "Admin.dll" wormlog nolog
CustomLog
logs/home.log common env=homelog
CustomLog logs/akirin.log
combined env=akirinlog
CustomLog logs/worm.log common
env=wormlog
CustomLog logs/access.log combined env=!nolog
・上のほうでLoadModule setenvif_module
modules/mod_setenvif.soがアンコメントアウトされていることを確認。
・1行目のCustomLog
logs/access.log common をコメントアウトし、以下を記述。
・2/8行目で、家庭内からのアクセスをhome.logに採取。ログ不要ならコメントアウト。
・3/9行目で、娘のサイトへのアクセスをakirin.logに採取。common ->
combinedとしてreferrerを採取。
・4行目でCodeRed、5〜7行目でNimudaからアタックを識別し、10行目でworm.logに採取。ログ不要ならコメントアウト。
・11行目で残りのアクセスをaccess.logに採取。common ->
combinedとしてreferrerを採取。おやじのサイトへのアクセスは、ここに含まれる。
- CGI
ファイル拡張子の定義
行頭の#を削除し、CGI として動作させたい拡張子を記述する。
#AddHandler cgi-script .cgi
↓削除、追加
AddHandler cgi-script
.cgi
◆ユーザ毎に動かすための設定
(extra/httpd-userdir.confの設定)
おやじだけでなく、あっこやリナもホームページを作るため、以下のようなディレクトリ構成で、プロバイダと同じように”http:
//www.aconus.com/~oyaji/といった形式でアクセスできるようにしてみました。ルート(http:
//www.aconus.com/)は将来使うこととして、空けてあります。
C:\apache2.2\home [ ルートディレクトリ ]
|
├ oyaji [ おやじのユーザディレクトリ ]
| ├
index.htm [トップページ ]
| ├
bbs [ CGI設置用 ]
| └ count [ CGI設置用 ]
|
├ akirin [
あっこのユーザディレクトリ ]
| ├ index.html
[トップページ ]
| └ cgi [ CGI設置用 ]
|
└ rina [ リナのユーザディレクトリ ]
├
index.html [トップページ ]
└ keijiban [ CGI設置用 ]
|
◆デフォルト設定の変更
(extra/httpd-default.confの設定)
ここでは、Apacheのデフォルト設定の変更を行いますが、基本は、デフォルトのまま httpd.conf
で無効でよいと思います。おやじは、ホスト名でログを取りたいため有効にしました。但し、この httpd-default.conf
設定を有効にすると、ServerToken(Headerにもあるがエラー時に表示されるサーバ情報)がFullになっており、全ての情報が表示されて
しまうので、ここはセキュリティ上変更したほうがよいでしょう。
- httpd
-default.conf設定の有効化
httpd-default.conf設定を有効にするため、
httpd.conf でのIncludeを有効にする。
# Various default
settings
#Include
conf/extra/httpd-default.conf
↓削除
#
Various default settings
Include conf/extra/httpd-default.conf
- サー
バTokenの変更
Full | OS | Minor | Minimal
| Major | Prod が指定できるが、Minimal 以下がよいと思う。
ServerTokens
Full
↓追加
#ServerTokens Full
ServerTokens Prod
- ホ
ストネームでのログ収集
デフォルトではログのアドレスはIPアドレスで行われるが、この機能を使うとDNSで逆牽きしてホスト名で記録できる。DNSの逆牽
きをすると負荷が重く
なるが、アクセスがまだまだ少ないのとホストネームのほうが常連さんならすぐにわかること、動的IPの場合は後で逆引きしても牽けないことが多々あるた
め、あえて使用しています。ただ、逆牽き設定をしていないDNSや設定が誤っているDNSが多く、エラーログがかなり出てしまいます。(BINDの設定で
ログらないようにしています。)
#HostnameLookups
Off
HostnameLookups On
◆SSL
を動かすための設定
(httpd.conf, extra/httpd-ssl.confの設定)
-
まずは、こちらで作成したサーバ用の鍵 (newkey.pem) と証明書
(server.crt) を、Apacheのconfディレクトリ配下にコピーする。このとき、デフォルト設定で動作するよう newkey.pem
をserver.keyにリネームする。
C:\>cd
C:\etc C:\etc>copy
newkey.pem C:\Apache2.2\conf\server.key C:\etc>copy
server.crt C:\Apache2.2\conf\ |
- SSLモジュールの組み込み
SSLを動かすため、DSOでSSLモジュールを組み込むよう httpd.conf で指定する。(行頭の「#」を削除)
#LoadModule ssl_module modules/mod_ssl.so
↓削除
LoadModule ssl_module modules/mod_ssl.so
- httpd-ssl.conf
設定の有効化
httpd-ssl.conf設定を有効にするため、 httpd.conf
でのIncludeを有効にする。
# Secure (SSL/TLS) connections
#Include
conf/extra/httpd-ssl.conf
↓削除
#
Secure (SSL/TLS) connections
Include conf/extra/httpd-ssl.conf
- httpd-ssl.conf
の設定を行う。
- Windowsでは未サポート
MutexはWindowsでは未サポートなので、そのままではエラーとなりApacheを起動できないので、defaultに変更する。
SSLMutex
"file:C:/Apache2.2/logs/ssl_mutex"
↓追加
#SSLMutex
"file:C:/Apache2.2/logs/ssl_mutex"
SSLMutex "default"
- サーバ名称の設定
ここも、インストール時に設定したサーバ名になっているはずであるが、変更も
しくは未設定の場合は、変更すること。
ServerName www.aconus.com:443
- サー
バ管理者のメールアドレスの設定
インストール時に設定したメールアドレスになっているはずであるが、変更も
しくは未設定の場合は、変更すること。
ServerAdmin
oyaji@mail.aconus.com
◆クライア
ント認証を動かすための設定
クライアント認証関係の設定は、単
に通信を暗号化(httpsでのアクセス)するだけなら不要です。
このクライアント用証明書によるクライアント認証を導入すると、予め認証局で署名されたクライアント用証
明書を持たない端末がアクセスしても、
接続そのものが拒否されるのでセキュリティ的にかなり強固になります。反面、クライアント毎に証明書を発行することになるので、運用はかなり面倒になりま
すが、セキュリティとのバータなので止むを得ません。
このようなクライアント認証は、一般的に企業などで導入されており、具体例としてはwebを使用して外勤
の営業マンが社外から社内システムにア
クセスできるシステムや株取引のシステムなどに導入されています。このようなシステムの場合、不特定多数にアクセスされるとApacheの認証やアプリ認
証だけではセキュリティが甘くなるため、アクセスレベルでセキュリティを強化するためにクライアント認証を導入します。
- 作成したCA用証明書を、Apacheのディレクトリ配下に
コピーする。
C:\etc>copy
demoCA\cacert.pem C:\Apache2.2\conf |
- 証明書失効リス
トを、Apacheのディレクトリ配下にコピーする。
C:\etc>copy
demoCA\crl\crl.pem C:\Apache2.2\conf |
なお、失効が発生するたびにこの作業は必要になるので、
ssl.confでcrl.pem作成ディレクトリを直接指定したほうが良いかもしれない。
Windowsの場合は、リストを有効にするためApacheの再起動が必要である。
- ssl.conf
の設定を行う。
- CA証明書へのパスとファイル名の設定を
行う
#SSLCACertificatePath c:/Apache2.2/conf/ssl.crt
#SSLCACertificateFile c:/Apache2.2/conf/ssl.crt/ca-bundle.crt
↓追加
#SSLCACertificatePath
c:/Apache2.2/conf/ssl.crt
#SSLCACertificateFile
c:/Apache2.2/conf/ssl.crt/ca-bundle.crt
SSLCACertificatePath
c:/Apache2.2/conf
SSLCACertificateFile
c:/Apache2.2/conf/cacert.pem
- ク
ライント認証の指定とルート認証局までの階層設定
CA
によって直接署名された証明書だけを信用するので、SSLVerifyDepth は 1 に設定する。
#SSLVerifyClient require
#SSLVerifyDepth 10
↓追加
#SSLVerifyClient require
#SSLVerifyDepth 10
SSLVerifyClient
require
SSLVerifyDepth 1
- 証
明書失効リストの指定
#SSLCARevocationPath
"C:/Apache2.2/conf/ssl.crl"
#SSLCARevocationFile
"C:/Apache2.2/conf/ssl.crl/ca-bundle.crl"
↓追加
#SSLCARevocationPath "C:/Apache2.2/conf/ssl.crl"
#SSLCARevocationFile
"C:/Apache2.2/conf/ssl.crl/ca-bundle.crl"
SSLCARevocationFile c:/Apache2.2/conf/crl.pem
◆サービス起動の設定と起動
Windows版Apacheには、サービスの起動制御をGUIで行える
「ApacheMonitor.exe」が準備されている。Windows XPまでは、Apacheをインストールしたbinディレクトリにある
「ApacheMonitor.exe」 スタートアップに登録しておくとシステム起動時にタスクトレイに常駐できたのですが、Windows
VistaではUACの関係で警告が出るので煩わしく、この方法がとれません。
常時起動させておく必要も
ないので、Vistaではショートカットを作成してタスクバーにでも放り込んでおくとよいでしょう。
Perl
のインストール PHPのインストール
Top
Pageへ