> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# IIS サーバーを保護する

> CSP や HSTS などのセキュリティ ヘッダー、DDoS 対策、強力な TLS 暗号、web.config ルールを使用して、ABBYY FlexiCapture 12 をホストする IIS サーバーを強化します。

ABBYY FlexiCapture 12 を展開すると、既定の IIS セキュリティ構成設定が使用されます。また、特定のリクエストに対して追加のルールを設定することで、Web サーバーのセキュリティをさらに強化できます。

<div id="content-security-policy-header">
  ## Content-Security-Policy ヘッダー
</div>

Content Security Policy (CSP) は、クロスサイト スクリプティング (XSS) などのデータ挿入攻撃から保護するために、最新のブラウザーで使用されているセキュリティ標準です。CSP ではホワイトリストを使用して、安全にロードできるリソースを判定し、検証されていないソースは無視します。また、セキュリティポリシーを回避しようとする試行も記録します。

このポリシーを利用するには、1 つ以上のディレクティブが設定された Content-Security-Policy HTTP ヘッダーがサーバーに必要です。各ディレクティブは特定のリソース型に対応します。ディレクティブは、リソースに対するルールを宣言することでセキュリティポリシーを定義します。

ブラウザー用に CSP を設定するには、次のコードを `web.config` ファイルに追加します。

```
<system.webServer> 
<httpProtocol> 
<customHeaders> 
<add name="Content-Security-Policy" value="default-src https: data: 'unsafe-inline' 'unsafe-eval'" /> 
</customHeaders> 
</httpProtocol> 
</system.webServer>
```

<Note>
  ABBYY FlexiCapture をサードパーティ システムと統合する必要があり、他のホストへのアクセスが必要な場合は、それらを `web.config` ファイルに指定してください。セキュリティ構成設定を変更するたびに、必ずソフトウェアが正しく動作することを確認してください。
</Note>

Content-Security-Policy ヘッダーの詳細については、[こちらの Web サイト](https://content-security-policy.com/)を参照してください。

<div id="http-strict-transport-security-header">
  ## HTTP Strict-Transport-Security ヘッダー
</div>

HTTP Strict-Transport-Security (HSTS) は、ブラウザーと Web サイトの間のすべての通信を、SSL プロトコルを使用した安全な接続に限定する Web サイト保護の仕組みです。HSTS が設定された Web サーバーには、HTTPS のみを使用し、HTTP の使用を禁止するようブラウザーに指示する情報が含まれます。HSTS は主に、リクエストとレスポンスを傍受する攻撃、たとえば MITM (Man-In-The-Middle) 攻撃を防ぐために使用されます。

このセキュリティポリシーを使用するには、URL アドレス書き換えルールを使用して、HTTP 応答に Strict-Transport-Security (STS) ヘッダーを追加する必要があります。これは、不要な HTTP リクエストを防ぎ、すべての HTTP トラフィックを HTTPS にリダイレクトするために必要です (ルールで定義されたロジックに基づきます)。ルールを設定するには、URL Rewrite モジュールをインストールする必要があります。詳細については、[Microsoft の Web サイト](https://docs.microsoft.com/ru-ru/iis/extensions/url-rewrite-module/using-the-url-rewrite-module)を参照してください。

ブラウザー用に HSTS を設定するには、次のコードを `web.config` ファイルに追加します：

```
<rule name="Add the STS header in HTTPS responses">
<match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" />
<conditions>
<add input="{HTTPS}" pattern="on" />
</conditions>
<action type="Rewrite" value="max-age=31536000" />
</rule>
```

<Note>
  *max-age* ディレクティブは、ルールが適用される期間 (秒単位) を指定します。上記のコード スニペットで指定されている値は 1 年に相当します。
</Note>

HSTS の詳細については、[Microsoft の Web サイト](https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-10-version-1709/iis-10-version-1709-hsts#challenges-on-enabling-hsts-before-iis-100-version-1709)を参照してください。

<div id="x-powered-by-and-x-aspnet-version-headers">
  ## X-Powered-By および X-AspNet-Version ヘッダー
</div>

Web サーバーのセキュリティ強化に不可欠な HTTP ヘッダーのほかに、省略可能なヘッダーもあります。こうした省略可能なヘッダーは標準で規定されていないことが多く、使用すると各 HTTP 要求で生成されるトラフィック量が増えるため、悪意のある攻撃を実行しやすくなります。

以下は、そのような省略可能なヘッダーの 2 つの例です:

* X-Powered-By は、Web サーバーで使用されているさまざまなテクノロジーに関する情報を含む HTTP ヘッダーです。
* X-AspNet-Version は、Web サーバー上でアプリケーションのデプロイに使用されている ASP.NET のバージョンに関する情報を含む HTTP ヘッダーです。

既定では、X-Powered-By と X-AspNet-Version はどちらもサーバー レスポンスに含まれます。識別情報を提供するとセキュリティ上の脅威となる可能性があるため、これらのヘッダーを無効にすることをお勧めします。

IIS 構成から X-Powered-By ヘッダーを削除するには、次のコードを `web.config` ファイルに貼り付けます:

```
<httpProtocol> 
<customHeaders> 
<remove name="X-Powered-By" />   
</customHeaders></httpProtocol>
```

IIS 構成から X-AspNet-Version ヘッダーを削除するには、次のコードを `web.config` ファイルに貼り付けます:

```
<httpRuntime enableVersionHeader="false" />
```

<div id="x-xss-protection-header">
  ## X-XSS-Protection ヘッダー
</div>

X-XSS-Protection は、クロスサイト スクリプティング攻撃を防ぐためにブラウザーで使用される HTTP ヘッダーです。このヘッダーは XSS フィルターを有効にすることで機能し、ブラウザーで開かれた Web ページに悪意のあるサードパーティ製コードを挿入しようとする不正な試みを遮断します。

X-XSS-Protection は、次のブラウザーと互換性があります: Internet Explorer 8+、Chrome、Safari。ただし、最近のほとんどのブラウザーでは、より厳格なセキュリティ ポリシー (たとえば、Content-Security-Policy) が使用されているため、このヘッダーが必要になるのは、CSP をサポートしていない古いブラウザーを使用している場合のみです。

ブラウザーで X-XSS-Protection ヘッダーを有効にするには、次のコードを `web.config` ファイルにコピーします:

```
<system.webServer> 
<httpProtocol> 
<customHeaders> 
<add name="X-XSS-Protection" value="1; mode=block" /> 
</customHeaders> 
</httpProtocol> 
</system.webServer>
```

<div id="x-content-type-options-header">
  ## X-Content-Type-Options ヘッダー
</div>

X-Content-Type-Options は、MIME (Multipurpose Internet Mail Extensions) の脆弱性を悪用する攻撃を防ぐためにブラウザーで使用される HTTP ヘッダーです。MIME は、インターネット接続を介して送信されるコンテンツに関するインターネット標準です。Web サーバーによって配信されるすべてのファイルは、それぞれのファイルの MIME 型に応じた方法でブラウザーに処理されます。ブラウザーは、Content-Type レスポンスを使用するか、またはリソースの内容を検査することによってリソース型を判定するため、攻撃者が HTML ファイルを別の型のファイルに見せかけることが可能になります。

このヘッダーで使用できるディレクティブは `nosniff` のみです。これは、Web サーバーで指定された MIME 型のみを使用するようブラウザーに指示します。

ブラウザーで X-Content-Type-Options ヘッダーを有効にするには、次のコードを `web.config` ファイルに貼り付けます:

```
<system.webServer> 
<httpProtocol> 
<customHeaders> 
<add name="X-Content-Type-Options" value="nosniff" /> 
</customHeaders> 
</httpProtocol> 
</system.webServer>
```

<div id="server-header">
  ## Server ヘッダー
</div>

Server ヘッダー は、送信元サーバーが request を処理するために使用したアプリケーションに関する情報 (たとえば、アプリケーションのバージョン番号) を含むレスポンス ヘッダーです。この種の情報が第三者に知られることは、セキュリティ上の脅威となります。そのため、Server ヘッダー の内容を削除することをお勧めします。

Server ヘッダー の内容を削除するには、次のコードを `web.config` ファイルに追加します:

```
<rewrite>  
     <outboundRules rewriteBeforeCache="true"> 
    <rule name="Remove Server header"> 
      <match serverVariable="RESPONSE_Server" pattern=".+" /> 
      <action type="Rewrite" value="" /> 
    </rule>   
</outboundRules> 
</rewrite>
```

IIS 10.0、Windows Server 2016 以降を使用している場合は、代わりに次のコードを使用します:

```
Set-WebConfigurationProperty  
-pspath 'MACHINE/WEBROOT/APPHOST'   
-filter "system.webServer/security/requestFiltering"  
-name "removeServerHeader"  
-value "True"
```

<Note>
  上記の設定には、URL Rewrite モジュールがインストールされている必要があります。詳細については、[Microsoft のドキュメント](https://docs.microsoft.com/ru-ru/iis/extensions/url-rewrite-module/using-the-url-rewrite-module)を参照してください。
</Note>

<div id="x-frame-options-header">
  ## X-Frame-Options ヘッダー
</div>

既定では、ABBYY FlexiCapture Web Stations は iFrame を介して他社の Web サイトに埋め込むことができます。ただし、framesniffing が確認された場合は、コンテンツがクロスドメインの iFrame でホストされるのを防ぐために、次の操作を行ってください。

<Steps>
  <Step title="サイトを選択する">
    左側の **Connections** ペインで **Sites** フォルダーを展開し、保護するサイトを選択します。
  </Step>

  <Step title="HTTP Response Headers を開く">
    中央の機能一覧で **HTTP Response Headers** アイコンをダブルクリックします。
  </Step>

  <Step title="ヘッダーを追加する">
    右側の **操作** ペインで **Add** をクリックします。
  </Step>

  <Step title="X-Frame-Options の値を設定する">
    開いたダイアログで、**Name** フィールドに **X-Frame-Options** と入力し、**Value** フィールドに **SAMEORIGIN** または **DENY** と入力します。
  </Step>
</Steps>

詳細については、[Microsoft のドキュメント](https://support.microsoft.com/en-us/office/mitigating-framesniffing-with-the-x-frame-options-header-1911411b-b51e-49fd-9441-e8301dcdcd79)を参照してください。

<div id="slow-http-post-vulnerability">
  ## Slow HTTP POST の脆弱性
</div>

Slow HTTP POST の脆弱性は、Slowloris HTTP 攻撃とも呼ばれる低速 HTTP サービス拒否 (DoS) 攻撃の一種です。低速 HTTP POST 攻撃では、攻撃者は HTTP POST リクエストで大量のデータを送信すると宣言し、その後、そのデータを非常に低速で送信します。顧客側で Slow HTTP POST の脆弱性に対処するには、Application Server がインストールされているマシンの IIS 構成で Web Limits を設定する必要があります。制限は、次のパラメーターに対して設定する必要があります。

* `ConnectionTimeout`
* `MinFileBytesPerSec`

Web Limits の詳細については、[Microsoft のドキュメント](https://docs.microsoft.com/en-us/iis/configuration/system.applicationhost/weblimits)を参照してください。

<div id="use-https-instead-of-http">
  ## HTTP ではなく HTTPS を使用する
</div>

HTTP プロトコルにはデータを暗号化するためのセキュリティ機構がありませんが、HTTPS では SSL または TLS のデジタル証明書によって、サーバーとクライアント間の通信を保護できます。ユーザーのブラウザーと Web サーバー間のすべてのトラフィックが、HTTPS を使用した暗号化チャネル経由で強制されるようにしてください。HTTP は既定でポート 80 を使用します。HTTP の使用を防ぐため、このポートを閉じてください。

<div id="use-an-up-to-date-tls-version-and-strong-ciphers">
  ## 最新の TLS バージョンと強力な暗号を使用する
</div>

TLSv1.1 は脆弱な暗号化プロトコルと見なされています。攻撃者はこのプロトコルの弱点を悪用して、保護された通信を盗み見たり、メッセージを悪意を持って改ざんしたりする可能性があります。常に利用可能な限り最新の TLS バージョンを使用し、強力な暗号のみを使用することをお勧めします (適切な暗号の一覧は [https://wiki.mozilla.org/Security/Server\_Side\_TLS](https://wiki.mozilla.org/Security/Server_Side_TLS) を参照してください) 。グループ ポリシーを使用して SSL Cipher を構成するには、次の手順を実行します。

<Steps>
  <Step title="グループ ポリシー エディターを開く">
    コマンド プロンプトで `gpedit.msc` と入力します。**Group Policy Object Editor** が表示されます。
  </Step>

  <Step title="SSL 構成設定を開く">
    **Computer Configuration**、**Administrative Templates**、**Network** の順に展開し、**SSL Configuration Settings** をクリックします。
  </Step>

  <Step title="暗号スイートの順序を開く">
    **SSL Configuration Settings** で、**SSL Cipher Suite Order** 設定をクリックします。
  </Step>

  <Step title="手順までスクロールする">
    **SSL Cipher Suite Order** ペインで、ペインの一番下までスクロールします。
  </Step>

  <Step title="設定を変更する">
    **How to modify this setting** というラベルの手順に従います。
  </Step>
</Steps>

変更を有効にするには、コンピューターを再起動する必要があります。

<div id="protection-against-distributed-denial-of-service-attacks">
  ## 分散型サービス拒否 (DDoS) 攻撃からの保護
</div>

分散型サービス拒否 (DDoS) 攻撃では、HTTPリクエストによってアプリケーションに過大な負荷をかけ、トラフィック量を大幅に増加させることで、正規のユーザーがアプリケーションにアクセスできない状態を引き起こします。この種の攻撃は、正当なトラフィックと悪意のあるトラフィックを見分けるのが難しいことが多いため、検出が容易ではありません。

WebサーバーをDDoS攻撃から保護するには、一定時間内のリクエスト数、または同時リクエスト数が許容値を超えた場合に、IISサーバーがアプリケーションへのアクセスをブロックするよう設定することをお勧めします。

上記のように IIS で DDoS 対策を設定するには、次の手順に従います。

<Steps>
  <Step title="IIS Manager を起動する">
    IIS Manager を起動します。
  </Step>

  <Step title="IP Address and Domain Restrictions を開く">
    ツリービューで Web サイトを選択し、サイトのホームページで **IP Address and Domain Restrictions** アイコンをダブルクリックします。
  </Step>

  <Step title="動的制限設定を編集する">
    **操作** ペインで **Edit Dynamic Restriction Settings** をクリックします。
  </Step>

  <Step title="拒否方法を選択する">
    表示されたダイアログで、使用する方法を選択します: **Deny IP Address based on the number of concurrent requests** または **Deny IP Address based on the number of requests over a period of time**。
  </Step>

  <Step title="設定を保存する">
    **OK** をクリックします。
  </Step>
</Steps>

IIS サーバーの設定では、特定の IP アドレスからアプリケーションへのアクセスを制限したり、制限された IP アドレスからアプリケーションへのアクセスが試行されたときにサーバーが実行する操作の種類を指定したりすることもできます。

<Steps>
  <Step title="IIS Manager を起動する">
    IIS Manager を起動します。
  </Step>

  <Step title="IP Address and Domain Restrictions を開く">
    ツリービューで Web サイトを選択し、サイトのホームページで **IP Address and Domain Restrictions** アイコンをダブルクリックします。
  </Step>

  <Step title="動的制限設定を編集する">
    **操作** ペインで **Edit Dynamic Restriction Settings** をクリックします。
  </Step>

  <Step title="拒否アクションを選択する">
    表示されたダイアログで、**Deny Action Type** ドロップダウンリストから操作の種類を選択します。
  </Step>

  <Step title="設定を保存する">
    **OK** をクリックします。
  </Step>
</Steps>

複数のユーザーから 1 つの IP アドレス経由で複数の HTTP リクエストが送信される場合に備えて、IIS サーバーの設定でプロキシ モードを有効にします。これにより、プロキシサーバーが `x-forwarded-for` ヘッダーを Web サーバーに渡せるようになり、ユーザーの識別に役立ちます。

プロキシ モードを有効にするには、次の手順に従います。

<Steps>
  <Step title="IIS Manager を起動する">
    IIS Manager を起動します。
  </Step>

  <Step title="IP Address and Domain Restrictions を開く">
    ツリービューで Web サイトを選択し、サイトのホームページで **IP Address and Domain Restrictions** アイコンをダブルクリックします。
  </Step>

  <Step title="機能設定を編集する">
    **操作** ペインで **Edit Feature Settings** をクリックします。
  </Step>

  <Step title="プロキシ モードを有効にする">
    **Edit IP and Domain Restriction Settings** ダイアログで、**Enable Proxy Mode** を選択します。
  </Step>

  <Step title="設定を保存する">
    **OK** をクリックします。
  </Step>
</Steps>

IIS を使用して特定の IP アドレスからアプリケーションへのアクセスを制限する方法の詳細については、[Microsoft のドキュメント](https://docs.microsoft.com/en-us/iis/get-started/whats-new-in-iis-8/iis-80-dynamic-ip-address-restrictions)を参照してください。

<Note>
  大量のトラフィックを処理するためにプロキシ モードを使用すると、システム パフォーマンスに影響し、正規のユーザーがアプリケーションにアクセスしにくくなる可能性があります。
</Note>
