[an error occurred while processing this directive]
[APACHE DOCUMENTATION]

Apache HTTP Server Version 1.3

サーバ設定のためのセキュリティ情報


セキュリティ問題のいくつかのヒントと情報が、Webサーバの設定にあります。いくつかの提案は一般的で、その他はApache独自のものです。


ログファイルディレクトリのパーミッション

Apache が起動するとき、User 命令で定義されたユーザに対してスイッチする前に、サーバを起動させたユーザとしてログファイルを開きます。 なんらかのログファイルが書き込まれたディレクトリにパーミッションを書いた者は、Apache を起動させたユーザによって書かれるシステム上のファイルに対して pseudo-arbitrary データをアペンドすることができます。サーバは通常ルートとして起動するので、ルートでアクセスしたくないのであれば、誰かにログが蓄えられているディレクトリに対するパーミッションを書かせるべきではありません。


サーバサイドインクルード

サーバサイドインクルード (SSI) はユーザがサーバでプログラムを実行可能な ように構成を設定できます。 この考慮は、どんなシステム管理者も肝に銘じておく必要があります。

一つの解決方法は、SSIを無効にすることです。それをするためには IncludesNOEXECオプションをOptions命令に加えます


スクリプトエイリアスを使わないCGI

ユーザにどこのディレクトリででもCGIを実行できるように許可する際は次のような場合に考慮するべきです。もし;

  1. ユーザーが故意に攻撃する、あるいは偶然にシステムをあばくスクリプトを書かないことを信用する。
  2. もう一つの可能性がある穴を空けることによって、他のエリアでセキュリティが弱くなることを考慮する。
  3. ユーザがいない、まただれもサーバを利用したことがない。


スクリプトエイリアスを使ったCGI

特別なディレクトリにCGIの実行を許可することは、どんなスクリプトがそのディレクトリに入っているかを管理者がコントロールします。これは当然スクリプトエイリアスを使わないCGIより安全です。しかしディレクトリへの書き込み権限をもつユーザが信用できる時または、管理者が全てのスクリプト/プログラムにセキュリティホールの可能性が無いことをテストすることをいとわない場合です。

たいていのサイトがスクリプトエイリアスを使わないCGIよりもこのオプションを選びます。


一般的なCGI

常にCGI スクリプト/プログラムあるいはプログラマが、故意であるか、あるいは偶然であったか否かにかかわらず、 CGIによってセキュリティホールとなる可能性を見つけてくれることを信用しなくてはならないことを覚えていてください。

すべての CGI スクリプトは同じユーザーとして作動しますので、それらは(偶然に、あるいは故意に)衝突しあう可能性があります。例えば、ユーザAがユーザBを嫌い、ユーザBのCGIデータベースを消してしまう等です。異なったユーザとしてスクリプトを走らせることを、許可するために使われるプログラムは、Apache 1.2 に含まれ、Apache サーバコードで特別な hook から呼ばれます。このための他の一般的な方法としては、CGIWrap に関するものです。


システムの広範囲な設定を優先させ、ユーザ設定を停める

本当にタイトな運用をするためには、管理者が設定したセキュリティを最優先して、ユーザが.htaccessファイルを設定することを禁止したいでしょう。これが、一つの方法です......

サーバ設定ファイルに追加します。

<Directory />
AllowOverride None
Options None
allow from all
</Directory>
特定のディレクトリに設定する時

これは、全てのディレクトリへのアクセス設定の上書きを禁止します。


デフォルトでのサーバファイルのプロテクト

時々誤解される Apache の側面の一つとして、デフォルトアクセスの特徴があります。それを変更する手順を踏まない限り、もしサーバが通常の URL マッピングルールでファイルへの進路を捜すことができれば、それをクライアントに供給できます。

例えば、以下のような例です:

  1. # cd /; ln -s / public_html
  2. Accessing http://localhost/~root/

これはクライアントに、完全なファイルシステムをおざなりに済ますことを許可します。これの次善策としては、サーバのコンフィギュレーションに以下のブロックを追加してください:

 <Directory />
     Order deny,allow
     Deny from all
 </Directory>

これはファイルシステムのロケーションへのデフォルトアクセスを禁じるでしょう。望むエリアにだけ、アクセスを許可する <Directory> ブロックの割り当てを追加してください。例えば、

 <Directory /usr/users/*/public_html>
     Order deny,allow
     Allow from all
 </Directory>
 <Directory /usr/local/httpd>
     Order deny,allow
     Allow from all
 </Directory>

<Location><Directory> 命令の相互作用には特別な注意を払ってください; 例えば、<Directory />がアクセスを拒否したとしても、<Location />命令はそれを覆します。

また、UserDir 命令に取り掛かることについては用心してください; "./" のようなものにそれを設定することは、最初の上の例のように、ルートに同じ影響をもたらします。もし Apache 1.3 かそれ以上を使っていれば、コンフィギュレーションファイルに以下の行を含ませることを強く推奨します:

UserDir disabled root

他に有益なセキュリティヒントがあれば、problem report に記入するか、apache-bugs@mail.apache.org にメールを送って、Apache グループに知らせてください。


Apache HTTP Server Version 1.3

検索文字
このJAPACHE!ニュースグループへ ( japache.Security ) | JAPACHE!ニュースについて | JAPACHE!ホームページへ

Index Home The English original manual is here.


このページの情報に関わる、ご質問、お問い合わせは、 japache@infoscience.co.jpまで。

JAPACHE ホームページ