

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Classic Load Balancer에 대한 동기화 해제 완화 모드 구성
<a name="config-desync-mitigation-mode"></a>

Desync Mitigation Mode는 HTTP Desync로 인한 문제로부터 애플리케이션을 보호합니다. 로드 밸런서는 위협 수준에 따라 각 요청을 분류하고 안전한 요청을 허용한 다음 지정한 완화 모드에서 지정한 대로 위험을 완화합니다. Desync Mitigation Mode는 Monitor, Defensive 또는 Strictest 모드입니다. 기본값은 Defensive 모드입니다. 이 모드는 애플리케이션의 가용성을 유지하면서 HTTP Desync에 대한 지속적인 완화를 제공합니다. 애플리케이션에서 RFC 7230을 준수하는 요청만 수신하도록 Strictest 모드로 전환할 수 있습니다.

http\$1desync\$1guardian 라이브러리는 HTTP Desync 공격을 방지하기 위해 HTTP 요청을 분석합니다. 자세한 내용은 github의 [HTTP Desync Guardian](https://github.com/aws/http-desync-guardian)을 참조하십시오.

**Topics**
+ [분류](#desync-mitigation-classification)
+ [Modes](#desync-mitigation-modes)
+ [Desync Mitigation Mode 수정](#update-desync-mitigation-mode)

**작은 정보**  
이 구성은 Classic Load Balancer에만 적용됩니다. Application Load Balancer에 적용되는 자세한 내용은 [Application Load Balancers에 대한 동기화 해제 완화 모드](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#desync-mitigation-mode)를 참조하세요.

## 분류
<a name="desync-mitigation-classification"></a>

분류는 다음과 같습니다.
+ 규정 준수 - 요청이 RFC 7230을 준수하며 알려진 보안 위협이 없습니다.
+ 허용 가능 - 요청이 RFC 7230을 준수하지 않지만 알려진 보안 위협이 없습니다.
+ 모호 - 요청이 RFC 7230을 준수하지 않지만 다양한 웹 서버와 프록시가 다르게 처리할 수 있으므로 위험을 초래합니다.
+ 심각 - 요청이 높은 보안 위험을 초래합니다. 로드 밸런서는 요청을 차단하고 클라이언트에 대해 400 응답을 제공하고 클라이언트 연결을 종료합니다.

다음 목록에서는 각 분류에 대한 문제를 설명합니다.

**허용 가능**
+ 헤더에 비 ASCII 또는 제어 문자가 포함되어 있습니다.
+ 요청 버전에 잘못된 값이 포함되어 있습니다.
+ GET 또는 HEAD 요청에 대한 값이 0인 Content-Length 헤더가 있습니다.
+ 요청 URI에 URL이 인코딩되지 않은 공백이 포함되어 있습니다.

**모호**
+ 요청 URI에 제어 문자가 포함되어 있습니다.
+ 요청에 Transfer-Encoding 헤더와 Content-Length 헤더가 모두 포함되어 있습니다.
+ 값이 동일한 Content-Length 헤더가 여러 개 있습니다.
+ 헤더가 비어 있거나 공백만 있는 줄이 있습니다.
+ 일반적인 텍스트 정규화 기술을 사용하여 Transfer-Encoding 또는 Content-Length로 정규화할 수 있는 헤더가 있습니다.
+ GET 또는 HEAD 요청에 대한 Content-Length 헤더가 있습니다.
+ GET 또는 HEAD 요청에 대한 Transfer-Encoding 헤더가 있습니다.

**심각**
+ 요청 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) 단원을 참조하십시오.

## Modes
<a name="desync-mitigation-modes"></a>

다음 표에서는 Classic Load Balancer가 모드 및 분류를 기준으로 요청을 처리하는 방법에 대해 설명합니다.


| Classification | Monitor 모드 | Defensive 모드 | Strictest 모드 | 
| --- | --- | --- | --- | 
| 규정 준수 | Allowed | 허용됨 | Allowed | 
| 허용 가능 | Allowed | Allowed | 차단됨 | 
| 모호 | Allowed | 허용¹ | 차단됨 | 
| 심각 | Allowed | 차단됨 | 차단됨 | 

¹ 요청을 라우팅하지만 클라이언트 연결과 대상 연결을 종료합니다.

## Desync Mitigation Mode 수정
<a name="update-desync-mitigation-mode"></a>

**콘솔을 사용하여 Desync Mitigation Mode를 업데이트하려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창의 **Load Balancing** 아래에서 **로드 밸런서**를 선택합니다.

1. 로드 밸런서 이름을 선택하여 세부 정보 페이지를 엽니다.

1. **속성** 탭에서 **편집**을 선택합니다.

1. **로드 밸런서 속성 편집** 페이지의 **트래픽 구성**에서 **방어적 - 권장**,**가장 엄격함** 또는 **모니터링**을 선택합니다.

1. **변경 사항 저장**을 선택합니다.

**를 사용하여 비동기화 완화 모드를 업데이트하려면 AWS CLI**  
`elb.http.desyncmitigationmode` 속성을 `monitor`, `defensive` 또는 `strictest`로 설정하여 [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elb/modify-load-balancer-attributes.html) 명령을 사용하세요.

```
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"
        }
    ]
}
```