次の方法で共有


要求のフィルタリング <requestFiltering>

概要

要求のフィルタリングは、インターネット インフォメーション サービス (IIS) 7.0 で導入された組み込みのセキュリティ機能であり、IIS 6.0 の UrlScan アドオンで使用できる機能の多くを置き換えます。 要求のフィルタリング機能のすべての設定は、次の機能領域ごとに複数の子要素を含む <requestFiltering> 要素内にあります。

  • <denyUrlSequences> - この要素には、IIS 7 で拒否される URL シーケンス パターンのコレクションを含めることができます。たとえば、攻撃者が悪用しようとする可能性のある URL シーケンスの一部を拒否できます。
  • <fileExtensions> - この要素には、IIS 7 が拒否または許可するファイル名拡張子のコレクションを含めることができます。たとえば、Web.config ファイルに対するすべての要求をブロックできます。
  • <hiddenSegments> - この要素には、参照できない URL のコレクションを含めることができます。たとえば、ASP.NET App_Code フォルダーに対する要求を拒否できます。
  • <requestLimits> - この要素には、URL、コンテンツ、クエリ文字列の長さの設定が含まれます。 また、HTTP ヘッダーのユーザー定義の最大長のコレクションを含めることもできます。
  • <verbs> - この要素には、IIS 7 で拒否または許可される HTTP 動詞のコレクションを含めることができます。たとえば、すべての HTTP TRACE 要求をブロックできます。

IIS 7.5 の新機能

IIS 7.5 では、要求のフィルタリング用にいくつかの機能領域が追加されました。

  • <alwaysAllowedUrls> - この要素には、要求のフィルタリングで常に許可される URL のコレクションを含めることができます。
  • <alwaysAllowedQueryStrings> -この要素には、要求のフィルタリングで常に許可されるコレクション クエリ文字列を含めることができます。
  • <denyQueryStringSequences> - この要素には、要求のフィルタリングが常に拒否するクエリ文字列シーケンスのコレクションを含められます。 これにより、管理者は、検出された潜在的に危険なクエリ文字列シーケンスをブロックできます。
  • <filteringRules> - この要素には、カスタム要求のフィルタリング規則のコレクションを含めることができます。 このコレクションを使用すると、管理者は特定の条件に合わせてカスタマイズされた要求のフィルタリング規則を作成できます。

IIS 10.0 の新機能

IIS 10.0 では、HTTP サーバー ヘッダーのリモート クライアントへの送信を抑制する removeServerHeader 属性が追加されました。

HTTP 404 エラーのサブ状態コード

要求のフィルタリングが HTTP 要求をブロックすると、IIS 7 は HTTP 404 エラーをクライアントに返し、要求が拒否された理由を識別する一意のサブ状態で HTTP 状態をログに記録します。 次に例を示します。

HTTP サブ状態 説明
404.5 URL シーケンスの拒否
404.6 動詞の拒否
404.7 ファイル拡張子の拒否
404.8 非表示の名前空間
404.11 URL にダブル エスケープがある
404.12 URL に高ビット文字がある
404.14 URL が長すぎる
404.15 クエリ文字列が長すぎる
404.18 クエリ文字列シーケンスの拒否
404.19 フィルタリング規則での拒否
413.1 コンテンツの長さが大きすぎる
431 要求ヘッダーが長すぎる

これらのサブ状態によって、Web 管理者は IIS ログを分析し、潜在的な脅威を特定できます。

互換性

バージョン メモ
IIS 10.0 サーバー ヘッダーを抑制する機能が IIS 10.0 に追加されました。
IIS 8.5 <requestFiltering> 要素は、IIS 8.5 では変更されませんでした。
IIS 8.0 <requestFiltering> 要素は IIS 8.0 では変更されませんでした。
IIS 7.5 IIS 7.5 では、要求のフィルタリングには unescapeQueryString 属性と、alwaysAllowedUrlsalwaysAllowedQueryStringsdenyQueryStringSequencesfilteringRules の各要素が付属しています。 これらの要素は、Microsoft サポート技術情報の記事 957508 (https://support.microsoft.com/kb/957508) で入手できる IIS 7.0 の更新プログラムとして導入されました。
IIS 7.0 <requestFiltering> 要素が IIS 7.0 で導入されました。
IIS 6.0 <requestFiltering> 要素は、IIS 6.0 UrlScan 機能を置き換えます。

段取り

IIS 7 以降の既定のインストールには、要求のフィルタリングの役割サービスまたは機能が含まれます。 要求のフィルタリングの役割サービスまたは機能がアンインストールされている場合は、次の手順を使用して再インストールできます。

Windows Server 2012 または Windows Server 2012 R2

  1. タスク バーで [サーバー マネージャー]をクリックします。
  2. [サーバー マネージャー] で、[管理] メニューを選択し、[役割と機能の追加] を選択します。
  3. [役割と機能の追加] ウィザードで、[次へ] をクリックします。 インストールの種類を選択し、[次へ] をクリックします。 対象サーバーを選択し、[次へ] を選択します。
  4. [サーバーの役割] ページで [Web サーバー (IIS)] を展開し、[Web サーバー][セキュリティ][要求のフィルタリング] の順に展開します。 次へ をクリックします。
    [要求のフィルター処理] が選択された [Web サーバーとセキュリティ] ウィンドウの画像。 .
  5. [機能の選択] ページで、[次へ] をクリックします。
  6. [インストール オプションの確認] ページで、[インストール] をクリックします。
  7. [結果] ページで、 [閉じる]をクリックします。

Windows 8 または Windows 8.1

  1. [スタート] 画面で、ポインターを左下隅まで移動し、[スタート] ボタンを右クリックし、[コントロール パネル] をクリックします。
  2. [コントロール パネル][プログラムと機能] を選択し、[Windows の機能の有効化または無効化] を選択します。
  3. [インターネット インフォメーション サービス]を展開し、[World Wide Web サービス] を展開し、[セキュリティ] を展開して、[要求のフィルタリング] を選択します。
    [要求のフィルター処理] が強調表示された [World Wide Web サービスとセキュリティ] ウィンドウの画像。
  4. OK をクリックします。
  5. 閉じるをクリックします。

Windows Server 2008 または Windows Server 2008 R2

  1. タスク バーで [スタート] をクリックし、[管理ツール] をポイントして、[サーバー マネージャ] をクリックします。
  2. [サーバー マネージャ] 階層ウィンドウで [役割] を展開し、[Web サーバー (IIS)] をクリックします。
  3. [Web サーバー (IIS)] ウィンドウで、[役割サービス] セクションまでスクロールし、[役割サービスの追加] を選択します。
  4. 役割サービスの追加ウィザード[役割サービスの選択] ページで、[要求のフィルタリング] を選択し、[次へ] を選択します。
    [セキュリティ] ウィンドウが展開され、[要求のフィルター処理] が選択されている [役割サービスの選択] ページの画像。
  5. [インストール オプションの確認] ページで、[インストール] をクリックします。
  6. [結果] ページで、 [閉じる]をクリックします。

Windows Vista または Windows 7

  1. タスク バーで、[スタート][コントロール パネル] の順にクリックします。
  2. [コントロール パネル][プログラムと機能] を選択し、[Windows の機能の有効化または無効化] を選択します。
  3. [インターネット インフォメーション サービス][World Wide Web サービス][セキュリティ] の順に展開します。
  4. [要求のフィルタリング] を選択し、[OK] を選択します。
    [World Wide Web Services and Security] ノードが展開され、[要求のフィルター処理] が強調表示されているスクリーンショット。

操作方法

IIS 7.0 ユーザーの場合の注意: このセクションの一部の手順では、要求のフィルタリング用のユーザー インターフェイスを含む IIS 7.0 用 Microsoft 管理パックをインストールする必要がある場合があります。 IIS 7.0 用 Microsoft 管理パックをインストールするには、次の URL を参照してください。


要求のフィルタリング機能の設定と要求の制限を編集する方法

  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。

    • Windows Server 2012 または Windows Server 2012 R2 を使用している場合:

      • タスク バーで、[サーバー マネージャー] をクリックし、[ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows 8 または Windows 8.1 を使用している場合:

      • Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
      • [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
    • Windows Server 2008 または Windows Server 2008 R2 を使用している場合:

      • タスク バーで、[スタート] ボタンをクリックし、[管理ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows Vista または Windows 7 を使用している場合:

      • タスク バーで、[スタート][コントロール パネル] の順にクリックします。
      • [管理ツール] をダブルクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
  2. [接続] ウィンドウで、要求のフィルタリング設定を変更する接続、サイト、アプリケーション、またはディレクトリに移動します。

  3. [ホーム] ウィンドウで、[要求のフィルタリング] をダブルクリックします。
    [要求のフィルター処理] が強調表示されている [既定の Web サイト ホーム] ウィンドウの画像。

  4. [操作] ウィンドウで、[機能設定の編集] を選択します。
    [操作] ウィンドウに [機能設定の編集] が表示されている [要求フィルター] ページの画像。

  5. オプションを指定し、[OK] を選択します。
    [リストに登録されていないファイル名拡張子を許可する] が選択されている [要求フィルター設定の編集] ダイアログ ボックスのスクリーンショット。たとえば、次のような変更を加える場合があります。

    • 2048 を指定して、URL の最大長を 2 KB に変更します。
    • 1024 を指定して、クエリ文字列の最大長を 1 KB に変更します。
    • [一覧にない動詞を許可する] チェック ボックスをオフにして、一覧に含まれていない HTTP 動詞へのアクセスを拒否します。

URL シーケンスを拒否する方法

  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。

    • Windows Server 2012 または Windows Server 2012 R2 を使用している場合:

      • タスク バーで、[サーバー マネージャー] をクリックし、[ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows 8 または Windows 8.1 を使用している場合:

      • Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
      • [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
    • Windows Server 2008 または Windows Server 2008 R2 を使用している場合:

      • タスク バーで、[スタート] ボタンをクリックし、[管理ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows Vista または Windows 7 を使用している場合:

      • タスク バーで、[スタート][コントロール パネル] の順にクリックします。
      • [管理ツール] をダブルクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
  2. [接続] ウィンドウで、要求のフィルタリング設定を変更する接続、サイト、アプリケーション、またはディレクトリに移動します。

  3. [ホーム] ウィンドウで、[要求のフィルタリング] をダブルクリックします。
    要求フィルター アプリケーションが強調表示されている [既定の Web サイト ホーム] ウィンドウの画像。

  4. [要求のフィルタリング] ウィンドウで、[URL シーケンスの拒否] タブを選択し、[操作] ウィンドウの [URL シーケンスの追加] を選択します。
    [操作] ウィンドウの [Deny U R L Sequences]\(U R L シーケンスの拒否\) タブを含む [要求フィルター] ページのスクリーンショット。

  5. [拒否するシーケンスの追加] ダイアログ ボックスで、ブロックする URL シーケンスを入力し、[OK] を選択します。
    [拒否シーケンスの追加] ダイアログ ボックスの画像。
    たとえば、サーバー上のディレクトリ トラバーサルを防ぐには、ダイアログ ボックスに 2 つのピリオド ("..") を入力します。


特定のファイル名拡張子へのアクセスを拒否する方法

  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。

    • Windows Server 2012 または Windows Server 2012 R2 を使用している場合:

      • タスク バーで、[サーバー マネージャー] をクリックし、[ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows 8 または Windows 8.1 を使用している場合:

      • Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
      • [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
    • Windows Server 2008 または Windows Server 2008 R2 を使用している場合:

      • タスク バーで、[スタート] ボタンをクリックし、[管理ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows Vista または Windows 7 を使用している場合:

      • タスク バーで、[スタート][コントロール パネル] の順にクリックします。
      • [管理ツール] をダブルクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
  2. [接続] ウィンドウで、要求のフィルタリング設定を変更する接続、サイト、アプリケーション、またはディレクトリに移動します。

  3. [ホーム] ウィンドウで、[要求のフィルタリング] をダブルクリックします。
    [要求フィルター] アプリケーションが選択されている [ホーム] ウィンドウのスクリーンショット。

  4. [要求のフィルタリング] ウィンドウで、[ファイル名拡張子] タブを選択し、[操作] ウィンドウの [ファイル名拡張子の拒否] を選択します。
    既定の Web サイト ホームで強調表示されている要求フィルター アプリケーションの画像。

  5. [ファイル名拡張子の拒否] ダイアログ ボックスで、ブロックするファイル名拡張子を入力し、[OK] を選択します。
    それぞれのフィールドに入力されたファイル名拡張子を表示する [ファイル名拡張子の拒否] ダイアログ ボックスの画像。たとえば、ファイル名拡張子が .inc のファイルにアクセスできないようにするには、ダイアログ ボックスに「inc」と入力します。


非表示セグメントを追加する方法

  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。

    • Windows Server 2012 または Windows Server 2012 R2 を使用している場合:

      • タスク バーで、[サーバー マネージャー] をクリックし、[ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows 8 または Windows 8.1 を使用している場合:

      • Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
      • [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
    • Windows Server 2008 または Windows Server 2008 R2 を使用している場合:

      • タスク バーで、[スタート] ボタンをクリックし、[管理ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows Vista または Windows 7 を使用している場合:

      • タスク バーで、[スタート][コントロール パネル] の順にクリックします。
      • [管理ツール] をダブルクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
  2. [接続] ウィンドウで、要求のフィルタリング設定を変更する接続、サイト、アプリケーション、またはディレクトリに移動します。

  3. [ホーム] ウィンドウで、[要求のフィルタリング] をダブルクリックします。
    [要求のフィルター処理] が強調表示インターネット インフォメーション サービス I I S マネージャーの [ホーム] ウィンドウのスクリーンショット。

  4. [要求のフィルタリング] ウィンドウで、[非表示セグメント] タブを選択し、[操作] ウィンドウの [非表示セグメントの追加] をクリックします。
    [操作] ウィンドウの [非表示セグメントの追加] オプションが表示された [非表示セグメント] タブが表示されている要求フィルター ウィンドウの画像。

  5. [非表示セグメントの追加] ダイアログ ボックスで、非表示にする相対パスを入力し、[OK] を選択します。
    [非表示セグメント] フィールドに入力された相対パスを示す [非表示セグメントの追加] ダイアログ ボックスのスクリーンショット。


HTTP ヘッダーの制限を追加する方法

  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。

    • Windows Server 2012 または Windows Server 2012 R2 を使用している場合:

      • タスク バーで、[サーバー マネージャー] をクリックし、[ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows 8 または Windows 8.1 を使用している場合:

      • Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
      • [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
    • Windows Server 2008 または Windows Server 2008 R2 を使用している場合:

      • タスク バーで、[スタート] ボタンをクリックし、[管理ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows Vista または Windows 7 を使用している場合:

      • タスク バーで、[スタート][コントロール パネル] の順にクリックします。
      • [管理ツール] をダブルクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
  2. [接続] ウィンドウで、要求のフィルタリング設定を変更する接続、サイト、アプリケーション、またはディレクトリに移動します。

  3. [ホーム] ウィンドウで、[要求のフィルタリング] をダブルクリックします。
    [操作] ウィンドウと [要求のフィルター処理] が強調表示されている既定の Web サイトホーム ページの画像。

  4. [要求のフィルタリング] ウィンドウで、[ヘッダー] タブを選択し、[操作] ウィンドウの [ヘッダーの追加] を選択します。
    [操作] ウィンドウに [ヘッダー] タブと [ヘッダーの追加] が表示されている [要求フィルター] ウィンドウの画像。

  5. [ヘッダーの追加] ダイアログ ボックスで、HTTP ヘッダーとヘッダーの制限に必要な最大サイズを入力し、[OK] を選択します。
    H T T P ヘッダーとサイズ制限のフィールドを含む [ヘッダーの追加] ダイアログ ボックスのスクリーンショット。

    たとえば、"Content-type" ヘッダーには、要求の MIME タイプが含まれています。 値として 100 を指定すると、"Content-type" ヘッダーの長さは 100 バイトに制限されます。


HTTP 動詞を拒否する方法

  1. インターネット インフォメーション サービス (IIS) マネージャーを開きます。

    • Windows Server 2012 または Windows Server 2012 R2 を使用している場合:

      • タスク バーで、[サーバー マネージャー] をクリックし、[ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows 8 または Windows 8.1 を使用している場合:

      • Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
      • [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
    • Windows Server 2008 または Windows Server 2008 R2 を使用している場合:

      • タスク バーで、[スタート] ボタンをクリックし、[管理ツール][インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
    • Windows Vista または Windows 7 を使用している場合:

      • タスク バーで、[スタート][コントロール パネル] の順にクリックします。
      • [管理ツール] をダブルクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
  2. [接続] ウィンドウで、要求のフィルタリング設定を変更する接続、サイト、アプリケーション、またはディレクトリに移動します。

  3. [ホーム] ウィンドウで、[要求のフィルタリング] をダブルクリックします。
    [要求フィルター] アプリケーションが強調表示されている [ホーム] ウィンドウのスクリーンショット。

  4. [要求のフィルタリング] ウィンドウで、[HTTP 動詞] タブを選択し、[操作] ウィンドウの [動詞の拒否] を選択します。
    [操作] ウィンドウの [H T P 動詞] タブと [拒否動詞] オプションが表示されている [要求フィルター] ウィンドウの画像。

  5. [動詞の拒否] ダイアログ ボックスで、ブロックする HTTP 動詞を入力し、[OK] を選択します。
    [動詞] フィールドに H T T P 動詞が入力されている [動詞の拒否] ダイアログ ボックスの画像。

    たとえば、サーバーへの HTTP TRACE 要求を防ぐために、ダイアログ ボックスに「TRACE」を入力します。

構成

属性

属性 説明
allowDoubleEscaping 省略可能な Boolean 属性です。

true に設定すると、要求のフィルタリングは、2 回エスケープされた文字を含む URL を許可します。 false に設定すると、2 回エスケープされた文字が URL に存在する場合、要求のフィルタリングは要求を拒否します。

既定値は false です。
allowHighBitCharacters 省略可能な Boolean 属性です。

true に設定すると、要求のフィルタリングは URL 内の ASCII 以外の文字を許可します。 false に設定すると、高ビット文字が URL に存在する場合、要求のフィルタリングは要求を拒否します。

既定値は true です。
removeServerHeader 省略可能な Boolean 属性です。

true に設定すると、要求のフィルタリングは IIS サーバー ヘッダーを抑制します。 false に設定すると、IIS は既定のサーバー ヘッダーを返します。 (注: この属性は IIS 10.0 で追加され、Windows Server バージョン 1709 または Windows 10 バージョン 1709 より前のバージョンの Windows では機能しません)。

既定値は false です。
unescapeQueryString 省略可能な Boolean 属性です。

true に設定すると、要求のフィルタリングは各クエリ文字列スキャンで 2 回のパスを実行します。 最初のパスは生のクエリ文字列をスキャンし、2 番目のパスは、IIS がエスケープ シーケンスをデコードした後にクエリ文字列をスキャンします。 false に設定すると、要求のフィルタリングは、クライアントによって送信された生のクエリ文字列のみを対象にします。

注意: この属性は IIS 7.5 で追加されました。

既定値は true です。

子要素

要素 説明
alwaysAllowedQueryStrings 省略可能な要素です。

要求のフィルタリングが常に許可するクエリ文字列のコレクションを指定します。

注意: この要素は IIS 7.5 で追加されました。
alwaysAllowedUrls 省略可能な要素です。

要求のフィルタリングが常に許可する URL のコレクションを指定します。

注意: この要素は IIS 7.5 で追加されました。
denyQueryStringSequences 省略可能な要素です。

要求のフィルタリングが常に拒否するクエリ文字列シーケンスのコレクションを指定します。

注意: この要素は IIS 7.5 で追加されました。
denyUrlSequences 省略可能な要素です。

Web サーバーでの URL ベースの攻撃を防ぐために拒否する必要があるシーケンスを指定します。
fileExtensions 省略可能な要素です。

Web サーバーに送信される要求の種類を制限するために許可または拒否されるファイル名拡張子を指定します。
filteringRules 省略可能な要素です。

カスタム要求のフィルタリング規則のコレクションを指定します。

注意: この要素は IIS 7.5 で追加されました。
hiddenSegments 省略可能な要素です。

URL の特定のセグメントをクライアントがアクセスできないように指定します。
requestLimits 省略可能な要素です。

Web サーバーによって処理される要求の制限を指定します。
verbs 省略可能な要素です。

Web サーバーに送信される要求の種類を制限するために許可または拒否される HTTP 動詞を指定します。

構成サンプル

Web.config ファイルの次の構成サンプルは、セキュリティ関連のいくつかのタスクを実行します。

  • 2 つの URL シーケンスへのアクセスを拒否します。 1 番目のシーケンスはディレクトリ トラバーサルを防ぎ、2 番目のシーケンスは代替データ ストリームへのアクセスを禁止します。
  • 一覧に含まれていないファイル名拡張子と一覧に含まれていない HTTP 動詞へのアクセスを拒否します。
  • URL の最大長を 2 KB に、クエリ文字列の最大長を 1 KB に設定します。
<configuration>
   <system.webServer>
      <security>
         <requestFiltering>
            <denyUrlSequences>
               <add sequence=".." />
               <add sequence=":" />
            </denyUrlSequences>
            <fileExtensions allowUnlisted="false" />
            <requestLimits maxUrl="2048" maxQueryString="1024" />
            <verbs allowUnlisted="false" />
         </requestFiltering>
      </security>
   </system.webServer>
</configuration>

サンプル コード

次のコード サンプルは、既定の Web サイトの 3 つの URL シーケンスへのアクセスを拒否する方法 (ディレクトリ トラバーサル ("..")、代替データ ストリーム (":")、円記号 ("")) を示しています。

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/security/requestFiltering /+"denyUrlSequences.[sequence='..']" 

appcmd.exe set config "Default Web Site" -section:system.webServer/security/requestFiltering /+"denyUrlSequences.[sequence=':']" 

appcmd.exe set config "Default Web Site" -section:system.webServer/security/requestFiltering /+"denyUrlSequences.[sequence='\']"

PowerShell

Start-IISCommitDelay

$denyUrlSequences = Get-IISConfigSection -CommitPath 'Default Web Site' -SectionPath 'system.webServer/security/requestFiltering' | Get-IISConfigCollection -CollectionName 'denyUrlSequences'

New-IISConfigCollectionElement -ConfigCollection $denyUrlSequences -ConfigAttribute @{ 'sequence' = '..' }
New-IISConfigCollectionElement -ConfigCollection $denyUrlSequences -ConfigAttribute @{ 'sequence' = ':' }
New-IISConfigCollectionElement -ConfigCollection $denyUrlSequences -ConfigAttribute @{ 'sequence' = '\' }

Stop-IISCommitDelay

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetWebConfiguration("Default Web Site");

         ConfigurationSection requestFilteringSection = config.GetSection("system.webServer/security/requestFiltering");

         ConfigurationElementCollection denyUrlSequencesCollection = requestFilteringSection.GetCollection("denyUrlSequences");

         ConfigurationElement addElement = denyUrlSequencesCollection.CreateElement("add");
         addElement["sequence"] = @"..";
         denyUrlSequencesCollection.Add(addElement);

         ConfigurationElement addElement1 = denyUrlSequencesCollection.CreateElement("add");
         addElement1["sequence"] = @":";
         denyUrlSequencesCollection.Add(addElement1);

         ConfigurationElement addElement2 = denyUrlSequencesCollection.CreateElement("add");
         addElement2["sequence"] = @"\";
         denyUrlSequencesCollection.Add(addElement2);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetWebConfiguration("Default Web Site")
      Dim requestFilteringSection As ConfigurationSection = config.GetSection("system.webServer/security/requestFiltering")
      Dim denyUrlSequencesCollection As ConfigurationElementCollection = requestFilteringSection.GetCollection("denyUrlSequences")

      Dim addElement As ConfigurationElement = denyUrlSequencesCollection.CreateElement("add")
      addElement("sequence") = ".."
      denyUrlSequencesCollection.Add(addElement)

      Dim addElement1 As ConfigurationElement = denyUrlSequencesCollection.CreateElement("add")
      addElement1("sequence") = ":"
      denyUrlSequencesCollection.Add(addElement1)

      Dim addElement2 As ConfigurationElement = denyUrlSequencesCollection.CreateElement("add")
      addElement2("sequence") = "\"
      denyUrlSequencesCollection.Add(addElement2)

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site";
var requestFilteringSection = adminManager.GetAdminSection("system.webServer/security/requestFiltering", "MACHINE/WEBROOT/APPHOST/Default Web Site");
var denyUrlSequencesCollection = requestFilteringSection.ChildElements.Item("denyUrlSequences").Collection;

var addElement = denyUrlSequencesCollection.CreateNewElement("add");
addElement.Properties.Item("sequence").Value = "..";
denyUrlSequencesCollection.AddElement(addElement);

var addElement1 = denyUrlSequencesCollection.CreateNewElement("add");
addElement1.Properties.Item("sequence").Value = ":";
denyUrlSequencesCollection.AddElement(addElement1);

var addElement2 = denyUrlSequencesCollection.CreateNewElement("add");
addElement2.Properties.Item("sequence").Value = "\\";
denyUrlSequencesCollection.AddElement(addElement2);

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site"
Set requestFilteringSection = adminManager.GetAdminSection("system.webServer/security/requestFiltering", "MACHINE/WEBROOT/APPHOST/Default Web Site")
Set denyUrlSequencesCollection = requestFilteringSection.ChildElements.Item("denyUrlSequences").Collection

Set addElement = denyUrlSequencesCollection.CreateNewElement("add")
addElement.Properties.Item("sequence").Value = ".."
denyUrlSequencesCollection.AddElement(addElement)

Set addElement1 = denyUrlSequencesCollection.CreateNewElement("add")
addElement1.Properties.Item("sequence").Value = ":"
denyUrlSequencesCollection.AddElement(addElement1)

Set addElement2 = denyUrlSequencesCollection.CreateNewElement("add")
addElement2.Properties.Item("sequence").Value = "\"
denyUrlSequencesCollection.AddElement(addElement2)

adminManager.CommitChanges()