본문 바로가기
[AWS]

[AWS] WAF란? - WAF 설정

by Hevton 2022. 7. 10.
반응형

 

 

 

IDS - IPS 를 들어보신 적이 있나요?

침입 탐지 시스템이라고 부르며, 우리가 흔히 알고 있는 알약이나 V3에서도 이러한 기법을 사용할 수 있습니다.

 

SNORT라는 오픈 소스 프로그램이 있는데, Rule을 기반으로 침입 탐지를 하는 시스템입니다.

 

사용자가 미리, '파일명이 exe로 끝나고, 연락처 열람 권한을 갖고, 어디론가 전송하는 프로그램' 이라는 Rule을 작성하여 등록해 놓으면, 이러한 파일이 다운로드 되었을 시 침입이라고 생각하고 탐지할 수 있는 것이죠.

 

WAF도 이러한 기능을 한다고 보면 됩니다.

 


AWS는 기본적으로 모든 사용자들에게 AWS Shield Standard를 제공함으로써

SYN FLOOD 같은 DDOS 공격을 기본적으로 막아줍니다.

 

하지만 사용자 정의 패턴은 작성할 수가 없으며, 내 서비스의 특정 페이지를 1분안에 특정 횟수 이상만큼 열람한다 해도 이것이 공격인지 반응하기 어렵습니다. 이러한 공격은 AWS 이용자들이 걱정하는 과금과도 가장 연관이 깊은 항목입니다.

 

 

AWS WAF를 지금부터 이용해봅시다.

 

요금은 다음과 같습니다. 기본적으로 하나의 룰을 적용한다고 했을 때 5달러 + 1달러 = 6달러에

요청 수에 따라 추가적으로 과금이 발생한다고 보면 됩니다.

 

AWS WAF 페이지로 이동하여 Create web ACL을 눌러줍니다.

 

 

저는 반복적인 요청을 공격이라고 가정할 것이기에, 차단해 줄 계획입니다. 이름은 다음과 같이 작성해 주었고

사진에서는 보이지 않지만, 아래에 Add resource버튼을 통해서 적용해줄 서비스와 연동해줍니다.

 

 

룰은 AWS에서 기본으로 제공해주는 템플릿을 그대로 이용해도 되고, 직접 만들어 줄 수도 있습니다.

쉽게 버튼을 눌러가며 코드를 작성하지 않고 만들어 줄 수도 있으며, JSON을 기반으로 만들어 줄 수도 있습니다.

 

 

반복적인 Request에 대한 측정 기준은 default 5분이며, 5분 안에 1000번 요청 시 block 하는 룰을 적용했습니다.

{
  "Name": "MAX_REQUEST_1000",
  "Priority": 0,
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "MAX_REQUEST_1000"
  },
  "Statement": {
    "RateBasedStatement": {
      "Limit": "1000",
      "AggregateKeyType": "IP"
    }
  }
}

 

 

작성 관련하여 좋은 설명이 아래 블로그에 기록되어 있으니, 참고하시면 좋을 것 같습니다.

https://velog.io/@woodonggyu/Getting-started-with-AWS-WAF

 

 

 

이후 옵션들은 디폴트로 두고 성공적으로 룰을 정상적으로 생성하였다면, Web ACL 탭으로 이동할 시 모니터링을 할 수 있습니다.

요청이 들어올 때 마다 아래 기록에 남게 됩니다.

 

 

AWS 공식 사이트에도 안내되어 있으니 참고하시면 좋을 것 같습니다

https://docs.aws.amazon.com/ko_kr/appsync/latest/devguide/WAF-Integration.html

반응형