BLOG

AWS WAF를 활용하여 IP주소 기반의 차단 정책 사용하기
작성일: 2016-09-08

AWS WAF는 글로벌 콘텐츠 전송 네트워크인 CloudFront와 연동되어, SQL 인젝션이나 크로스사이트 스크립팅 등 흔히 쓰이는 웹 기반 공격에서 웹 앱들을 보호하는 웹방화벽 서비스입니다.

 

AWS WAF를 사용하면 몇 분 안에 웹 애플리케이션 보호를 위한 설정을 할 수 있습니다.

현재 AWS WAF는 CloudFront과 연동하여 바로 사용할 수가 있습니다.

 

장점

AWS CloudFront와 통합하여 손쉬운 배포 및 유지보수

웹 공격에 대비하여 강화된 보안

저렴한 비용 및 간편한 세팅

 

주요기능

IP주소 방어

HTTP 헤더를 통한 방어

다양한 문자열 공격 방어

SQL Injection 방어

크로스사이트 스크립팅 방어

다양한 언어와 API 연동

AWS 계정당 WAF Web ACL 10개

AWS 계정장 Rule이 최대 50개

스트링 필터 10개

IP필터링 1000개

 

가격

Web ACL Rule당 $5

Rule 규칙 변경당 1개에 $1

1백만 HTTP 요청당 $0.60

 

관련 링크

제품 페이지 : https://aws.amazon.com/waf/

개발자 가이드 : http://docs.aws.amazon.com/waf/latest/developerguide/

AWS 한국 블로그 – AWS WAF 서비스 공개 : https://aws.amazon.com/ko/blogs/korea/new-aws-waf/

AWS re:Invent 2015 슬라이드쉐어 자료 : http://www.slideshare.net/AmazonWebServices/sec323-new-securing-web-applications-with-aws-waf

 

그럼 설정을 해보도록 하겠습니다.

여기서는 아래 그림의 아키텍처처럼, 사용자 → WAF+CloudFront → ELB → EC2(Web Server)로 구현을 해보겠습니다.

WAF에 차단 설정을 하면 CloudFront에서 차단이 되기 때문에 VPC 내부의 접근도 막히게 됩니다. 잘 활용하면 유용하겠죠?

aws

 

AWS Web Console로 로그인하여 WAF 서비스로 이동합니다.

001

 

WAF 생성하는 화면입니다. 총 5가지의 절차가 있습니다.

  1. ACL 네임 설정 : WAF-TEST
  2. 컨디션 설정 : 처음 생성시에는 생성하지 않고 넘어가도록 하겠습니다.
  3. 룰 설정 : 여기도 설정은 하지 않으며, 기본 액션은 모두 허용으로 설정하도록 합니다.
  4. AWS 리소스 선택 : 미리 생성한 CloudFront의 ID를 선택합니다.
  5. 리뷰 : 설정된 내역을 확인하고 생성을 완료합니다.

002

 

ACL 네임 설정 : WAF-TEST

003

 

컨디션 설정 : 처음 생성시에는 생성하지 않고 넘어가도록 하겠습니다.

004

 

룰 설정 : 여기도 설정은 하지 않으며, 기본 액션은 모두 허용으로 설정하도록 합니다.

005

 

 

 

AWS 리소스 선택 : 미리 생성한 CloudFront의 ID를 선택합니다.

006

 

리뷰 : 설정된 내역을 확인하고 생성을 완료합니다.

007

 

WAF 생성 후 화면입니다. 생성만되있으며 아무런 설정은 되어 있지 않습니다.

008

 

IP Addresses 탭메뉴로 이동합니다. Create condition을 눌러 설정 메뉴로 들어갑니다.

 

009

 

설정 전에 웹페이지를 테스트로 접속해 보았습니다. 테스트는 개인 휴대폰으로 해봤습니다. 현재는 잘 접속이 됩니다.

p1

 

IP매칭을 위한 휴대폰의 공인IP를 확인해 봅니다.

p2

 

IP 등록화면에서 해당 IP주소를 입력합니다.

010

 

등록이 된 화면입니다.

011

 

IP등록은 마쳤으니 룰 설정으로 이동합니다. 현재는 아무런 룰이 없습니다.

012

 

룰 생성을 시작합니다. 아래와 같이 룰 네임을 설정 후 등록한 IP리스트를 선택하고 생성합니다.

013

 

자, 룰 생성이 끝났습니다. 이제 한단계가 더 남았습니다.

014

 

생성한 ACL에 해당 룰을 적용해야 합니다. 현재는 아무런 룰을 적용하지 않았습니다.

015

 

룰 적용화면입니다. 아까 만든 룰을 추가하고 액션은 Block을 선택합니다.

016

 

업데이트가 얼마나 걸릴까요? WAF는 CloudFront와 달리 업데이트 설정을 1~2분이면 완료됩니다.

휴대폰으로 차단이 되었는지 다시 접속해 봅니다.

ERROR라고 써있는 표시가 보입니다. IP기반의 차단이 완료되었습니다.

p3

 

 

AWS WAF를 이용하여 IP기반의 차단 정책을 설정해 보았습니다.

절차를 요약하자면,

ACL생성 및 CloudFront에 적용IP Condition에서 IP 주소 등록Rules에서 차단 정책 룰 설정ACL에서 설정한 룰을 선택하여 Block 적용입니다.

 

AWS WAF를 사용하여 여러 차단 정책을 설정한다면 보안도 강화할 수 있고 불필요한 네트워크 트래픽이 감소하여 비용도 절약해 볼 수 있겠습니다.

감사합니다.