プチラヴォス

IISにおけるServer(Response Header)項目の非公開化

概要

IIS(Webサーバー)のServerヘッダーの非公開化設定の備忘

背景

Webサーバーへアクセスした際にクライアントに返されるHttpレスポンスにはServerヘッダー項目が存在し、下記情報が格納されます。

格納情報

  • 利用Webサーバー
  • バージョン

参考.

developer.mozilla.org

デフォルトでは格納設定であり、セキュリティ観点でServerヘッダー情報の外部公開はWebサーバーの脆弱性となる為に運用時には非公開設定にするのが推奨されます。

Server以外のヘッダー項目(X-AspNet-Version・X-AspNetMvc-Version・X-Powered-By等)にも
FW及びバージョン情報が格納され、同様に非公開設定を行うのが推奨されています。
今回はServerヘッダーのみ触れて割愛します。

非公開設定方法

設定方法はIISマネージャーもしくは、ホストしているweb.configの設定編集ですが後者について記載します。
必要設定はIISバージョンによって異なります

IISバージョン

  • 10.0以降(10.0で動作確認済)
  • 10.0未満(8.0/8.5で動作確認済)

IIS10.0以降の設定
IIS10.0から追加された removeServerHeader を指定します。

web.config

<system.webServer>
    <security>
        <requestFiltering removeServerHeader="true">
        </requestFiltering>
    </security>
</system.webServer>

参考

Request Filtering <requestFiltering> | Microsoft Learn

Request Filtering <requestFiltering> | Microsoft Learn

IIS10.0未満の設定
調査してみたのですが、非公開化方法は見つかりませんでした
代案としてServerヘッダーの項目を文字列(空文字列等)を指定して上書きする事で本来の情報を隠蔽します。

web.config

<system.webServer>
    <rewrite>
        <outboundRules>
        <rule name="{送信規則名-例:replace server header}">
            <match serverVariable="RESPONSE_SERVER" pattern=".*" />
            <action type="Rewrite" value="{Severヘッダーの内容指定-例:""}" />
        </rule>
        </outboundRules>
    </rewrite>
</system.webServer>

参考

stackoverflow.com

検証

ここではIIS10.0の環境での検証手順を記します。

1.web.config編集による追記

2.デバッグ実行してServerヘッダー確認

背景段落で出力されていたServerヘッダーが返っていないのが確認出来ました。

パスを含む長いファイル名を削除

Windowsで完全なファイルパス(例 C:\Program Files\filename.txt)は文字数制限が掛かっており「260文字」まで

 

引用:

1.Windowsのファイル名最大文字数は?ファイル名が半角や全角の場合は?

2.ファイル名とファイル名の拡張子: よく寄せられる質問

これはWindows8で一部仕様が変更されたものの、どうやらアプリケーション側は全て対応していないよう

 

引用:Q Windows8.1 64bitファイル名最大長

 

その為、パスを含む名前の長いファイルはそのまま削除等の操作が出来ない。

対策としてはファイルもしくは、一階層上のフォルダをファイル共有しネットワーク経由の短いパスでアクセスする事で

パスを含む名前の長いファイルを各種操作する事が可能

 

引用:

1.ファイルとフォルダーを共有する

2.Windows Vista により、ネットワーク経由でファイルとフォルダを共有する

AndroidStudio導入

IDEであるAndroidStudioの導入

引用:AndroidStudioのインストールをゼロからしてみる

日本語へ変換させるプラグインもあって導入方法も載っていたが

とりあえず導入せずに終了。実機を家に置いてきてしまったので次は実機でテスト開始から

ノートPCの方ではセットアップ〜テストをしたのだけれども、今回はデスクトップPCでのセットアップ。

複数の環境でセットアップ一度に出来たらなぁ。。。

1/13追記.

Nexus5がAndroidStudio上で認識されない(?)

調べてみたら

引用:Nexusデバイス用USBドライバをインストールする方法(Nexus 5,7,10のADB接続などに)

を参照して実行したら解決