Webサーバ(Apache)をちょっとだけ安全に公開するためにできることを挙げてみる
普段基本的にやっていることを書いてみる事にします。
(掘り下げると奥が深いと思いますが…。最低限、ということで。)
専用ユーザ/専用グループ/権限など
権限を制限した専用ユーザを作って、Apacheを起動させます。
作った専用ユーザはシェルを使えないようにするともっと良いかなと思います。
必要なモジュールだけ有効にする
- ソースからコンパイルするなら、静的に必要なものだけ組み込む。
- 動的にモジュールを組み込むなら必要なモジュールだけ「LoadModule」ディレクティブで組み込む
HTTP Trace Methodを無効に
- TraceEnableは「Off」に
Apache1.3.34, Apache2.0.55 以降、TraceEnableのディレクティブが追加されています。
(Apache2.2系は多分最初から)
「TraceEnable Off」とすることで、Traceメソッドを無効にできます。
Apacheサーバに関する情報を表示させない
- ServerSignatureは「Off」に
- ServerTokensは「Prod」に
- Errorドキュメントを適切に設定する
初期インストレーション時の不要ファイルを削除する
- サンプルCGIの削除
- マニュアルファイルの削除
- アイコンファイルの削除
初期インストレーション時にサンプルファイル類が入っていますが、
本番運用時は不要なものと考えて、ひたすら削除します
公開すべきコンテンツだけ、公開するようにします
ユーザのホームディレクトリは必要なければ公開しない
- UserDirは「disabled」に
ディレクトリのアクセス制御
- /は全て拒否、ドキュメント領域だけ個別に許可をする
こんな感じでしょうか。
<Directory "/"> Options None AllowOverride None Order allow,deny Deny from all </Directory>
ルートで制御をかけて、公開する必要があるディレクトリを、
その下で個別に設定していきます。
- ベーシック認証のパスワードファイルはドキュメントルートとは別にする
万が一Webサーバの設定に不備があった場合でも、公開しないため。
一旦思いついたところで。
#他にもあればどなたか教えて下さい。