Apacheの安全を確保するための10の対策
あなたは自分の会社のウェブサイトをサービスするApacheをインストールしたところだとしよう。Apacheはスムーズに動作しており、万が一の場合にもLinuxのセーフティネットが助けになるはずだと思う。ところが、2週間ほど経ったところで、いろいろとおかしなことが起こり始める。なぜだろう。ApacheとLinuxを使っているのに・・・おかしくなることなどあるだろうか?
もちろん、注意を払わなければ、おかしくなることはいくらでもあり得る。Apacheを安全にする方法はあるが、もちろん何もしなければ安全にはならない。以下に示すのは、Apacheをより安全なウェブサーバにするための簡単な10の方法だ。
#1: とにかくアップデート
LinuxでApacheを動かしているからと言って、アップデートが不要だということにはならない。常に新しいセキュリティホールやリスクが登場している。あなたは、最新のパッチを適用した状態を維持できる、健全なアップデート方針を持たなくてはならない。もしApacheを自分のディストリビューションのパッケージマネージャからインストールしたのであれば、そのままそこでアップデートも行うことができる。ソースからインストールした場合には、アップグレードすることによって、モジュールやそのサーバが持つ依存関係を壊してしまわないよう注意を払う必要がある。また、Apacheをアップデートしたら、PHPもアップデートされていることを確認して欲しい(もしPHPを使っていれば)。
#2: 正しいuserとgroupを設定する
私は、様々なgroupやuserでインストールされたApacheを目撃したことがある。最悪なのは、rootユーザーでインストールされている場合だ。これは、いくつかの深刻な問題を引き起こす可能性がある。また、ApacheとMySQLが同じuser/groupで実行されている場合も問題だ。もし一方にセキュリティホールがあれば、もう一方への攻撃につながってしまう。最善のシナリオは、Apacheのuserとgroupを「apache」にすることだ。これを行うためには、まずhttpd.confファイルを開き、次のように書かれている行を調べる。
User Group
そして、これらのエントリを次のように変更する。
User apache Group apache
groupやuserが存在しないことを示すエラーが出る場合、新たに作成する必要がある。
#3: 不要なサービスを無効にする
無効にした方がいいサービスや機能がいくつかある。これらのサービスはすべて、httpd.confファイルで無効にすることができる。そのような、問題を起こしやすいサービス・機能には、以下のようなものがある。
- ディレクトリの閲覧。この機能を無効にするには、Directoryタグの中で(ドキュメントルートに指定するのがよいだろう)、Optionsディレクティブに「-Indexes」を設定する。
- SSI(サーバサイドインクルード)の使用。これも、無効にするには、Directoryタグの中で(Optionsディレクティブを使い)「-Include」と設定する。
- CGIの実行。あなたのサイトでCGIを必要としないのであれば、これを無効にする。この機能も、Directoryタグの中でOptionsディレクティブを使い、「-ExecCGI」と設定する。
- シンボリックリンク。この機能を無効にするには、(やはり)Directoryタグの中で、「-FollowSymLinks」と設定する。
- すべて無効にする。(上記と同じ方法で)Optionsディレクティブに「None」と設定すれば、すべてのオプションを無効にすることができる。
#4: 使用しないモジュールを無効にする
Apacheには大量のモジュールがある。自分のシステムにインストールされているApacheにいくつのモジュールがあるかを知りたければ、(rootユーザーとして)grep -n LoadModule httpd.confというコマンドをApacheの設定ディレクトリで実行すればよい。このコマンドで、自分のApacheが読み込んでいるすべてのモジュールを行番号付きで表示することができる。不必要なモジュールを無効にするには、そのモジュールについて記述している行の先頭に「#」を挿入してコメントアウトするだけでよい。
#5: アクセスの制限
重要な企業情報が置かれているイントラネットがあるとしよう。そのような場合、プライベートネットワークの外部からは、その情報を見られないようにしたいだろう。httpd.confファイルの中のDirectoryタグの中に次の行を加えることで、外部から社内ネットワークへのアクセスを制限することができる。
Order Deny, Allow Deny from all Allow from 192.168.1.0/16
ただし、上記の192.168.1.0/16の部分はあなたの社内ネットワークの設定に合わせる必要がある。httpd.confを修正した場合、Apacheを再起動してその変更を確実に反映すること。
- ホワイトペーパー

