Webサーバ
■ Webサーバ
WWWシステムにおいて、
情報送信を行なうサーバソフトウェア。
HTTPプロトコルをサポートする。
ユーザはWebクライアント(ブラウザ)を利用して
Webサーバにリクエストを送信することで、
Webサーバに蓄積されたHTMLファイルや画像ファイルなどを
閲覧することができる。
代表的なWebサーバとしては、ApacheやIISなどがある。
■ Apache。アパッチ。
一般的なWebサーバソフト。
HTTPサーバのほか、Proxyサーバ、FTPサーバの機能を持つ。
UNIXのほかWindows上で動作する。
フリーソフトでありながら高性能なため、非常に人気が高く、
現在では、世界シェア6割を誇る。
最新バージョンは2.0.43(2002年11月現在)。
Apacheは、
元々は米国立スーパーコンピュータ応用研究所で、
NCSA HTTPdの機能拡張版として開発されたもの。
■ Apacheのモジュール。
Apacheは、
モジュール(module)を追加、削除することで、
サーバの機能を自由に構成できる点が特徴である。
通常は、Apacheプログラム自身の生成時に
組み込むべきモジュールを選択する方法を採るが、
機能の追加・変更をするたびにApacheを再コンパイルする必要がある。
そこでApache本体を再コンパイルすることなく、
モジュールだけを動的に追加する機能が提供されている。
これをDSO(Dynamic Shared Object)という。
■ httpd.conf
Apacheの設定はhttpd.confに記述する。。
Apacheの各設定項目は全てhttpd.confに記述されており、
起動時に読込まれる。
httpd.confにおける個々の設定項目を
指示子またはディレクティブ(directive)と呼ぶ。
ディレクティブはデフォルトで1,054行に渡って記述されており、
これを必要に応じて修正する。
httpd.confの設定を変更した場合には、
そのままではシステムが変更内容を認識しないので、
システムを再起動する必要がある。
■ ディレクティブ
以下、ディレクティブのうち特に重要なものをあげる。
(1) ServerName
公開するサーバ名を記述する。
(2) ServerAdmin
サーバ管理者のメールアドレスを指定する。
(3) ServerType
Apacheを、inetdで起動させるか、デーモンとして起動するかを指定する。
(4) User
デーモンを実行する際のオーナーを指定する。nobodyなど。
(5) Listen
サーバが受け付けるIPアドレスとポート番号を指定する。
(6) DocumentRoot
Webコンテンツを格納する最上位パスを指定する。
(7) DirectoryIndex
ファイル名が省略された場合に表示する標準のインデックスファイルを指定する。
通常はindex.htmとする。
もしも指定しない場合は、生のディレクトリファイルリストが表示されてしまう。
(8) Options/Indexes。
生のディレクトリファイルリストを表示するオプション。
見せたくなければ、これを削除する。
そうすれば、ファイル名を省略してアクセスした場合に、
"Forbidden"が表示される。
(9) ErrorDocument。
エラー時に表示するページとして任意のものを指定する。
もしも指定しない場合は、OSやApacheのバージョンが表示されてしまう。
(10) ServerSignature
エラー時に、Apacheのバージョンとホスト名を表示するかどうかを指定する。
(11) Errorlog
エラーログを記録するファイルを指定する。
(12) HostnameLookups
アクセス元IPアドレスのDNS逆引きを行うかどうかを指定する。
行なえばログが読みやすくなるが、
意外にパフォーマンスへの影響が大きいので、
特別な理由がない限りoffを指定する。
(13) NameVirtualHost
名前ベースのバーチャルホスト用のIPアドレスを宣言する。
■ Apacheのユーザ権限。
httpd(デーモンプロセス)は管理者権限(root)で動く。
Apache(子プロセス)は、
httpd.confのUserディレクティブに指定したユーザ権限で実行する。
通常はnobodyやwww等のユーザ権限で動かす。
CGIやSSIは特に設定をしない限り、
通常Apache(子プロセス)と同じユーザ権限で実行される。
※ Apacheはroot権限で実行してはならない。
そうするとCGIもroot権限で実行されることとなり、
lsやcatで全てのファイルの中身を読み取られる危険性がある。
■ suEXEC。エスユーエグゼク。
Apacheのユーザ権限(nobodyやwww)とは別に、
各々のCGI/SSIファイルに対してユーザを割り当てるための
コンポーネント。
CGI/SSIはふつう、Apacheと同じユーザ権限で実行される。
これだと、悪意あるCGI/SSIが実行されたとき影響範囲が大きい。
suEXECの役割は、こうした脆弱性を排除することにある。
ただし、設定を誤れば、
反ってセキュリティ上の問題を増すことになるので注意すること。
■ RDBMSとの連携。
フロントエンドにWebサーバを置き、
バックエンドにRDBMシステムを置く構成が多い。
WebサーバのPHPモジュールがSQL文を発行し
RDBMシステムがデータベースを管理する。
■ バーチャルドメイン。Virtual Domain。
HTTP/1.1の仕様拡張により実現した機能。
Webサーバが、クライアントが宛先に指定したホスト名を認識して、
表示するコンテンツのパスを変更する。
実際には1台なのに、
ユーザからは、複数のWebサーバが独立稼動している様に見える。
■ 全文検索用アプリケーション。
サーバ上のWebコンテンツや文書を高速に検索するツール。
フリーソフトのNamazuが有名。
UNIX用のほかWindows用があり、
Webサーバだけでなくファイルサーバ上でも動作する。
■ SSLの実装。
ApacheにSSLを実装するには、
モジュール mod_ssl やApache-SSL、OpenSSLを用いる。
また、ベリサイン社等のCAに登録して証明書を発行してもらい、
システムに組込まなければならない。
■ CLI。Common Log Format。
Apacheサーバの共通ログ形式。
共通ログ形式では、下記のような情報を保存できる。
保存するパラメータを設定するには、LogFormat指示子を変更する。
host %h ホスト名またはIPアドレス
ident %l 接続ユーザの識別情報
authuser %u 認証に使われたユーザ名
date %t リクエスト日付
request %r クライアントからのリクエスト内容
status %s 3桁のレスポンスコード
bytes %b クライアントに渡したオブジェクトのバイト数
■ Analog。
Webサーバのログ解析に使用されるフリーソフト。
Webサーバのログファイルを読み取って、統計解析を行ない、
グラフを含む視覚的なレポートを作成して、Webブラウザに表示する。
Apache形式(CLI)、IIS形式など、
多くのWebサーバのログ形式に対応しているほか、
UNIX、Windows、Macのいずれでも使うことができる。
■ IIS。Internet Information Server。
マイクロソフト社が提供するWebサーバソフト。
Windows NT/2000/XP上で動作する。
GUIで簡単に導入・設定できる点が特長。
IISは、Webサーバ機能のほかに、FTPサーバとSMTPサーバの機能も持っており、
小規模ネットワークやイントラネット等での利用に適している。
世界シェアは2〜3割程度。
IISは当初よりセキュリティに対する脆弱性が指摘されており、
実際Code Red IIやNimdaなど、ワームによる被害も多数発生している。
マイクロソフト社のパッチ情報には、とくに注意する必要がある。
以上。
2004/03/15 pm