「Apache HTTP Server: Security Tips」 は、The Apache Software Foundation が、 http://httpd.apache.org/docs/misc/security_tips.html で公開しております。2001/10/14 時点で公開されていたドキュメントを futomi が日本語化したものです。Windows 上で Apache を利用する際の理解に役立てれば幸いです。なお、緑色で記載された文章は、futomi が注釈として加筆したものです。また、一部、直訳ではなく、意訳した部分がございます。原文と表現がことなることがございますので、ご了承ください。 注意: この日本語訳は、futomi が Windows 版 Apache の理解を深めるために、自分なりに日本語にしたものです。本日本語訳には、翻訳上の誤りがある可能性があります。したがって、内容について一切保証をするものではありません。正確さを求める場合には、必ず原文を参照してください。当方は、この文書によって利用者が被るいかなる損害の責任を負いません。 もし誤りなどを見つけたら、こちらからご連絡いただければ幸いです。 Apache HTTP Server Version 1.3Security Tips for Server Configuration
ウェブサーバのセットアップにおける、セキュリティー問題に関するヒントや忠告を掲載しています。いくつかの提案は一般的な話ですが、その他は Apache 特有の話です。 ServerRoot ディレクトリのパーミッション典型的な運用では、Apache は root
ユーザの権限で起動され、アクセスがあると、User
ディレクティブで定義されたユーザに切り替わります。root
で実行されるコマンドと同様に、root
でないユーザによる変更から守られるということに注意しなければいけません。ファイルは、root
だけに書き込み権限を与えるべきです。ディレクトリや、すべての親ディレクトリもしかりです。たとえば、もしあなたが
/, /usr, そして /usr/local が、root
に書き込み権限のみあると仮定します。実行可能な httpd
をインストールしたときには、同様に保護されます。
あなたは、他のユーザに書き込み権限がある htdocs のサブディレクトリを作る事ができます。-- root は、そこから外のファイルを決して実行せず、その中にファイルを作るべきではないからです。 root でないユーザに、root が実行または書込するファイルを編集できるようにするなら、あなたは、あなたのシステムを root の妥協に開くことになります。例えば、あなたが次回にそれを起動するために、誰かが httpd バイナリを置き換えることができるとしたら、それは、任意のコードを実行するでしょう。もしログディレクトリが( root でないユーザによって)書き換え可能だとすると、誰かは symlink を使って、ログファイルを他のシステムファイルに置き換えることができてしまうのです。そして、root は任意のデータでそのファイルを上書きしてしまうかもしれません。もしログファイル自身が( root でないユーザによって)書き換え可能だとすると、誰かはログファイル自身を偽のデータに書き換えてしまうことができるかもしれません。 Server Side IncludesServer Side Includes (SSI) は、サーバ管理者にいくつかの潜在的なセキュリティーリスクをもたらします。 第一のリスクとして、サーバのロードが増加してしまうという点です。すべての SSI 実行可能なファイルは、Apache によって、そのファイル内に SSI ディレクティブが含まれているかどうかを解析されます。このロード増加は小さいものの、共有されたサーバ環境では、莫大なものになり得ます。 SSI ファイルも、一般的に、CGI スクリプトに関連ずけられた同じリスクを引き起こします。"exec cmd" を使うと、SSI 実行可能なファイルは、httpd.conf で設定されたように、Apache を実行するユーザとグループのパーミッションに基づき、CGI スクリプトやプログラムを実行することができます。それは、あきらかに、サーバ管理者に躊躇させます。 SSI ファイルが提供する利益を利用する一方、SSI ファイルのセキュリティーを高める方法があります。 不安定な SSI ファイルが引き起こし得るダメージを隔離するために、サーバ管理者は、CGI in General section で説明されているように、suexec を利用することができます。 拡張子が .html や .htm のファイルに SSI を許可すると危険になりうります。これは、特に、共有され、高いトラフィックのサーバ環境において、真実味を増します。SSI が許可されたファイルは、慣習的に使われる .shtml のように、それ専用の拡張子にすべきです。これは、サーバロードを最小限に抑え、リスク管理を簡単にすることに寄与します。 その他の解決策は、SSI
ページから、スクリプトやプログラムを実行させないようにすることです。これをするためには、Opution
ディレクティブで Non Script Aliased CGIユーザに対して、どのディレクトリでも CGI スクリプトを実行できるようにすることは、次の事を考慮すべきです。
Script Aliased CGICGI を特定のディレクトリに限定することは、それらディレクトリの中に行くことに関して、管理者制御を与えます。これは、必然的に、non script aliased CGI より安全です。しかし、そのディレクトリに書き込み権限を持つユーザが信用されている場合や、管理者が潜在的なセキュリティーホールを見つけるために、各新しい CGI スクリプトやプログラムを試験したいと思う場合に限ります。 ほとんどのサイトは、non script aliased CGI アプローチに関して、このオプションを選択します。 CGI in General常に、あなたは自分自身の能力を信じ、故意であれ偶然であれ、CGI スクリプト/プログラムの作者、もしくは、CGI の潜在的なセキュリティーホールを見つけられなければいけないことを忘れないで下さい。 すべての CGI スクリプトは、同じユーザ権限で実行されるため、それらは他のスクリプトと(偶然もしくは故意に)コンフリクトする可能性を秘めています。例えば、ユーザ A は、ユーザ B のことが嫌いだとします。ユーザ A はユーザ B の CGI データベースを削除するスクリプトを書けてしまうのです。Apache 1.2 から含まれている suEXEC を使えば、スクリプトを別々のユーザ権限で実行されるようにすることができるのです。Apache サーバコードで特殊なフックから呼び出されます。他にも、有名な方法として、CGIWrap があります。 システム設定を守る厳しい環境で動作させるためには、サーバ利用者に、あなたが設定したセキュリティ機能を上書きすることができてしまう
サーバの設定ファイルに、
と設定すると、特定のディレクトリに対しての設定となります。これは、指定されたディレクトリを除き、すべてのディレクトリ内のすべての上書き、インクルード、アクセス を停止します。 Protect Server Files by Default時折誤解される Apache の一面として、デフォルトのアクセスの機能があります。つまり、あなたがそれを変更するステップを踏まない限り、もしサーバが通常の URL マッピングルールを通してファイルへの道を見つけたなら、それはクライアントにそれを提供することができます。 例えば、次のような例を考えてみてください。
これは、クライアントに、ファイルシステム全体を見せることになってしまうのです。これに対処するために、あなたのサーバの設定に、次のブロックを加えてください。
<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 /> ディレクティブはそれを覆すかもしれません。あなたが Apache 1.3 以上を使っているなら、私達は、あなたがサーバの設定ファイルに次の行を加えることを強くお勧めします。
他にも有益なセキュリティー tips があれば、是非、problem report に書き込んで、Apache Group に送ってください。もし Apache のソースコード自身にセキュリティーバグを見つけたと確信されたら、是非、私たちにお知らせください。 戻る |