Webサーバ(Apache)をちょっとだけ安全に公開するためにできることを挙げてみる

普段基本的にやっていることを書いてみる事にします。
(掘り下げると奥が深いと思いますが…。最低限、ということで。)

専用ユーザ/専用グループ/権限など

  • Userを 「Apache専用ユーザ」に
  • Groupを 「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サーバの設定に不備があった場合でも、公開しないため。


 一旦思いついたところで。

 #他にもあればどなたか教えて下さい。