패스틀리(Fastly), Edge Rate Limiting을 설정해 보자
웹사이트를 운영하면서 가장 많이 경험할 수 있는 보안 위협중의 하나는 DDoS(Distributed Denial of Service) 공격입니다. DDoS공격이란 잘 아시다시피 공격자는 특정 서비스 제공자를 향해서 그들이 원치 않는 대량의 트래픽을 보내서 서비스를 마비시키는 공격수법 중의 하나 입니다. Fastly에서는 기본적으로 L3/L4 트래픽에 대해서는 필터링 하고 있습니다.
이번에 소개시켜드릴 Edge Rate Limiting의 경우는 Layer7 (Http/Https)공격에 대해서 방어해주는 기능입니다. Layer7의 일반적인 공격 방법 중의 하나는 특정 URL에 대해서 특정 혹은 다수의 IP로 대량의 요청을 보내는 방법이 있습니다. Edge Rate Limiting의 경우는 이와 같은 방식의 공격에 대해서 공격을 완화(Mitigation) 시킬 수 있는 기능입니다. Edge Rate Limiting기능의 경우 기본적으로 제공되는 기능이 아니기 때문에 해당 기능을 사용하기 위해서는 Fastly의 세큐리티 상품을 구매하셔야 합니다.
그럼 이번 시간에는 UI를 통해서 어떻게 간단하게 구현 할 수 있는지 살펴보도록 하겠습니다.
상기의 화면에 있는 각 메뉴에 대해서 알아 보겠습니다.
- Policy name: 설정할 Edge Rate Limiting을 구분하기 위해 naming 하는 부분입니다. 여러개의 Policy를 운영하는 경우도 있으니 알기 쉽게 구분할 수 있는 이름을 설정합니다.
- Service: Edge Rate Limiting을 설정할 Service를 선택합니다.
- Detect: 공격을 검지하기 위한 조건 및 임계치를 설정하는 부분입니다.
- Destination to protect
- Protect all traffic to origin: 요청되는 모든 URL이 검사의 대상이 됩니다.
- Protect paths specified in an Edge Dictionary: Edge Dictionary 안에 설정된 특정 path만을 검사의 대상으로 지정합니다.
- HTTP Methods: 검사 대상의 HTTP Methods를 선택해 줍니다.
- Requests per second: 아래 소개해 드릴 Detection window와 연동되는 임계치 입니다만, 초당 몇번의 요청을 제한 기준으로 삼을것 인지 정하는 메뉴입니다. 기본 1000으로 되어 있습니다만, Fastly에서 추천하는 최저 임계치는 100까지 입니다.
- Detection window: 위의 Requests per second와 연동되는 임계치로써 Requests per second(이하 RPS)가 몇 초 동안 지속될 경우 해당 리퀘스트를 차단할 것인가를 정하는 메뉴입니다. 기본적으로 1, 10, 60초를 선택할 수 있습니다.
- Client keys: DDoS공격자를 식별하는 기준을 정하는 메뉴입니다. IP, User-Agent, IP and User-Agent가 있습니다.
- Destination to protect
- Respond: DDoS공격자로 판단된 Client에게 응답되는 내용을 설정하는 부분입니다.
- If the limit is exceeded
- Block with custom response: 블록된 Client에게 Response에 설정된 내용을 응답합니다.
- Block with response object: 현재 사용중인 Service안에 설정해 놓은 response object를 사용하여 Client에게 응답합니다.
- Status: 블록된 Client에게 응답할 HTTP Response Code를 지정해 줍니다.
- MIME type: 응답되는 컨텐츠의 MIME Type을 지정해 줍니다.
- Response: 블록된 Client에게 표시될 Synthetic response를 설정합니다.
- Response duration: 블록된 Client에 대해서 몇 분동안 그 상태를 유지시킬 것인지에 대한 설정입니다. 분단위로 설정합니다.
예를들면 2로 설정할 경우 한번 블록된 Client는 2분 동안 그 상태가 유지되고 2분 후에 Reset됩니다.
- If the limit is exceeded
위와 같은 순서로 설정을 마치시고 적용을 해주면 임계치에 걸린 Client들은 오리진으로 접근하지 못하고, Fastly Edge서버쪽에서 블럭되게 됩니다. 해당 기능은 오리진을 보호해 주기 위한 기능으로 오리진으로 너무 많은 요청들이 한꺼번에 쏠려서 서비스가 되지 않는 현상을 완화하는 목적으로 사용 할 수 있습니다.
마치며
IT기술과 서비스가 발전하면서 그것을 노리는 위협도 점점 증가하고 있는 것이 현실입니다. DDoS공격을 완벽하게 막는 것은 어려울 수 있으나 Fastly의 Edge rate limiting 기능은 언제 발생할지 모르는 DDoS공격의 위협에 대비해서 쉽게 설정할 수 있고 그리고 공격을 완화해 줄 수 있는 솔루션이 될 것으로 기대 합니다. 다음 시간에는 UI가 아닌 VCL을 활용하여 Edge Rate Limit를 구현하는 방법에 대해서 알아 보도록 하겠습니다.
아래는 Fastly의 관련 Official document의 URL입니다. 관심 있으신 분들은 참고하시길 부탁드립니다. 감사합니다.
https://docs.fastly.com/en/guides/working-with-rate-limiting-policies
Working with rate limiting policies | Fastly Help Guides
The Fastly rate limiting web interface is designed to help you control the rate of requests sent to your origin servers. The feature allows you to count client requests and optionally penalize clients for exceeding rate limits you set. When you create a ra
docs.fastly.com
https://developer.fastly.com/learning/concepts/rate-limiting
Rate limiting | Fastly Developer Hub
Everything you need to build on Fastly
developer.fastly.com