

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Classic Load Balancer の desync 軽減モードの設定
<a name="config-desync-mitigation-mode"></a>

desync 軽減モードは、HTTP Desync に伴う問題からアプリケーションを保護します。ロードバランサーは、脅威レベルに基づいて各リクエストを分類します。安全なリクエストは許可し、指定した軽減モードで指定されたリスクに対しては軽減処理を行います。Desync 軽減モードの種類は、モニタリングモード、防御モード、厳密モードです。デフォルトは防御モードで、アプリケーションの可用性を維持しながら、HTTP Desync に対する永続的な軽減を提供します。厳密モードに切り替えると、アプリケーションで [RFC 7230](https://tools.ietf.org/html/rfc7230) に準拠するリクエストだけを受信できます。

http\$1desync\$1guardian ライブラリは、HTTP リクエストを分析して、HTTP Desync 攻撃を防ぎます。詳細については、github の [HTTP Desync Guardian](https://github.com/aws/http-desync-guardian) を参照してください。

**Topics**
+ [分類](#desync-mitigation-classification)
+ [モード](#desync-mitigation-modes)
+ [desync 軽減モードの変更](#update-desync-mitigation-mode)

**ヒント**  
この設定は、Classic Load Balancers にのみ適用されます。Application Load Balancer に関する情報については、「[Application Load Balancers の Desync 軽減モード](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#desync-mitigation-mode)」を参照してください。

## 分類
<a name="desync-mitigation-classification"></a>

分類は次のとおりです。
+ Compliant — リクエストは RFC 7230 に準拠しており、セキュリティ上の既知の脅威はありません。
+ Acceptable — リクエストは RFC 7230 に準拠していませんが、セキュリティ上の既知の脅威はありません。
+ Ambiguous — リクエストは RFC 7230 に準拠しておらず、ウェブサーバーやプロキシごとに処理方法が異なる場合、リスクが生じます。
+ Severe — リクエストは高いセキュリティリスクをもたらしています。ロードバランサーはリクエストをブロックし、クライアントに 400 レスポンスを提供し、クライアント接続を閉じます。

次のリストでは、分類別の問題について説明します。

**Acceptable**
+ ヘッダーに ASCII 以外の文字または制御文字が含まれています。
+ リクエストバージョンに不正な値が含まれています。
+ GET または HEAD リクエストの値を 0 とする Content-Length ヘッダーがあります。
+ リクエスト URI に URL エンコードされていないスペースが含まれています。

**Ambiguous**
+ リクエスト URI に制御文字が含まれています。
+ リクエストに Transfer-Encoding ヘッダーと Content-Length ヘッダーの両方が含まれています。
+ 同じ値を持つ複数の Content-Length ヘッダーがあります。
+ ヘッダーが空であるか、スペースのみを含む行があります。
+ 一般的なテキスト正規化技術を使用して、Transfer-Encoding または Content-Length に正規化できるヘッダーがあります。
+ GET または HEAD リクエストには Content-Length ヘッダーがあります。
+ GET または HEAD リクエストには、Transfer-Encoding ヘッダーがあります。

**Severe**
+ リクエスト URI に NULL 文字またはキャリッジリターンが含まれています。
+ Content-Length ヘッダーに解析できない値または無効な数値が含まれています。
+ ヘッダーに NULL 文字またはキャリッジリターンが含まれています。
+ Transfer-Encoding ヘッダーに不正な値が含まれています。
+ リクエストメソッドの形式が正しくありません。
+ リクエストバージョンの形式が正しくありません。
+ 異なる値を持つ複数の Content-Length ヘッダーがあります。
+ 複数の Transfer-Encoding: chunked ヘッダーがあります。

リクエストが RFC 7230 に準拠していない場合、ロードバランサーは `DesyncMitigationMode_NonCompliant_Request_Count` メトリクスを増分します。詳細については、「[Classic Load Balancer のメトリクス](elb-cloudwatch-metrics.md#loadbalancing-metrics-clb)」を参照してください。

## モード
<a name="desync-mitigation-modes"></a>

次の表は、Classic Load Balancers で、リクエストがモードと分類に基づきどのように処理されるかを示しています。


| 分類 | モニタリングモード | 防御モード | 厳密モード | 
| --- | --- | --- | --- | 
| 準拠 | 許可 | 許可 | 許可 | 
| Acceptable | 許可 | 許可 | ブロック | 
| Ambiguous | 許可 | 許可¹ | ブロック | 
| Severe | 許可 | ブロック | ブロック | 

¹ リクエストはルーティングされますが、クライアントとターゲットの接続は閉じられます。

## desync 軽減モードの変更
<a name="update-desync-mitigation-mode"></a>

**コンソールを使用して desync 軽減モードを更新するには**

1. Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. ナビゲーションペインの [**ロードバランシング**] で [**ロードバランサー**] を選択します。

1. ロードバランサーの名前を選択して、その詳細ページを開きます。

1. **[属性]** タブで、**[編集]** を選択します。

1. **[ロードバランサー属性の編集]** ページの **[トラフィックの設定]** で、**[防御的 - 推奨]**、**[最も厳格]**、または **[モニタリング]** を選択します。

1. **[Save changes]** (変更の保存) をクリックします。

**を使用して非同期緩和モードを更新するには AWS CLI**  
[modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elb/modify-load-balancer-attributes.html) コマンドを、`elb.http.desyncmitigationmode` 属性に `monitor`、`defensive`、`strictest` のいずれかを設定しながら使用します。

```
aws elb modify-load-balancer-attributes --load-balancer-name my-load-balancer --load-balancer-attributes file://attribute.json
```

`attribute.json` の内容は次のとおりです。

```
{
    "AdditionalAttributes": [
        {
            "Key": "elb.http.desyncmitigationmode",
            "Value": "strictest"
        }
    ]
}
```