46.6. セキュリティ

公共のインターネットに公開しているWebサーバについては、管理面での不断の努力が求められます。ソフトウェアと、偶然の設定ミスの両方に関連したセキュリティの問題が発生することは避けられません。それらに対処するためのいくつかのヒントを紹介します。

最新の状態を保つ

Apacheソフトウェアに脆弱性が見つかると、SUSEからセキュリティ上の勧告が出されます。これには、脆弱性を修正するための指示が含まれているので、できる限り早く適用すべきです。SUSEによる、セキュリティ関連の発表のメーリングリストは、http://www.suse.com/us/private/support/online_help/mailinglists/で利用可能です。SUSE Linuxパッケージのセキュリティ問題についての最新情報は、http://www.novell.com/linux/security/securitysupport.htmlでも利用可能です。

加えて、Apacheの発表のメーリングリスト(http://httpd.apache.org/lists.html#http-announce)にも加入するべきです。ここでは、新しいリリースとバグ修正がポストされます。

DocumentRootのパーミッション

SUSE Linuxのデフォルトでは、DocumentRootディレクトリ/srv/www/htdocsおよびCGIディレクトリ/srv/www/cgi-binの所有者はユーザroot になっています。これらのパーミッションは変更しないでください。これらのディレクトリにすべてのユーザが書き込めるようにすると、どのユーザでもそこにファイルを配置できるようになります。その後これらのファイルは、Apacheによりwwwrunのパーミッションで実行されます。その結果、意図しない仕方で、ユーザがファイルシステムのリソースにアクセスできるようになる可能性があります。ユーザまたはドメイン固有のデータを整理するには、/srv/www/htdocsおよび/srv/www/cgi-binのサブディレクトリを使用し、Directoryディレクティブと組み合わせてください(Directoryを参照)。

CGIおよびSSIディレクトリ

Perl、PHP、SSIまたは他のプログラミング言語によるインタラクティブなスクリプトは、事実上、任意のコマンドを実行できます。CGIやSSI (項46.5.1.2. 「CGI (Common Gateway Interface)mod_cgiScript Alias、および項46.5.1.1. 「mod_includeによるサーバ側でのインクルード 」参照)の実行を、グローバルに許可するのではなく、特定のディレクトリに制限することは、リスクを小さくするための1つのオプションです。

別の可能性は、mod_suexec (項46.5.2.1. 「mod_suexecによってCGIを別ユーザとして実行する 」を参照)を一般のCGIで使用することです。Apacheモジュールでは、項46.5.3.2. 「PHPを使用する: mod_php4mod_php5で説明されているように、インタプリタをセキュリティに注意して設定することが、Web環境を安全に保つ上で役立ちます。

アクセス権

多くの場合、特にテスト環境においては、テストという性質のために、Webサーバへのアクセス権が不用意に扱われています。このことは、重要な情報が偶然に明かされたり、さらには、サーバ全体が悪意のある第三者に公開されたりする結果につながります。Orderディレクティブ(http://httpd.apache.org/docs-2.0/mod/mod_access.html#order)と.htaccessファイル(項46.3.2.3.3. 「AccessFileName filenamesを参照)を組み合わせて、特定のWebサイトへのアクセスを、特定のユーザまたはクライアントに制限してください。

加えて、「混乱させることによるセキュリティ」と言うアプローチを採用することもできます。典型的な例は、Apacheを標準以外のポートで実行することです(Network Device Selection (ネットワークデバイスの選択)を参照)。この場合、http://www.example.com:8765のように、URLにポート番号が付加されます。これは、テスト環境では受容できることでしょう。