… Apache の Server, version 情報の隠匿

neko1sa.gif Apache の Server情報の隠蔽



2008年11月現在の私の Linux マシンのバージョンです。
OS : CentOS 5.2 (Kernel 2-6-18-92.1.18.el5 on an i686)


ブラウザで検索をかけたページがないときなど、404のエラーページが表示される事があります。

images/version.png

上の画像では、Apacheのバージョンなどの情報が表示されてしまっていますが、これはセキュリティ上好ましい事ではありません。この情報は管理者としては、本来見せてはならないものだと私は思っています。
そこで、このバージョン情報などを隠してしまおうと思います。

これらの操作は root ユーザでの作業となります。

square.png ServerSignature

編集するファイルは Apache の設定ファイルである httpd.conf です。
CentOS5.2 では /etc/httpd/conf/ にありますので、そこまで cd コマンドで移動します。
以下のように入力し、Enter キーを押します。


# cd /etc/httpd/conf/


images/cd-etc-httpd-conf.png


中にある httpd.conf を less コマンドで開きます。
以下のように入力してEnter キーを押します。


# less httpd.conf


images/less-httpd_conf.png


すると以下のようにファイルが開かれます。
images/less-httpd_conf2.png


開かれた httpd.conf の中で ServerSignature と書かれた箇所をページ内検索します。
カーソルは多分、端末の一番下にあると思いますので、そのままキーボードを半角英数字モードで、スラッシュ( / )を入力し、その後へ ServerSignature の ServerSig (ちょっとでも横着をしたい・・・)までを入力し、Enter キーを押します。
この時に最初に入力するスラッシュ( / )は上から下への検索コマンドで、下から上への検索コマンドは クエスチョンマーク( ? )になります。検索文字列を次へ移動するときには、"次" と云う言葉である next のエヌ( n )のキーを叩きます。

images/search-serversyg.png

見つかった検索文字列は黒く反転して表示されます。
images/search-serversyg2.png

ここで less から vi の編集モードに入ります。編集モードの入り方は「 v 」キーを押し、「 i 」キーを押すことで insert モードになります。すると画面の一番下に「-- INSERT --」が表示されますので、編集する文字まで矢印キーで移動してください。httpd.conf の254行目あたりにあるこの文字列をシャープ( # )でコメントアウトしておいてその下へ以下のように記述します。

ServerSignature Off


images/search-serversyg3.png


私は変更点を明らかにするためにシャープ( # )でコメントアウトした元の文字列をなるべく残すようにしていますが、ここはそれぞれご判断くださいますように。

編集終了後はふたたびエスケープキーを2度ほど叩くと vi のコマンドモードへ移りますので、その後 コロン( : )を打ち、「 w 」「 q 」 と続けて打ち、最後に Enterキーを打てば httpd.confを上書き保存をします。

保存できたら「 q 」コマンドで less を終了し、ひとまず httpd -t で httpd.conf の文法をチェックしてください。


# httpd -t


images/syntax.png

文法エラーが出ないことを確かめたら、設定を反映させるために Apache を再起動します。
具体的にはコマンドラインから以下のように入力して Enter キーを押します。


# service httpd restart


images/httpd-restart.png


再起動が無事に済みましたら、ブラウザでわざとありもしないアドレスを入力して、Apacheがどのようなエラーメッセージを返すかを確認してみます。

バージョン情報が表示されなくなりました。
images/no-version.png


square.png ServerTokens

上記で設定してきたのは、Apacheのバージョンを隠す方法でしたが、Apacheはこの他にも、 PHPなどの情報も返してしまったりします。これらはレスポンスヘダーのServer情報であり、管理者としては、最低限これらServerのシステム情報も返さないようにしてしまいたいと思います。

上で設定したのと同じ httpd.conf に ServerTokens OS と記述されている部分がありますので、これを編集する事により、Serverのシステム情報を隠す事ができるようになります。


開かれた httpd.conf の中で ServerTokens OS と書かれた箇所をページ内検索します。
上のバージョン情報の時にページ内検索をしたのと同じように、半角英数字モードで、スラッシュ( / )を入力し、その後へ Server とだけ入力し、Enter キーを押します。

見つかった検索文字列は黒く反転して表示されます。
images/search-servertoken1.png


less から vi で編集するモードへの入り方は覚えていますよね?
では、httpd.conf の44行目あたりにあるこの元の文字列をシャープ( # )でコメントアウトしておいてその下へ以下のように記述してください。


ServerTokens ProductOnly


images/search-servertoken2.png

後はさっきやったように httpd.conf を上書き保存し、編集した情報を反映させるために Apache を再起動させます。


以上で、Apacheのバージョン情報及びServerのシステム情報を隠す方法の設定は終了です。
なお、以下は補足となりますが、less から vi を使うのはちょっと敷居が高いと思う方は、X画面から gedit か、 kedit を起動して httpd.conf を編集するといいかもしれません。
gedit も kedit も、 window のメモ帳のような感覚で使えるグラフィカルエディタですので、どなたにもわかりやすいと思います。