動かざることバグの如し

猫ゆえに。。。

セキュリティを少しでも向上させるためのApache設定メモ

あくまでメモだから(震え声

ServerSignature Off

目的はOSやサーバーの情報を隠すため。OFFにすると例えば404のページを表示させたときにフッターにOSやApacheのバージョンとかが表示されなくなる
Apacheの設定ファイルである「httpd.conf」の「ServerSignature」項目を以下に変更

ServerSignature Off

ちなみに自分の環境だとデフォルトでこの項目が無かったので付け足した。

ServerTokens ProductOnly

これの目的もOSやサーバーの情報を隠すため。それらの情報はHTTPレスポンスヘッダとやらに記載されているのでそれを非表示にしようというもの。
これまた「httpd.conf」より以下に変更

ServerTokens ProductOnly

これでApache使ってる、ぐらいしか分からない。ちなみにすべての情報を表示させるには

ServerTokens Full

正常に設定がされたのかよく分からないので、実際に確認してみた。
よく使われるのがTelnetコマンドらしいが、なんとChromeを使えばHTTPヘッダが確認できるとか。すごーい
やり方は簡単。Chromechrome://net-internals/#eventsにアクセスするだけ。
Filter欄には「apache」を入れておくと楽。
以下がHTTPヘッダの該当部分。
まずは「ServerTokens Full」の場合

t=1381142856676 [st=16]        HTTP_TRANSACTION_READ_RESPONSE_HEADERS
                               --> HTTP/1.1 200 OK
                                   Date: Mon, 07 Oct 2013 10:47:37 GMT
                                   Server: Apache/2.4.4 (Win32) OpenSSL/1.0.1e PHP/5.5.3
                                   X-Powered-By: PHP/5.5.3
                                   Content-Length: 4
                                   Keep-Alive: timeout=5, max=100
                                   Connection: Keep-Alive
                                   Content-Type: text/html; charset=UTF-8

次に対策した「ServerTokens ProductOnly」の場合

t=1381142725435 [st=5]        HTTP_TRANSACTION_READ_RESPONSE_HEADERS
                              --> HTTP/1.1 200 OK
                                  Date: Mon, 07 Oct 2013 10:45:26 GMT
                                  Server: Apache
                                  X-Powered-By: PHP/5.5.3
                                  Content-Length: 4
                                  Keep-Alive: timeout=5, max=100
                                  Connection: Keep-Alive
                                  Content-Type: text/html; charset=UTF-8

ちゃんと設定が反映されてるっぽい。やったね
2013年10月8日追記

TraceEnable Off

デフォルトだとONになっているので明示的にOFFにさせる必要がある。普段は使わない上に有効にしておくとちょっと危険なメソッドらしいので、つまり要らない機能ってことだ(断言
以下を追記すればおk

TraceEnable Off

設定状況はhttp://localhost/server-infoにアクセスするとわかる。